├── LICENSE.txt ├── README.md ├── css ├── bootstrap-4.5.2.min.css ├── main.css └── offcanvas.css ├── database_files └── healthcare_records.db ├── exports ├── exported_healthcare_records.zip ├── icd9_mapping.json ├── patient_diagnosis.json ├── patient_info.json └── query.sql ├── img ├── CORS_error.png ├── basic_demo.gif ├── buy_me_a_taco.png ├── cover_image.png ├── encode_base64.gif ├── favicon-120.png ├── favicon-152.png ├── favicon-16x16.ico ├── favicon-196.png ├── favicon-32x32.ico ├── favicon-48x48.ico ├── favicon-76.png ├── icon.png ├── import_db.gif ├── logo.png ├── logo_white.png ├── site-logo.png ├── updated_layout(laptops_n_desktops).png ├── updated_layout(mobile).jpg ├── updated_layout(mobile-sidebar).jpg └── wasm_to_blob.png ├── index.html └── js ├── bootstrap-native-v4.js ├── custom.js ├── ie10-viewport-bug-workaround.js ├── polyfill.js ├── sql-asm-memory-growth.min.js ├── sql-asm.min.js ├── sql-browser.min.js ├── sql-wasm.min.js ├── sql-wasm.wasm └── sql_wasm_dataURL.js /LICENSE.txt: -------------------------------------------------------------------------------- 1 | MIT license 2 | =========== 3 | 4 | Copyright (c) 2017 sql.js authors (see AUTHORS) 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | 24 | 25 | 26 | # Some portions of the Makefile taken from: 27 | Copyright 2017 Ryusei Yamaguchi 28 | 29 | Permission is hereby granted, free of charge, to any person obtaining a copy of 30 | this software and associated documentation files (the "Software"), to deal in 31 | the Software without restriction, including without limitation the rights to 32 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 33 | the Software, and to permit persons to whom the Software is furnished to do so, 34 | subject to the following conditions: 35 | 36 | The above copyright notice and this permission notice shall be included in all 37 | copies or substantial portions of the Software. 38 | 39 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 40 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 41 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 42 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 43 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 44 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
C
to JavaScript
compiler by kripken (emscripten).**
9 |
10 | As of October 2023, UI has been changed to:
39 | 40 | #### Preview (1) On laptops and desktops 41 | 42 |With sidebar | 50 |Without sidebar | 51 |
---|---|
![]() |
56 | ![]() |
57 |
— Join me on 📝 Medium at ~ ξ(🎀˶❛◡❛) @geek-cc
73 | 74 | --- 75 | 76 | #### 🌮 Please buy me a Taco! 😋 -------------------------------------------------------------------------------- /css/main.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | padding:0; 4 | margin:0; 5 | overflow:hidden; 6 | } 7 | body { 8 | width:100vw; 9 | height:100vh; 10 | padding: 0; 11 | font-family: system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Arial,sans-serif; 12 | font-size: 1rem; 13 | overflow-y:auto; 14 | } 15 | /*summary { 16 | display: list-item; 17 | cursor: pointer; 18 | list-style: none; 19 | margin-left: 15px; 20 | padding-left: 5px; 21 | } 22 | 23 | details[open] > summary:first-of-type { 24 | list-style-type: disclosure-open; 25 | list-style: none; 26 | margin-left: 15px; 27 | padding-left: 5px; 28 | margin-bottom: 0.325rem; 29 | }*/ 30 | body { 31 | overflow-y: auto; 32 | margin:0; 33 | padding:0; 34 | color: #54667a; 35 | background: #f2f7f8; 36 | position: relative; 37 | } 38 | #main-wrapper { 39 | margin-top: calc(0.3125rem + 35px + 1rem); 40 | height: calc(100% - 0.3125rem - 35px - 1rem - 1px); 41 | } 42 | #upload { 43 | display:none; 44 | } 45 | div#tableRecords.table-responsive { 46 | height:calc(100vh - 170px - .5rem); 47 | overflow-y:scroll; 48 | } 49 | 50 | div#tableQueryRecords.table-responsive { 51 | /*height: calc(100% - 0.3125rem - 0.3125rem - 35px - 1px - 2.5em - 28vh);*/ 52 | width: calc(100% - 8px); 53 | overflow-y: scroll; 54 | } 55 | 56 | div#tableQueryRecords.table-responsive table { 57 | min-width: 100%; 58 | height: calc(100% - 8px); 59 | } 60 | 61 | #infoPanel { 62 | overflow-y:auto; 63 | } 64 | 65 | .datatable.btn-link { 66 | width:100%; 67 | text-align: left; 68 | font-weight: 400; 69 | color: rgb(8 152 138); 70 | text-decoration: none; 71 | border: 0.5px solid rgba(28,205,188); 72 | } 73 | .datatable.btn-link:hover, 74 | .page-link:hover { 75 | color: #07695f; 76 | text-decoration: none; 77 | background-color: rgba(28,205,188,0.1); 78 | } 79 | .page-link.focus, 80 | .page-link:focus, 81 | .datatable.btn-link.focus, 82 | .datatable.btn-link:focus { 83 | box-shadow: 0 0 0 0.2rem rgba(8, 152, 138, .25); 84 | text-decoration: none; 85 | } 86 | 87 | a.datatable.btn-link { 88 | text-wrap: nowrap; 89 | overflow-x: hidden; 90 | text-overflow: ellipsis; 91 | } 92 | 93 | #currentQueryPageNo.form-control:focus { 94 | color: #495057; 95 | background-color: #fff; 96 | border-color: rgba(8, 152, 138); 97 | outline: 0; 98 | box-shadow: 0 0 0 0.2rem rgba(8, 152, 138, .25); 99 | } 100 | 101 | .table td, 102 | .table th { 103 | padding: 0.25rem; 104 | border-top: 1px solid #dee2e6; 105 | } 106 | hr { 107 | margin-top: 0.5rem; 108 | margin-bottom: 0.5rem; 109 | } 110 | hr.invisible-divider { 111 | border-top: 1px solid transparent; 112 | } 113 | a.page-link, 114 | a.dropdown-item { 115 | cursor:pointer; 116 | display: inline-flex; 117 | } 118 | #currentPageNo, #currentQueryPageNo { 119 | height: calc(31px - 0.5rem - 2px); 120 | width: calc(50px - 1rem); 121 | } 122 | .dropdown-item:focus, 123 | .dropdown-item:hover { 124 | background-color: #f0f5fb; 125 | } 126 | .page-item.disabled .page-link, 127 | .page-link { 128 | border-color:transparent; 129 | } 130 | 131 | #tableQueryDetails, 132 | #tableDetails { 133 | padding: 0.2rem 0; 134 | } 135 | 136 | #codeEditor, #lineCounter { 137 | margin: 0; 138 | padding: 10px 0; 139 | /*height: 28vh;*/ 140 | border-radius: 0; 141 | resize: none; 142 | font-size: 13.333333333px; 143 | font-family: "Courier New", Courier, monospace; 144 | tab-size: 2; 145 | -webkit-hyphens: none; 146 | -moz-hyphens: none; 147 | -ms-hyphens: none; 148 | hyphens: none; 149 | line-height: 1.45; 150 | outline: none; 151 | border-width: 0; 152 | -moz-box-sizing: border-box; 153 | -webkit-box-sizing: border-box; 154 | box-sizing: border-box; 155 | } 156 | /*#codeEditor { 157 | padding-left: calc(50px + 5px); 158 | width: calc(100% - 8px); 159 | background-color: #fefefd; 160 | border: 1px solid rgba(28,205,188); 161 | color: rgba(8,152,138); 162 | white-space: pre-wrap; 163 | }*/ 164 | #codeEditor { 165 | padding-left: calc(50px + 5px); 166 | width: calc(100% - 8px); 167 | background-color: #fefefd; 168 | border: 1px solid rgba(28,205,188); 169 | color: rgba(8,152,138); 170 | white-space: break-spaces; 171 | word-break: break-word; 172 | overflow-wrap: break-word; 173 | overflow-x: visible; 174 | overflow-y: auto; 175 | } 176 | #lineCounter { 177 | display: flex; 178 | overflow-y: hidden; 179 | text-align: right; 180 | box-shadow: none; 181 | color: #707070; 182 | background-color: #d8d8d8; 183 | position: absolute; 184 | width: 50px; 185 | background-color: rgba(28,205,188,.25); 186 | color: rgba(8,152,138); 187 | } 188 | #lineCounter:focus-visible, 189 | #codeEditor:focus-visible { 190 | outline:none; 191 | } 192 | 193 | #errorDisplay { 194 | height:1.0rem; 195 | } 196 | #tablePagination, 197 | #errorDisplay { 198 | font-family: Segoe ui emoji; 199 | } 200 | #tableQueryPagination { 201 | display: inline-flex; 202 | font-family: Segoe ui symbol; 203 | } 204 | .unicode { 205 | font-family: Cambria; 206 | } 207 | .emoji { 208 | font-family: Segoe ui emoji; 209 | } 210 | .symbol { 211 | font-family: Segoe ui symbol; 212 | } 213 | 214 | #site-logo { 215 | height: calc(35px); 216 | } 217 | li.nav-item { 218 | display: inline; 219 | } 220 | .bg-none { 221 | background:transparent!important; 222 | } 223 | nav.fixed-top { 224 | transition: all 250ms; 225 | z-index: 10; 226 | box-shadow: rgba(0, 0, 0, 0.05) 0px 6px 24px 0px, rgba(0, 0, 0, 0.08) 0px 0px 0px 1px; 227 | background-color: rgba(28, 205, 188, .1); 228 | } 229 | #top-header { 230 | padding: 0.25rem 0.5rem; 231 | color: rgba(28,205,188); 232 | box-shadow: rgba(0, 0, 0, 0.05) 0px 6px 24px 0px, rgba(0, 0, 0, 0.08) 0px 0px 0px 1px; 233 | } 234 | .nowrap { 235 | white-space:nowrap; 236 | } 237 | .ps-active-y { 238 | overflow-y:auto; 239 | } 240 | #main-wrapper { 241 | overflow: hidden; 242 | } 243 | #main-wrapper .page-wrapper { 244 | margin-left: 240px; 245 | height: calc(100% - 0.3125rem - 0.3125rem - 35px + 2.5rem - 1px); 246 | display: block; 247 | } 248 | .page-wrapper { 249 | position: relative; 250 | background: #f2f7f8; 251 | display: none; 252 | transition: .2s ease-in; 253 | } 254 | #main-wrapper .page-wrapper >.container-fluid { 255 | min-width: calc(100vw - 240px - 5.5em); 256 | height: calc(100% - 0.3125rem - 0.3125rem + 0.5rem + 170px); 257 | margin: auto; 258 | position: relative; 259 | } 260 | #toggleSidebarBtn { 261 | position: fixed; 262 | box-shadow: rgba(17, 17, 26, 0.1) 0px 0px 16px; 263 | height: 29px; 264 | width: 29px; 265 | z-index: 20; 266 | margin: 2px; 267 | } 268 | .showTblCol:hover { 269 | cursor:pointer; 270 | opacity: 0.8; 271 | } 272 | #datatable table.table { 273 | display: flow-root; 274 | table-layout: fixed; 275 | margin-bottom: 0; 276 | } 277 | #datatable { 278 | height: calc(100vh - 5.375rem - 40px); 279 | overflow-y:auto; 280 | } 281 | aside.left-sidebar { 282 | position: fixed; 283 | width: 240px; 284 | height: calc(100% - 0.3125rem - 0.3125rem - 35px - 1rem - 1px); 285 | top: calc(0.3125rem + 35px + 1rem); 286 | z-index: 4; 287 | background: #fff; 288 | box-shadow: 1px 0 20px rgba(0,0,0,.08); 289 | transition: .2s ease-in; 290 | } 291 | 292 | .ps-container { 293 | -ms-touch-action: auto; 294 | touch-action: auto; 295 | -ms-overflow-style: none; 296 | } 297 | .scroll-sidebar { 298 | padding-bottom: 2.35rem; 299 | height: calc(100vh - 40px); 300 | position: relative; 301 | } 302 | .custom-scrollbar::-webkit-scrollbar { 303 | width: 8px; 304 | height: 8px; 305 | } 306 | 307 | .custom-scrollbar::-webkit-scrollbar-track { 308 | border-radius: 12px; 309 | background-color: #cccccc; 310 | } 311 | 312 | .custom-scrollbar::-webkit-scrollbar-thumb { 313 | background: rgba(8,152,138); 314 | border-radius: 12px; 315 | } 316 | 317 | /* 318 | .custom-scrollbar::-webkit-scrollbar-track { 319 | -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.6); 320 | background-color: #CCCCCC; 321 | } 322 | 323 | .custom-scrollbar::-webkit-scrollbar { 324 | width: 8px; 325 | } 326 | 327 | .custom-scrollbar::-webkit-scrollbar-thumb { 328 | background-color: #FFF; 329 | background-image: -webkit-linear-gradient(90deg, 330 | rgba(0, 0, 0, 1) 0%, 331 | rgba(0, 0, 0, 1) 25%, 332 | transparent 100%, 333 | rgba(0, 0, 0, 1) 75%, 334 | transparent) 335 | }*/ 336 | 337 | span.icon-symbol { 338 | font-size:1.1rem; 339 | } 340 | 341 | .page-item.active .page-link { 342 | z-index: 3; 343 | color: #fff; 344 | background-color: #343a40; 345 | border-color: #343a40; 346 | } 347 | 348 | .page-link { 349 | position: relative; 350 | display: block; 351 | padding: 0.5rem 0.75rem; 352 | margin-left: -1px; 353 | line-height: 1.25; 354 | color: #343a40; 355 | background-color: rgba(0,0,0,.05); 356 | border: 1px solid #dee2e6; 357 | } 358 | 359 | .switch { 360 | position: relative; 361 | display: inline-block; 362 | width: 26px; 363 | height: .925rem; 364 | margin-top: 0.5rem; 365 | margin-bottom: 0; 366 | } 367 | 368 | .switch input { 369 | opacity: 0; 370 | width: 0; 371 | height: 0; 372 | } 373 | 374 | .slider { 375 | position: absolute; 376 | cursor: pointer; 377 | top: 0; 378 | left: 0; 379 | right: 0; 380 | bottom: 0; 381 | background-color: rgba(0,0,0,.05); 382 | -webkit-transition: .4s; 383 | transition: .4s; 384 | } 385 | 386 | .slider:before { 387 | position: absolute; 388 | content: ""; 389 | height: 11px; 390 | width: 11px; 391 | left: 2px; 392 | bottom: 2px; 393 | background-color: white; 394 | -webkit-transition: .4s; 395 | transition: .4s; 396 | } 397 | 398 | input:checked + .slider { 399 | background-color: #343a40; 400 | } 401 | 402 | input:focus + .slider { 403 | box-shadow: 0 0 1px #343a40; 404 | } 405 | 406 | input:checked + .slider:before { 407 | -webkit-transform: translateX(11px); 408 | -ms-transform: translateX(11px); 409 | transform: translateX(11px); 410 | } 411 | 412 | /* Rounded sliders */ 413 | .slider.round { 414 | border-radius: 17px; 415 | } 416 | 417 | .slider.round:before { 418 | border-radius: 50%; 419 | } 420 | 421 | span.toggle-switch-caption { 422 | display: inline-table; 423 | font-size: .925rem; 424 | font-variant: proportional-width; 425 | vertical-align: top; 426 | margin-top: 0.25rem; 427 | width: calc(100% - 1.45rem); 428 | white-space: break-spaces; 429 | } 430 | 431 | #page-footer { 432 | position: fixed; 433 | z-index: 8000; 434 | left: 0; 435 | right: 0; 436 | top: 0; 437 | width: 100%; 438 | background: #dee2e6; 439 | } 440 | 441 | #tablePaginationWrapper { 442 | overflow-x:auto; 443 | } 444 | 445 | #currentPageNo { 446 | font-size:small; 447 | } 448 | 449 | #tablePagination div.row.no-gutters.page-link.page-link { 450 | display: inline-flex; 451 | } 452 | 453 | button.deleteRow, 454 | button.saveRow { 455 | height: 31px; 456 | width: 31px; 457 | } 458 | button.deleteRow { 459 | padding-left: 0.45em; 460 | } 461 | 462 | .no-touch { 463 | pointer-events:none; 464 | } 465 | .unselectable { 466 | -moz-user-select: none; 467 | -webkit-user-select: none; 468 | -ms-user-select: none; 469 | } 470 | /* 471 | details > summary { 472 | &::marker { 473 | content: '⯈'; 474 | } 475 | } 476 | details[open] > summary { 477 | &::marker { 478 | content: '⯆'; 479 | } 480 | } 481 | */ 482 | .w-20 { 483 | width:20%!important; 484 | } 485 | 486 | .w-35 { 487 | width:35%!important; 488 | } 489 | 490 | #filters { 491 | overflow-x: auto; 492 | width: calc(100% - 8px); 493 | margin-bottom:8px; 494 | } 495 | 496 | #databaseTables.scroll-sidebar { 497 | height:calc(100% - .3125rem - .3125rem - 20px); 498 | } 499 | 500 | .smallCaption { 501 | font: small-caption; 502 | /*color:rgba(28,205,188);*/ 503 | font-size: xx-small; 504 | } 505 | 506 | .copyrightNote { 507 | font-stretch: ultra-condensed; 508 | font-family: emoji; 509 | } 510 | 511 | .table-striped tbody tr:nth-of-type(odd) { 512 | /*background-color: #F0F9FE;#1CCDBC*/ 513 | background-color: rgba(28,205,188,.05); 514 | } 515 | 516 | 517 | .btn-outline-primary { 518 | color: #007bff; 519 | border-color: #007bff; 520 | } 521 | 522 | .btn-outline-custom-one { 523 | color: rgba(8,152,138); 524 | border-color: rgba(8,152,138); 525 | } 526 | .btn-outline-custom-one:hover { 527 | color: #fff; 528 | background-color: rgba(8,152,138); 529 | border-color: rgba(8,152,138); 530 | } 531 | .btn-outline-custom-two { 532 | color: rgba(28, 205, 188); 533 | border-color: rgba(28, 205, 188); 534 | } 535 | .btn-outline-custom-two:hover { 536 | color: #fff; 537 | background-color: rgba(28, 205, 188); 538 | border-color: rgba(28, 205, 188); 539 | } 540 | 541 | 542 | /*Darker Green*/ 543 | .text-custom-one { 544 | color:#08988a !important; 545 | } 546 | .bg-custom-one { 547 | background-color: rgba(8,152,138) !important; 548 | } 549 | .bg-custom-one-25 { 550 | background-color: rgba(8,152,138,.25) !important; 551 | } 552 | .border-custom-one { 553 | border-color: rgba(8,152,138) !important; 554 | } 555 | 556 | #dropFileZone { 557 | height: calc(100% - 0.3125rem - 0.3125rem - 35px - 1rem - 1px - 1rem); 558 | top: calc(0.3125rem + 35px + 1rem); 559 | } 560 | #dropFileZone .card-body { 561 | border-width: 3px; 562 | border-style: dashed; 563 | } 564 | /*#dropFileZone > div.card-body.rounded-0.p-4.border-custom-one.text-center > h4:nth-child(1) { 565 | padding-top:4.25rem; 566 | }*/ 567 | /*Lighter Green*/ 568 | .text-custom-two { 569 | color:#1ccdbc !important; 570 | } 571 | .bg-custom-two { 572 | background-color: rgba(28,205,188) !important; 573 | } 574 | .bg-custom-two-05 { 575 | background-color: rgba(28,205,188,.05) !important; 576 | } 577 | .border-custom-two { 578 | border-color: rgba(28,205,188) !important; 579 | } 580 | 581 | .page-link { 582 | color:#08988a; 583 | } 584 | .page-item.disabled .page-link, 585 | .page-link { 586 | background:transparent; 587 | } 588 | 589 | #upload-btn, #hint-btn, #runQueryBtn { 590 | display: inline-flex; 591 | } 592 | #runQueryBtn { 593 | font-size: calc(.8rem - 0.125rem); 594 | margin-bottom: 0.125rem; 595 | } 596 | 597 | button.navbar-toggler, 598 | button.navbar-toggler:focus-visible, 599 | button.navbar-toggler:focus { 600 | outline: none; 601 | border-width: 1.75px; 602 | } 603 | 604 | ul.nav.navbar-nav { 605 | display:inline; 606 | } 607 | 608 | .dropdown-menu .divider { 609 | height: 1px; 610 | margin: 1px 0; 611 | overflow: hidden; 612 | background-color: #e5e5e5; 613 | } 614 | 615 | .pagination-sm .page-link { 616 | padding: 0.125rem 0.5rem; 617 | font-size: .875rem; 618 | line-height: 1.5; 619 | } 620 | 621 | .attribution { 622 | background: rgba(28,205,188,.25); 623 | border: 1px solid rgba(28,205,188); 624 | color: rgb(8 152 138); 625 | position: fixed; 626 | right: 1px; 627 | bottom: 1px; 628 | font-size: x-small; 629 | } 630 | 631 | .attribution-icon { 632 | padding:7.5px; 633 | background-position: center; 634 | background-repeat:no-repeat; 635 | background-size: contain; 636 | } 637 | 638 | aside.left-sidebar span.symbol.d-inline-block { 639 | width: 2em; 640 | } 641 | .site-header-btn:hover:not(:disabled), 642 | .site-header-btn:active:not(:disabled), 643 | .site-header-btn:focus:not(:disabled) { 644 | box-shadow: 0 0 0 4px rgba(8,152,138, .25); 645 | cursor:pointer; 646 | } 647 | .site-header-icon { 648 | background-position: center; 649 | background-repeat: no-repeat; 650 | background-size: contain; 651 | } 652 | 653 | /* [START]>>0:~~+Math.ceil((p-(~~p>>>0))/4294967296)>>>0:0)],l[t>>2]=m[0],l[t+4>>2]=m[1];break;case"float":U[t>>2]=0;break;case"double":J[t>>3]=0;break;case"*":f[t>>2]=0;break;default:d("invalid type for setValue: "+e)}}h="sql-wasm.wasm",st()||(e=h,h=B.locateFile?B.locateFile(e,n):n+e);var ht=(t,e)=>{for(var n=0,r=t.length-1;0<=r;r--){var i=t[r];"."===i?t.splice(r,1):".."===i?(t.splice(r,1),n++):n&&(t.splice(r,1),n--)}if(e)for(;n;n--)t.unshift("..");return t},tt=t=>{var e="/"===t.charAt(0),n="/"===t.substr(-1);return(t=(t=ht(t.split("/").filter(t=>!!t),!e).join("/"))||e?t:".")&&n&&(t+="/"),(e?"/":"")+t},pt=t=>{var e=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(t).slice(1);return t=e[0],e=e[1],t||e?t+(e=e&&e.substr(0,e.length-1)):"."},mt=t=>{if("/"===t)return"/";var e=(t=(t=tt(t)).replace(/\/$/,"")).lastIndexOf("/");return-1===e?t:t.substr(e+1)};function bt(){for(var t="",e=!1,n=arguments.length-1;-1<=n&&!e;n--){if("string"!=typeof(e=0<=n?arguments[n]:"/"))throw new TypeError("Arguments to path.resolve must be strings");if(!e)return"";t=e+"/"+t,e="/"===e.charAt(0)}return(e?"/":"")+(t=ht(t.split("/").filter(t=>!!t),!e).join("/"))||"."}function dt(t,e){var n=Array($(t)+1);return t=X(t,n,0,n.length),e&&(n.length=t),n}var wt=[];function _t(t,e){wt[t]={input:[],output:[],Xa:e},zt(t,kt)}var yt,vt,gt,qt,kt={open:function(t){var e=wt[t.node.rdev];if(!e)throw new y(43);t.tty=e,t.seekable=!1},close:function(t){t.tty.Xa.fsync(t.tty)},fsync:function(t){t.tty.Xa.fsync(t.tty)},read:function(t,e,n,r){if(!t.tty||!t.tty.Xa.tb)throw new y(60);for(var i=0,a=0;a >>0:~~+Math.ceil((p-(~~p>>>0))/4294967296)>>>0:0)],l[n+40>>2]=m[0],l[n+44>>2]=m[1],l[n+48>>2]=4096,l[n+52>>2]=r.blocks,m=[Math.floor(r.atime.getTime()/1e3)>>>0,(p=Math.floor(r.atime.getTime()/1e3),1<=+Math.abs(p)?0 >>0:~~+Math.ceil((p-(~~p>>>0))/4294967296)>>>0:0)],l[n+56>>2]=m[0],l[n+60>>2]=m[1],f[n+64>>2]=0,m=[Math.floor(r.mtime.getTime()/1e3)>>>0,(p=Math.floor(r.mtime.getTime()/1e3),1<=+Math.abs(p)?0 >>0:~~+Math.ceil((p-(~~p>>>0))/4294967296)>>>0:0)],l[n+72>>2]=m[0],l[n+76>>2]=m[1],f[n+80>>2]=0,m=[Math.floor(r.ctime.getTime()/1e3)>>>0,(p=Math.floor(r.ctime.getTime()/1e3),1<=+Math.abs(p)?0 >>0:~~+Math.ceil((p-(~~p>>>0))/4294967296)>>>0:0)],l[n+88>>2]=m[0],l[n+92>>2]=m[1],f[n+96>>2]=0,m=[r.ino>>>0,(p=r.ino,1<=+Math.abs(p)?0 >>0:~~+Math.ceil((p-(~~p>>>0))/4294967296)>>>0:0)],l[n+104>>2]=m[0],l[n+108>>2]=m[1],0}var ue=void 0;function se(){return l[(ue+=4)-4>>2]}function M(t){if(t=i[t])return t;throw new y(8)}function le(t){return f[t>>2]+4294967296*l[t+4>>2]}function fe(t){var e=$(t)+1,n=Ee(e);return n&&X(t,Q,n,e),n}function ce(t,e,n){function r(t){return(t=t.toTimeString().match(/\(([A-Za-z ]+)\)$/))?t[1]:"GMT"}var i,a,o,u;ce.Bb||(ce.Bb=!0,t=t,e=e,n=n,i=(new Date).getFullYear(),a=new Date(i,0,1),o=new Date(i,6,1),i=a.getTimezoneOffset(),u=o.getTimezoneOffset(),l[t>>2]=60*Math.max(i,u),l[e>>2]=Number(i!=u),t=r(a),e=r(o),t=fe(t),e=fe(e),u>2]=t,f[n+4>>2]=e):(f[n>>2]=e,f[n+4>>2]=t))}var he=u?()=>{var t=process.hrtime();return 1e3*t[0]+t[1]/1e6}:()=>performance.now(),pe={};function me(){if(!be){var t,e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:j||"./this.program"};for(t in pe)void 0===pe[t]?delete e[t]:e[t]=pe[t];var n=[];for(t in e)n.push(t+"="+e[t]);be=n}return be}var be,A=void 0,de=[];function we(e,n){if(!A){A=new WeakMap;var r=c.length;if(A)for(var i=0;i<0+r;i++){var a=c.get(i);a&&A.set(a,i)}}if(A.has(e))return A.get(e);if(de.length)r=de.pop();else{try{c.grow(1)}catch(t){if(t instanceof RangeError)throw"Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.";throw t}r=c.length-1}try{c.set(r,e)}catch(t){if(!(t instanceof TypeError))throw t;if("function"==typeof WebAssembly.Function){for(var i=WebAssembly.Function,a={i:"i32",j:"i64",f:"f32",d:"f64",p:"i32"},o={parameters:[],results:"v"==n[0]?[]:[a[n[0]]]},u=1;u >>0:~~+Math.ceil((p-(~~p>>>0))/4294967296)>>>0:0)],l[i>>2]=m[0],l[i+4>>2]=m[1],a.hb&&0===e&&0===r&&(a.hb=null),0}catch(t){if(t instanceof y)return t.Ka;throw t}},C:function(t){try{var e=M(t);return e.Ha&&e.Ha.fsync?e.Ha.fsync(e):0}catch(t){if(t instanceof y)return t.Ka;throw t}},r:function(t,e,n,r){try{t:{var i=M(t);t=e;for(var a=e=0;a