diff --git a/src/system/RTU/src/main.cpp b/src/system/RTU/src/main.cpp index 200d4ea..291f67d 100644 --- a/src/system/RTU/src/main.cpp +++ b/src/system/RTU/src/main.cpp @@ -1,3 +1,5 @@ +#include + #include "myBase.h" #include "myLog.h" #include "myFunc.h" @@ -40,6 +42,8 @@ int app_cfg_parse() int main(void) { + signal(SIGPIPE, SIG_IGN); + #ifdef RK356x MY_LOG_I("RK356x"); #else diff --git a/src/system/libdatacenter/src/dc_signal.cpp b/src/system/libdatacenter/src/dc_signal.cpp index e00fdfd..29b4bec 100644 --- a/src/system/libdatacenter/src/dc_signal.cpp +++ b/src/system/libdatacenter/src/dc_signal.cpp @@ -2228,8 +2228,12 @@ LOCAL void dc_show_signals(stru_signal_map &dc_signal_map) << pad_left(val_str, COL_VAL) << pad_left(link_str, COL_LINK) << endl; + + if (!cout.good()) break; } + if (!cout.good()) return; + cout << endl; cout << "signal_id: " << dc_signal_map.signal_id << endl; diff --git a/src/system/libweb_server/inc/ws_method.h b/src/system/libweb_server/inc/ws_method.h index fe0b1dd..9a649da 100644 --- a/src/system/libweb_server/inc/ws_method.h +++ b/src/system/libweb_server/inc/ws_method.h @@ -7,7 +7,8 @@ struct mg_connection; void ws_recv(struct mg_connection *c, const char *p_rx, uint16_t rx_len); -void ws_send_all(const char *p_tx, uint16_t tx_len); -void ws_send_one(unsigned long conn_id, const char *p_tx, uint16_t tx_len); +void ws_send_all(const char *p_tx, size_t tx_len); +bool ws_send_one(unsigned long conn_id, const char *p_tx, size_t tx_len); +bool ws_send_binary(unsigned long conn_id, const void *data, size_t len); void ws_session_destroy(struct mg_connection *c); void ws_task(void); diff --git a/src/system/libweb_server/src/packed_fs.c b/src/system/libweb_server/src/packed_fs.c index f79ba45..997e0e0 100644 --- a/src/system/libweb_server/src/packed_fs.c +++ b/src/system/libweb_server/src/packed_fs.c @@ -765,7 +765,76 @@ static const unsigned char v3[] = { 44, 32, 46, 115, 105, 103, 110, 97, 108, 45, 116, 97, 98, 108, 101, 32, // , .signal-table 116, 98, 111, 100, 121, 32, 116, 100, 32, 123, 32, 112, 97, 100, 100, 105, // tbody td { paddi 110, 103, 58, 32, 54, 112, 120, 32, 56, 112, 120, 59, 32, 125, 10, 125, // ng: 6px 8px; }.} - 10, 0 // . + 10, 10, 47, 42, 32, 61, 61, 61, 61, 61, 32, 229, 145, 189, 228, 187, // ../* ===== ..... + 164, 231, 187, 136, 231, 171, 175, 32, 61, 61, 61, 61, 61, 32, 42, 47, // ....... ===== */ + 10, 46, 116, 101, 114, 109, 105, 110, 97, 108, 45, 119, 114, 97, 112, 32, // ..terminal-wrap + 123, 10, 32, 32, 32, 32, 98, 97, 99, 107, 103, 114, 111, 117, 110, 100, // {. background + 58, 32, 35, 49, 101, 49, 101, 49, 101, 59, 10, 32, 32, 32, 32, 98, // : #1e1e1e;. b + 111, 114, 100, 101, 114, 45, 114, 97, 100, 105, 117, 115, 58, 32, 52, 112, // order-radius: 4p + 120, 59, 10, 32, 32, 32, 32, 111, 118, 101, 114, 102, 108, 111, 119, 58, // x;. overflow: + 32, 104, 105, 100, 100, 101, 110, 59, 10, 32, 32, 32, 32, 100, 105, 115, // hidden;. dis + 112, 108, 97, 121, 58, 32, 102, 108, 101, 120, 59, 10, 32, 32, 32, 32, // play: flex;. + 102, 108, 101, 120, 45, 100, 105, 114, 101, 99, 116, 105, 111, 110, 58, 32, // flex-direction: + 99, 111, 108, 117, 109, 110, 59, 10, 32, 32, 32, 32, 104, 101, 105, 103, // column;. heig + 104, 116, 58, 32, 99, 97, 108, 99, 40, 49, 48, 48, 118, 104, 32, 45, // ht: calc(100vh - + 32, 50, 48, 48, 112, 120, 41, 59, 10, 32, 32, 32, 32, 109, 105, 110, // 200px);. min + 45, 104, 101, 105, 103, 104, 116, 58, 32, 52, 48, 48, 112, 120, 59, 10, // -height: 400px;. + 125, 10, 46, 116, 101, 114, 109, 105, 110, 97, 108, 45, 111, 117, 116, 112, // }..terminal-outp + 117, 116, 32, 123, 10, 32, 32, 32, 32, 102, 108, 101, 120, 58, 32, 49, // ut {. flex: 1 + 59, 10, 32, 32, 32, 32, 111, 118, 101, 114, 102, 108, 111, 119, 45, 121, // ;. overflow-y + 58, 32, 97, 117, 116, 111, 59, 10, 32, 32, 32, 32, 112, 97, 100, 100, // : auto;. padd + 105, 110, 103, 58, 32, 49, 48, 112, 120, 59, 10, 32, 32, 32, 32, 102, // ing: 10px;. f + 111, 110, 116, 45, 102, 97, 109, 105, 108, 121, 58, 32, 39, 67, 111, 117, // ont-family: 'Cou + 114, 105, 101, 114, 32, 78, 101, 119, 39, 44, 32, 109, 111, 110, 111, 115, // rier New', monos + 112, 97, 99, 101, 59, 10, 32, 32, 32, 32, 102, 111, 110, 116, 45, 115, // pace;. font-s + 105, 122, 101, 58, 32, 49, 51, 112, 120, 59, 10, 32, 32, 32, 32, 99, // ize: 13px;. c + 111, 108, 111, 114, 58, 32, 35, 100, 52, 100, 52, 100, 52, 59, 10, 32, // olor: #d4d4d4;. + 32, 32, 32, 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, 58, 32, // white-space: + 112, 114, 101, 45, 119, 114, 97, 112, 59, 10, 32, 32, 32, 32, 119, 111, // pre-wrap;. wo + 114, 100, 45, 98, 114, 101, 97, 107, 58, 32, 98, 114, 101, 97, 107, 45, // rd-break: break- + 97, 108, 108, 59, 10, 32, 32, 32, 32, 98, 97, 99, 107, 103, 114, 111, // all;. backgro + 117, 110, 100, 58, 32, 35, 49, 101, 49, 101, 49, 101, 59, 10, 125, 10, // und: #1e1e1e;.}. + 46, 116, 101, 114, 109, 105, 110, 97, 108, 45, 111, 117, 116, 112, 117, 116, // .terminal-output + 32, 100, 105, 118, 32, 123, 10, 32, 32, 32, 32, 108, 105, 110, 101, 45, // div {. line- + 104, 101, 105, 103, 104, 116, 58, 32, 49, 46, 53, 59, 10, 125, 10, 46, // height: 1.5;.}.. + 116, 101, 114, 109, 105, 110, 97, 108, 45, 105, 110, 112, 117, 116, 45, 108, // terminal-input-l + 105, 110, 101, 32, 123, 10, 32, 32, 32, 32, 100, 105, 115, 112, 108, 97, // ine {. displa + 121, 58, 32, 102, 108, 101, 120, 59, 10, 32, 32, 32, 32, 98, 97, 99, // y: flex;. bac + 107, 103, 114, 111, 117, 110, 100, 58, 32, 35, 50, 100, 50, 100, 50, 100, // kground: #2d2d2d + 59, 10, 32, 32, 32, 32, 112, 97, 100, 100, 105, 110, 103, 58, 32, 54, // ;. padding: 6 + 112, 120, 32, 49, 48, 112, 120, 59, 10, 32, 32, 32, 32, 98, 111, 114, // px 10px;. bor + 100, 101, 114, 45, 116, 111, 112, 58, 32, 49, 112, 120, 32, 115, 111, 108, // der-top: 1px sol + 105, 100, 32, 35, 51, 99, 51, 99, 51, 99, 59, 10, 125, 10, 46, 116, // id #3c3c3c;.}..t + 101, 114, 109, 105, 110, 97, 108, 45, 112, 114, 111, 109, 112, 116, 32, 123, // erminal-prompt { + 10, 32, 32, 32, 32, 99, 111, 108, 111, 114, 58, 32, 35, 54, 97, 57, // . color: #6a9 + 57, 53, 53, 59, 10, 32, 32, 32, 32, 112, 97, 100, 100, 105, 110, 103, // 955;. padding + 58, 32, 52, 112, 120, 32, 54, 112, 120, 32, 52, 112, 120, 32, 48, 59, // : 4px 6px 4px 0; + 10, 32, 32, 32, 32, 102, 111, 110, 116, 45, 102, 97, 109, 105, 108, 121, // . font-family + 58, 32, 39, 67, 111, 117, 114, 105, 101, 114, 32, 78, 101, 119, 39, 44, // : 'Courier New', + 32, 109, 111, 110, 111, 115, 112, 97, 99, 101, 59, 10, 32, 32, 32, 32, // monospace;. + 102, 111, 110, 116, 45, 115, 105, 122, 101, 58, 32, 49, 51, 112, 120, 59, // font-size: 13px; + 10, 32, 32, 32, 32, 119, 104, 105, 116, 101, 45, 115, 112, 97, 99, 101, // . white-space + 58, 32, 110, 111, 119, 114, 97, 112, 59, 10, 125, 10, 46, 116, 101, 114, // : nowrap;.}..ter + 109, 105, 110, 97, 108, 45, 105, 110, 112, 117, 116, 32, 123, 10, 32, 32, // minal-input {. + 32, 32, 102, 108, 101, 120, 58, 32, 49, 59, 10, 32, 32, 32, 32, 98, // flex: 1;. b + 97, 99, 107, 103, 114, 111, 117, 110, 100, 58, 32, 116, 114, 97, 110, 115, // ackground: trans + 112, 97, 114, 101, 110, 116, 59, 10, 32, 32, 32, 32, 98, 111, 114, 100, // parent;. bord + 101, 114, 58, 32, 110, 111, 110, 101, 59, 10, 32, 32, 32, 32, 99, 111, // er: none;. co + 108, 111, 114, 58, 32, 35, 100, 52, 100, 52, 100, 52, 59, 10, 32, 32, // lor: #d4d4d4;. + 32, 32, 102, 111, 110, 116, 45, 102, 97, 109, 105, 108, 121, 58, 32, 39, // font-family: ' + 67, 111, 117, 114, 105, 101, 114, 32, 78, 101, 119, 39, 44, 32, 109, 111, // Courier New', mo + 110, 111, 115, 112, 97, 99, 101, 59, 10, 32, 32, 32, 32, 102, 111, 110, // nospace;. fon + 116, 45, 115, 105, 122, 101, 58, 32, 49, 51, 112, 120, 59, 10, 32, 32, // t-size: 13px;. + 32, 32, 111, 117, 116, 108, 105, 110, 101, 58, 32, 110, 111, 110, 101, 59, // outline: none; + 10, 125, 10, 46, 116, 101, 114, 109, 45, 115, 101, 110, 116, 32, 32, 123, // .}..term-sent { + 32, 99, 111, 108, 111, 114, 58, 32, 35, 53, 54, 57, 99, 100, 54, 59, // color: #569cd6; + 32, 125, 10, 46, 116, 101, 114, 109, 45, 114, 101, 115, 112, 32, 32, 123, // }..term-resp { + 32, 99, 111, 108, 111, 114, 58, 32, 35, 100, 52, 100, 52, 100, 52, 59, // color: #d4d4d4; + 32, 125, 10, 46, 116, 101, 114, 109, 45, 101, 114, 114, 32, 32, 32, 123, // }..term-err { + 32, 99, 111, 108, 111, 114, 58, 32, 35, 102, 52, 52, 55, 52, 55, 59, // color: #f44747; + 32, 125, 10, 46, 116, 101, 114, 109, 45, 105, 110, 102, 111, 32, 32, 123, // }..term-info { + 32, 99, 111, 108, 111, 114, 58, 32, 35, 54, 97, 57, 57, 53, 53, 59, // color: #6a9955; + 32, 125, 10, 0 // }. }; static const unsigned char v4[] = { 60, 33, 68, 79, 67, 84, 89, 80, 69, 32, 104, 116, 109, 108, 62, 10, // . @@ -898,381 +967,406 @@ static const unsigned char v5[] = { 32, 32, 123, 32, 104, 97, 115, 104, 58, 32, 39, 35, 109, 111, 110, 105, // { hash: '#moni 116, 111, 114, 39, 44, 32, 32, 32, 108, 97, 98, 101, 108, 58, 32, 39, // tor', label: ' 240, 159, 147, 139, 32, 230, 149, 176, 230, 141, 174, 231, 155, 145, 230, 142, // .... ........... - 167, 39, 32, 125, 10, 32, 32, 32, 32, 93, 59, 10, 10, 32, 32, 32, // .' }. ];.. - 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 98, 117, 105, 108, 100, 78, // function buildN - 97, 118, 40, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 118, // av() {. v - 97, 114, 32, 110, 97, 118, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, // ar nav = documen - 116, 46, 103, 101, 116, 69, 108, 101, 109, 101, 110, 116, 66, 121, 73, 100, // t.getElementById - 40, 39, 110, 97, 118, 45, 108, 105, 110, 107, 115, 39, 41, 59, 10, 32, // ('nav-links');. - 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 33, 110, 97, 118, 41, // if (!nav) - 32, 114, 101, 116, 117, 114, 110, 59, 10, 32, 32, 32, 32, 32, 32, 32, // return;. - 32, 118, 97, 114, 32, 104, 116, 109, 108, 32, 61, 32, 39, 39, 59, 10, // var html = '';. - 32, 32, 32, 32, 32, 32, 32, 32, 102, 111, 114, 32, 40, 118, 97, 114, // for (var - 32, 105, 32, 61, 32, 48, 59, 32, 105, 32, 60, 32, 110, 97, 118, 76, // i = 0; i < navL - 105, 110, 107, 115, 46, 108, 101, 110, 103, 116, 104, 59, 32, 105, 43, 43, // inks.length; i++ - 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ) {. - 118, 97, 114, 32, 108, 105, 110, 107, 32, 61, 32, 110, 97, 118, 76, 105, // var link = navLi - 110, 107, 115, 91, 105, 93, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, // nks[i];. - 32, 32, 32, 32, 104, 116, 109, 108, 32, 43, 61, 32, 39, 60, 97, 32, // html += '' + link. - 108, 97, 98, 101, 108, 32, 43, 32, 39, 60, 47, 97, 62, 39, 59, 10, // label + '';. - 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, // }. - 32, 32, 110, 97, 118, 46, 105, 110, 110, 101, 114, 72, 84, 77, 76, 32, // nav.innerHTML - 61, 32, 104, 116, 109, 108, 59, 10, 32, 32, 32, 32, 125, 10, 10, 32, // = html;. }.. - 32, 32, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 117, 112, 100, 97, // function upda - 116, 101, 78, 97, 118, 65, 99, 116, 105, 118, 101, 40, 104, 97, 115, 104, // teNavActive(hash - 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, // ) {. var - 108, 105, 110, 107, 115, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, // links = document - 46, 113, 117, 101, 114, 121, 83, 101, 108, 101, 99, 116, 111, 114, 65, 108, // .querySelectorAl - 108, 40, 39, 35, 110, 97, 118, 45, 108, 105, 110, 107, 115, 32, 97, 39, // l('#nav-links a' - 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 102, 111, 114, 32, 40, // );. for ( - 118, 97, 114, 32, 105, 32, 61, 32, 48, 59, 32, 105, 32, 60, 32, 108, // var i = 0; i < l - 105, 110, 107, 115, 46, 108, 101, 110, 103, 116, 104, 59, 32, 105, 43, 43, // inks.length; i++ - 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ) {. - 118, 97, 114, 32, 108, 105, 110, 107, 72, 97, 115, 104, 32, 61, 32, 108, // var linkHash = l - 105, 110, 107, 115, 91, 105, 93, 46, 103, 101, 116, 65, 116, 116, 114, 105, // inks[i].getAttri - 98, 117, 116, 101, 40, 39, 100, 97, 116, 97, 45, 104, 97, 115, 104, 39, // bute('data-hash' - 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, // );. i - 102, 32, 40, 108, 105, 110, 107, 72, 97, 115, 104, 32, 61, 61, 61, 32, // f (linkHash === - 104, 97, 115, 104, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, // hash) {. - 32, 32, 32, 32, 32, 32, 32, 32, 108, 105, 110, 107, 115, 91, 105, 93, // links[i] - 46, 99, 108, 97, 115, 115, 76, 105, 115, 116, 46, 97, 100, 100, 40, 39, // .classList.add(' - 97, 99, 116, 105, 118, 101, 39, 41, 59, 10, 32, 32, 32, 32, 32, 32, // active');. - 32, 32, 32, 32, 32, 32, 125, 32, 101, 108, 115, 101, 32, 123, 10, 32, // } else {. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 108, // l - 105, 110, 107, 115, 91, 105, 93, 46, 99, 108, 97, 115, 115, 76, 105, 115, // inks[i].classLis - 116, 46, 114, 101, 109, 111, 118, 101, 40, 39, 97, 99, 116, 105, 118, 101, // t.remove('active - 39, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ');. - 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, // }. }. - 125, 10, 10, 32, 32, 32, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, // }.. function - 115, 104, 111, 119, 83, 105, 100, 101, 98, 97, 114, 40, 115, 104, 111, 119, // showSidebar(show - 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, // ) {. var - 115, 105, 100, 101, 98, 97, 114, 32, 61, 32, 100, 111, 99, 117, 109, 101, // sidebar = docume - 110, 116, 46, 103, 101, 116, 69, 108, 101, 109, 101, 110, 116, 66, 121, 73, // nt.getElementByI - 100, 40, 39, 110, 97, 118, 45, 115, 105, 100, 101, 98, 97, 114, 39, 41, // d('nav-sidebar') - 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 115, 105, // ;. if (si - 100, 101, 98, 97, 114, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, // debar) {. - 32, 32, 32, 32, 32, 115, 105, 100, 101, 98, 97, 114, 46, 115, 116, 121, // sidebar.sty - 108, 101, 46, 100, 105, 115, 112, 108, 97, 121, 32, 61, 32, 115, 104, 111, // le.display = sho - 119, 32, 63, 32, 39, 102, 108, 101, 120, 39, 32, 58, 32, 39, 110, 111, // w ? 'flex' : 'no - 110, 101, 39, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, // ne';. }. - 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 109, 97, 105, 110, 32, // var main - 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, 116, 69, 108, // = document.getEl - 101, 109, 101, 110, 116, 66, 121, 73, 100, 40, 39, 109, 97, 105, 110, 45, // ementById('main- - 99, 111, 110, 116, 101, 110, 116, 39, 41, 59, 10, 32, 32, 32, 32, 32, // content');. - 32, 32, 32, 105, 102, 32, 40, 109, 97, 105, 110, 41, 32, 123, 10, 32, // if (main) {. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 109, 97, 105, 110, 46, // main. - 115, 116, 121, 108, 101, 46, 109, 97, 114, 103, 105, 110, 76, 101, 102, 116, // style.marginLeft - 32, 61, 32, 115, 104, 111, 119, 32, 63, 32, 39, 50, 50, 48, 112, 120, // = show ? '220px - 39, 32, 58, 32, 39, 48, 39, 59, 10, 32, 32, 32, 32, 32, 32, 32, // ' : '0';. - 32, 125, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 47, 42, // }. }.. /* - 32, 45, 45, 45, 45, 32, 87, 83, 32, 231, 138, 182, 230, 128, 129, 230, // ---- WS ....... - 155, 180, 230, 150, 176, 32, 45, 45, 45, 45, 32, 42, 47, 10, 32, 32, // ..... ---- */. - 32, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 117, 112, 100, 97, 116, // function updat - 101, 87, 115, 83, 116, 97, 116, 117, 115, 40, 115, 116, 97, 116, 117, 115, // eWsStatus(status - 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, // ) {. var - 100, 111, 116, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, // dot = document.g - 101, 116, 69, 108, 101, 109, 101, 110, 116, 66, 121, 73, 100, 40, 39, 110, // etElementById('n - 97, 118, 45, 115, 116, 97, 116, 117, 115, 45, 100, 111, 116, 39, 41, 59, // av-status-dot'); - 10, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 116, 101, 120, // . var tex - 116, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, 116, // t = document.get + 167, 39, 32, 125, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 123, 32, // .' },. { + 104, 97, 115, 104, 58, 32, 39, 35, 116, 101, 114, 109, 105, 110, 97, 108, // hash: '#terminal + 39, 44, 32, 108, 97, 98, 101, 108, 58, 32, 39, 240, 159, 146, 187, 32, // ', label: '.... + 229, 145, 189, 228, 187, 164, 231, 187, 136, 231, 171, 175, 39, 32, 125, 10, // ............' }. + 32, 32, 32, 32, 93, 59, 10, 10, 32, 32, 32, 32, 102, 117, 110, 99, // ];.. func + 116, 105, 111, 110, 32, 98, 117, 105, 108, 100, 78, 97, 118, 40, 41, 32, // tion buildNav() + 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 110, 97, // {. var na + 118, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, 116, // v = document.get 69, 108, 101, 109, 101, 110, 116, 66, 121, 73, 100, 40, 39, 110, 97, 118, // ElementById('nav - 45, 115, 116, 97, 116, 117, 115, 45, 116, 101, 120, 116, 39, 41, 59, 10, // -status-text');. - 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 100, 111, 116, 41, // if (dot) - 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 100, // {. d - 111, 116, 46, 99, 108, 97, 115, 115, 78, 97, 109, 101, 32, 61, 32, 39, // ot.className = ' - 110, 97, 118, 45, 115, 116, 97, 116, 117, 115, 45, 100, 111, 116, 32, 39, // nav-status-dot ' - 32, 43, 32, 115, 116, 97, 116, 117, 115, 59, 10, 32, 32, 32, 32, 32, // + status;. - 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, // }. if - 40, 116, 101, 120, 116, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, // (text) {. - 32, 32, 32, 32, 32, 118, 97, 114, 32, 109, 97, 112, 32, 61, 32, 123, // var map = { - 32, 99, 111, 110, 110, 101, 99, 116, 101, 100, 58, 32, 39, 229, 183, 178, // connected: '... - 232, 191, 158, 230, 142, 165, 39, 44, 32, 100, 105, 115, 99, 111, 110, 110, // ......', disconn - 101, 99, 116, 101, 100, 58, 32, 39, 229, 183, 178, 230, 150, 173, 229, 188, // ected: '........ - 128, 39, 44, 32, 99, 111, 110, 110, 101, 99, 116, 105, 110, 103, 58, 32, // .', connecting: - 39, 232, 191, 158, 230, 142, 165, 228, 184, 173, 46, 46, 46, 39, 32, 125, // '............' } - 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 101, // ;. te - 120, 116, 46, 116, 101, 120, 116, 67, 111, 110, 116, 101, 110, 116, 32, 61, // xt.textContent = - 32, 109, 97, 112, 91, 115, 116, 97, 116, 117, 115, 93, 32, 124, 124, 32, // map[status] || - 115, 116, 97, 116, 117, 115, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, // status;. - 125, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 47, 42, 32, // }. }.. /* - 45, 45, 45, 45, 32, 232, 183, 175, 231, 148, 177, 232, 176, 131, 229, 186, // ---- ........... - 166, 32, 45, 45, 45, 45, 32, 42, 47, 10, 32, 32, 32, 32, 102, 117, // . ---- */. fu - 110, 99, 116, 105, 111, 110, 32, 100, 105, 115, 112, 97, 116, 99, 104, 40, // nction dispatch( - 104, 97, 115, 104, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, // hash) {. - 47, 47, 32, 230, 156, 170, 231, 153, 187, 229, 189, 149, 32, 226, 134, 146, // // ......... ... - 32, 232, 183, 179, 232, 189, 172, 229, 136, 176, 32, 108, 111, 103, 105, 110, // ......... login - 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 104, 97, 115, // . if (has - 104, 32, 33, 61, 61, 32, 39, 35, 108, 111, 103, 105, 110, 39, 32, 38, // h !== '#login' & - 38, 32, 33, 108, 111, 99, 97, 108, 83, 116, 111, 114, 97, 103, 101, 46, // & !localStorage. - 103, 101, 116, 73, 116, 101, 109, 40, 39, 114, 116, 117, 95, 108, 111, 103, // getItem('rtu_log - 103, 101, 100, 95, 105, 110, 39, 41, 41, 32, 123, 10, 32, 32, 32, 32, // ged_in')) {. - 32, 32, 32, 32, 32, 32, 32, 32, 119, 105, 110, 100, 111, 119, 46, 108, // window.l - 111, 99, 97, 116, 105, 111, 110, 46, 104, 97, 115, 104, 32, 61, 32, 39, // ocation.hash = ' - 35, 108, 111, 103, 105, 110, 39, 59, 10, 32, 32, 32, 32, 32, 32, 32, // #login';. - 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 59, 10, 32, 32, 32, // return;. - 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, // }.. - 47, 47, 32, 229, 183, 178, 231, 153, 187, 229, 189, 149, 228, 189, 134, 232, // // ............. - 174, 191, 233, 151, 174, 32, 108, 111, 103, 105, 110, 32, 226, 134, 146, 32, // ..... login ... - 232, 183, 179, 232, 189, 172, 229, 136, 176, 32, 100, 97, 115, 104, 98, 111, // ......... dashbo - 97, 114, 100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, // ard. if ( - 104, 97, 115, 104, 32, 61, 61, 61, 32, 39, 35, 108, 111, 103, 105, 110, // hash === '#login - 39, 32, 38, 38, 32, 108, 111, 99, 97, 108, 83, 116, 111, 114, 97, 103, // ' && localStorag - 101, 46, 103, 101, 116, 73, 116, 101, 109, 40, 39, 114, 116, 117, 95, 108, // e.getItem('rtu_l - 111, 103, 103, 101, 100, 95, 105, 110, 39, 41, 41, 32, 123, 10, 32, 32, // ogged_in')) {. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 119, 105, 110, 100, 111, 119, // window - 46, 108, 111, 99, 97, 116, 105, 111, 110, 46, 104, 97, 115, 104, 32, 61, // .location.hash = - 32, 39, 35, 100, 97, 115, 104, 98, 111, 97, 114, 100, 39, 59, 10, 32, // '#dashboard';. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, // retur - 110, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, // n;. }.. - 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 104, 97, 115, 104, 32, 61, // if (hash = - 61, 61, 32, 99, 117, 114, 114, 101, 110, 116, 72, 97, 115, 104, 32, 38, // == currentHash & - 38, 32, 99, 117, 114, 114, 101, 110, 116, 80, 97, 103, 101, 41, 32, 114, // & currentPage) r - 101, 116, 117, 114, 110, 59, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, // eturn;.. - 118, 97, 114, 32, 99, 111, 110, 116, 97, 105, 110, 101, 114, 32, 61, 32, // var container = - 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, 116, 69, 108, 101, 109, // document.getElem - 101, 110, 116, 66, 121, 73, 100, 40, 39, 112, 97, 103, 101, 45, 99, 111, // entById('page-co - 110, 116, 97, 105, 110, 101, 114, 39, 41, 59, 10, 32, 32, 32, 32, 32, // ntainer');. - 32, 32, 32, 105, 102, 32, 40, 33, 99, 111, 110, 116, 97, 105, 110, 101, // if (!containe - 114, 41, 32, 114, 101, 116, 117, 114, 110, 59, 10, 10, 32, 32, 32, 32, // r) return;.. - 32, 32, 32, 32, 47, 47, 32, 231, 166, 187, 229, 188, 128, 230, 151, 167, // // ......... - 233, 161, 181, 233, 157, 162, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, // ....... i - 102, 32, 40, 99, 117, 114, 114, 101, 110, 116, 80, 97, 103, 101, 32, 38, // f (currentPage & - 38, 32, 99, 117, 114, 114, 101, 110, 116, 80, 97, 103, 101, 46, 111, 110, // & currentPage.on - 76, 101, 97, 118, 101, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, // Leave) {. - 32, 32, 32, 32, 32, 99, 117, 114, 114, 101, 110, 116, 80, 97, 103, 101, // currentPage - 46, 111, 110, 76, 101, 97, 118, 101, 40, 41, 59, 10, 32, 32, 32, 32, // .onLeave();. - 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, // }.. / - 47, 32, 230, 184, 178, 230, 159, 147, 230, 150, 176, 233, 161, 181, 233, 157, // / .............. - 162, 10, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 112, 97, // .. var pa - 103, 101, 32, 61, 32, 112, 97, 103, 101, 115, 91, 104, 97, 115, 104, 93, // ge = pages[hash] - 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 33, 112, // ;. if (!p - 97, 103, 101, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // age) {. - 32, 32, 32, 47, 47, 32, 233, 187, 152, 232, 174, 164, 232, 183, 179, 232, // // .......... - 189, 172, 229, 136, 176, 32, 108, 111, 103, 105, 110, 10, 32, 32, 32, 32, // ..... login. - 32, 32, 32, 32, 32, 32, 32, 32, 119, 105, 110, 100, 111, 119, 46, 108, // window.l - 111, 99, 97, 116, 105, 111, 110, 46, 104, 97, 115, 104, 32, 61, 32, 39, // ocation.hash = ' - 35, 108, 111, 103, 105, 110, 39, 59, 10, 32, 32, 32, 32, 32, 32, 32, // #login';. - 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 59, 10, 32, 32, 32, // return;. - 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, // }.. - 99, 111, 110, 116, 97, 105, 110, 101, 114, 46, 105, 110, 110, 101, 114, 72, // container.innerH - 84, 77, 76, 32, 61, 32, 39, 39, 59, 10, 32, 32, 32, 32, 32, 32, // TML = '';. - 32, 32, 112, 97, 103, 101, 46, 114, 101, 110, 100, 101, 114, 40, 99, 111, // page.render(co - 110, 116, 97, 105, 110, 101, 114, 41, 59, 10, 10, 32, 32, 32, 32, 32, // ntainer);.. - 32, 32, 32, 105, 102, 32, 40, 112, 97, 103, 101, 46, 111, 110, 69, 110, // if (page.onEn - 116, 101, 114, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ter) {. - 32, 32, 32, 112, 97, 103, 101, 46, 111, 110, 69, 110, 116, 101, 114, 40, // page.onEnter( - 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, // );. }.. - 32, 32, 32, 32, 32, 32, 47, 47, 32, 233, 161, 181, 233, 157, 162, 232, // // ....... - 191, 155, 229, 133, 165, 229, 144, 142, 231, 171, 139, 229, 141, 179, 230, 142, // ................ - 168, 233, 128, 129, 231, 188, 147, 229, 173, 152, 230, 149, 176, 230, 141, 174, // ................ - 239, 188, 136, 229, 166, 130, 230, 156, 137, 239, 188, 137, 10, 32, 32, 32, // ............. - 32, 32, 32, 32, 32, 118, 97, 114, 32, 115, 116, 77, 97, 112, 32, 61, // var stMap = - 32, 123, 32, 39, 35, 111, 117, 116, 39, 58, 32, 39, 111, 117, 116, 39, // { '#out': 'out' - 44, 32, 39, 35, 105, 110, 39, 58, 32, 39, 105, 110, 39, 44, 32, 39, // , '#in': 'in', ' - 35, 121, 107, 39, 58, 32, 39, 121, 107, 39, 44, 32, 39, 35, 97, 111, // #yk': 'yk', '#ao - 39, 58, 32, 39, 97, 111, 39, 44, 32, 39, 35, 112, 97, 114, 97, 109, // ': 'ao', '#param - 39, 58, 32, 39, 112, 97, 114, 97, 109, 39, 32, 125, 59, 10, 32, 32, // ': 'param' };. - 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 115, 116, 32, 61, 32, 115, // var st = s - 116, 77, 97, 112, 91, 104, 97, 115, 104, 93, 59, 10, 32, 32, 32, 32, // tMap[hash];. - 32, 32, 32, 32, 105, 102, 32, 40, 115, 116, 32, 38, 38, 32, 112, 97, // if (st && pa - 103, 101, 46, 111, 110, 68, 97, 116, 97, 32, 38, 38, 32, 108, 97, 115, // ge.onData && las - 116, 68, 97, 116, 97, 67, 97, 99, 104, 101, 91, 115, 116, 93, 41, 32, // tDataCache[st]) - 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 112, 97, // {. pa - 103, 101, 46, 111, 110, 68, 97, 116, 97, 40, 108, 97, 115, 116, 68, 97, // ge.onData(lastDa - 116, 97, 67, 97, 99, 104, 101, 91, 115, 116, 93, 41, 59, 10, 32, 32, // taCache[st]);. - 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, // }.. - 32, 99, 117, 114, 114, 101, 110, 116, 80, 97, 103, 101, 32, 61, 32, 112, // currentPage = p - 97, 103, 101, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99, 117, 114, // age;. cur - 114, 101, 110, 116, 72, 97, 115, 104, 32, 61, 32, 104, 97, 115, 104, 59, // rentHash = hash; - 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 230, 155, 180, // .. // ... - 230, 150, 176, 229, 175, 188, 232, 136, 170, 10, 32, 32, 32, 32, 32, 32, // .......... - 32, 32, 117, 112, 100, 97, 116, 101, 78, 97, 118, 65, 99, 116, 105, 118, // updateNavActiv - 101, 40, 104, 97, 115, 104, 41, 59, 10, 10, 32, 32, 32, 32, 32, 32, // e(hash);.. - 32, 32, 47, 47, 32, 231, 153, 187, 229, 189, 149, 233, 161, 181, 233, 154, // // ........... - 144, 232, 151, 143, 228, 190, 167, 232, 190, 185, 230, 160, 143, 10, 32, 32, // .............. - 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 104, 97, 115, 104, 32, 61, // if (hash = - 61, 61, 32, 39, 35, 108, 111, 103, 105, 110, 39, 41, 32, 123, 10, 32, // == '#login') {. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 104, 111, 119, 83, // showS - 105, 100, 101, 98, 97, 114, 40, 102, 97, 108, 115, 101, 41, 59, 10, 32, // idebar(false);. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 100, 111, 99, 117, 109, // docum - 101, 110, 116, 46, 98, 111, 100, 121, 46, 99, 108, 97, 115, 115, 76, 105, // ent.body.classLi - 115, 116, 46, 97, 100, 100, 40, 39, 108, 111, 103, 105, 110, 45, 112, 97, // st.add('login-pa - 103, 101, 39, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 32, // ge');. } - 101, 108, 115, 101, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // else {. - 32, 32, 32, 115, 104, 111, 119, 83, 105, 100, 101, 98, 97, 114, 40, 116, // showSidebar(t - 114, 117, 101, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // rue);. - 32, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 98, 111, 100, 121, 46, // document.body. - 99, 108, 97, 115, 115, 76, 105, 115, 116, 46, 114, 101, 109, 111, 118, 101, // classList.remove - 40, 39, 108, 111, 103, 105, 110, 45, 112, 97, 103, 101, 39, 41, 59, 10, // ('login-page');. - 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 125, 10, // }. }. - 10, 32, 32, 32, 32, 47, 42, 32, 45, 45, 45, 45, 32, 230, 149, 176, // . /* ---- ... - 230, 141, 174, 231, 188, 147, 229, 173, 152, 239, 188, 154, 228, 191, 157, 231, // ................ - 149, 153, 230, 175, 143, 231, 167, 141, 228, 191, 161, 229, 143, 183, 231, 177, // ................ - 187, 229, 158, 139, 231, 154, 132, 230, 156, 128, 229, 144, 142, 230, 149, 176, // ................ - 230, 141, 174, 239, 188, 140, 229, 136, 135, 230, 141, 162, 233, 161, 181, 233, // ................ - 157, 162, 230, 151, 182, 231, 171, 139, 229, 141, 179, 230, 129, 162, 229, 164, // ................ - 141, 32, 45, 45, 45, 45, 32, 42, 47, 10, 32, 32, 32, 32, 118, 97, // . ---- */. va - 114, 32, 108, 97, 115, 116, 68, 97, 116, 97, 67, 97, 99, 104, 101, 32, // r lastDataCache - 61, 32, 123, 125, 59, 10, 10, 32, 32, 32, 32, 47, 42, 32, 45, 45, // = {};.. /* -- - 45, 45, 32, 87, 83, 32, 228, 184, 139, 232, 161, 140, 230, 149, 176, 230, // -- WS .......... - 141, 174, 229, 136, 134, 229, 143, 145, 32, 45, 45, 45, 45, 32, 42, 47, // ........ ---- */ - 10, 32, 32, 32, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 110, // . function on - 87, 115, 77, 101, 115, 115, 97, 103, 101, 40, 100, 97, 116, 97, 44, 32, // WsMessage(data, - 114, 97, 119, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, // raw) {. i - 102, 32, 40, 33, 100, 97, 116, 97, 32, 124, 124, 32, 116, 121, 112, 101, // f (!data || type - 111, 102, 32, 100, 97, 116, 97, 32, 33, 61, 61, 32, 39, 111, 98, 106, // of data !== 'obj - 101, 99, 116, 39, 41, 32, 114, 101, 116, 117, 114, 110, 59, 10, 10, 32, // ect') return;.. - 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 115, 105, 103, 110, 97, // var signa - 108, 84, 121, 112, 101, 115, 32, 61, 32, 91, 39, 111, 117, 116, 39, 44, // lTypes = ['out', - 32, 39, 105, 110, 39, 44, 32, 39, 121, 107, 39, 44, 32, 39, 97, 111, // 'in', 'yk', 'ao - 39, 44, 32, 39, 112, 97, 114, 97, 109, 39, 93, 59, 10, 32, 32, 32, // ', 'param'];. - 32, 32, 32, 32, 32, 102, 111, 114, 32, 40, 118, 97, 114, 32, 105, 32, // for (var i - 61, 32, 48, 59, 32, 105, 32, 60, 32, 115, 105, 103, 110, 97, 108, 84, // = 0; i < signalT - 121, 112, 101, 115, 46, 108, 101, 110, 103, 116, 104, 59, 32, 105, 43, 43, // ypes.length; i++ - 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ) {. - 118, 97, 114, 32, 115, 116, 32, 61, 32, 115, 105, 103, 110, 97, 108, 84, // var st = signalT - 121, 112, 101, 115, 91, 105, 93, 59, 10, 32, 32, 32, 32, 32, 32, 32, // ypes[i];. - 32, 32, 32, 32, 32, 105, 102, 32, 40, 100, 97, 116, 97, 91, 115, 116, // if (data[st - 93, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ]) {. - 32, 32, 32, 32, 32, 108, 97, 115, 116, 68, 97, 116, 97, 67, 97, 99, // lastDataCac - 104, 101, 91, 115, 116, 93, 32, 61, 32, 100, 97, 116, 97, 91, 115, 116, // he[st] = data[st - 93, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, // ];. } - 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, // . }.. - 32, 32, 32, 32, 47, 47, 32, 228, 187, 133, 229, 144, 145, 229, 189, 147, // // ......... - 229, 137, 141, 233, 161, 181, 233, 157, 162, 230, 142, 168, 233, 128, 129, 229, // ................ - 175, 185, 229, 186, 148, 231, 177, 187, 229, 158, 139, 231, 154, 132, 230, 149, // ................ - 176, 230, 141, 174, 10, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, // ..... var - 32, 115, 105, 103, 110, 97, 108, 84, 121, 112, 101, 77, 97, 112, 32, 61, // signalTypeMap = - 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 39, // {. ' - 35, 111, 117, 116, 39, 58, 32, 39, 111, 117, 116, 39, 44, 10, 32, 32, // #out': 'out',. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 39, 35, 105, 110, 39, 58, // '#in': - 32, 39, 105, 110, 39, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // 'in',. - 32, 32, 32, 39, 35, 121, 107, 39, 58, 32, 39, 121, 107, 39, 44, 10, // '#yk': 'yk',. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 39, 35, 97, 111, // '#ao - 39, 58, 32, 39, 97, 111, 39, 44, 10, 32, 32, 32, 32, 32, 32, 32, // ': 'ao',. - 32, 32, 32, 32, 32, 39, 35, 112, 97, 114, 97, 109, 39, 58, 32, 39, // '#param': ' - 112, 97, 114, 97, 109, 39, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, // param'. } - 59, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 115, // ;.. var s - 105, 103, 110, 97, 108, 84, 121, 112, 101, 32, 61, 32, 115, 105, 103, 110, // ignalType = sign - 97, 108, 84, 121, 112, 101, 77, 97, 112, 91, 99, 117, 114, 114, 101, 110, // alTypeMap[curren - 116, 72, 97, 115, 104, 93, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, // tHash];. - 105, 102, 32, 40, 115, 105, 103, 110, 97, 108, 84, 121, 112, 101, 32, 38, // if (signalType & - 38, 32, 99, 117, 114, 114, 101, 110, 116, 80, 97, 103, 101, 32, 38, 38, // & currentPage && - 32, 99, 117, 114, 114, 101, 110, 116, 80, 97, 103, 101, 46, 111, 110, 68, // currentPage.onD - 97, 116, 97, 32, 38, 38, 32, 100, 97, 116, 97, 91, 115, 105, 103, 110, // ata && data[sign - 97, 108, 84, 121, 112, 101, 93, 41, 32, 123, 10, 32, 32, 32, 32, 32, // alType]) {. - 32, 32, 32, 32, 32, 32, 32, 99, 117, 114, 114, 101, 110, 116, 80, 97, // currentPa - 103, 101, 46, 111, 110, 68, 97, 116, 97, 40, 100, 97, 116, 97, 91, 115, // ge.onData(data[s - 105, 103, 110, 97, 108, 84, 121, 112, 101, 93, 41, 59, 10, 32, 32, 32, // ignalType]);. - 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, // }. }.. - 32, 32, 47, 42, 32, 45, 45, 45, 45, 32, 229, 136, 157, 229, 167, 139, // /* ---- ...... - 229, 140, 150, 32, 45, 45, 45, 45, 32, 42, 47, 10, 32, 32, 32, 32, // ... ---- */. - 102, 117, 110, 99, 116, 105, 111, 110, 32, 105, 110, 105, 116, 40, 41, 32, // function init() - 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 230, 179, 168, // {. // ... - 229, 134, 140, 233, 161, 181, 233, 157, 162, 10, 32, 32, 32, 32, 32, 32, // .......... - 32, 32, 114, 101, 103, 105, 115, 116, 101, 114, 80, 97, 103, 101, 40, 39, // registerPage(' - 35, 108, 111, 103, 105, 110, 39, 44, 32, 76, 111, 103, 105, 110, 80, 97, // #login', LoginPa - 103, 101, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 103, // ge);. reg - 105, 115, 116, 101, 114, 80, 97, 103, 101, 40, 39, 35, 100, 97, 115, 104, // isterPage('#dash - 98, 111, 97, 114, 100, 39, 44, 32, 68, 97, 115, 104, 98, 111, 97, 114, // board', Dashboar - 100, 80, 97, 103, 101, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, // dPage);. - 114, 101, 103, 105, 115, 116, 101, 114, 80, 97, 103, 101, 40, 39, 35, 111, // registerPage('#o - 117, 116, 39, 44, 32, 79, 117, 116, 80, 97, 103, 101, 41, 59, 10, 32, // ut', OutPage);. - 32, 32, 32, 32, 32, 32, 32, 114, 101, 103, 105, 115, 116, 101, 114, 80, // registerP - 97, 103, 101, 40, 39, 35, 105, 110, 39, 44, 32, 73, 110, 80, 97, 103, // age('#in', InPag - 101, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 103, 105, // e);. regi - 115, 116, 101, 114, 80, 97, 103, 101, 40, 39, 35, 121, 107, 39, 44, 32, // sterPage('#yk', - 89, 107, 80, 97, 103, 101, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, // YkPage);. - 32, 114, 101, 103, 105, 115, 116, 101, 114, 80, 97, 103, 101, 40, 39, 35, // registerPage('# - 97, 111, 39, 44, 32, 65, 111, 80, 97, 103, 101, 41, 59, 10, 32, 32, // ao', AoPage);. - 32, 32, 32, 32, 32, 32, 114, 101, 103, 105, 115, 116, 101, 114, 80, 97, // registerPa - 103, 101, 40, 39, 35, 112, 97, 114, 97, 109, 39, 44, 32, 80, 97, 114, // ge('#param', Par - 97, 109, 80, 97, 103, 101, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, // amPage);. - 32, 114, 101, 103, 105, 115, 116, 101, 114, 80, 97, 103, 101, 40, 39, 35, // registerPage('# - 109, 111, 110, 105, 116, 111, 114, 39, 44, 32, 77, 111, 110, 105, 116, 111, // monitor', Monito - 114, 80, 97, 103, 101, 41, 59, 10, 10, 32, 32, 32, 32, 32, 32, 32, // rPage);.. - 32, 47, 47, 32, 230, 158, 132, 229, 187, 186, 229, 175, 188, 232, 136, 170, // // ............ - 10, 32, 32, 32, 32, 32, 32, 32, 32, 98, 117, 105, 108, 100, 78, 97, // . buildNa - 118, 40, 41, 59, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, // v();.. // - 32, 229, 136, 157, 229, 167, 139, 229, 140, 150, 32, 87, 101, 98, 83, 111, // ......... WebSo - 99, 107, 101, 116, 10, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, // cket. var - 32, 119, 115, 85, 114, 108, 32, 61, 32, 40, 108, 111, 99, 97, 116, 105, // wsUrl = (locati - 111, 110, 46, 112, 114, 111, 116, 111, 99, 111, 108, 32, 61, 61, 61, 32, // on.protocol === - 39, 104, 116, 116, 112, 115, 58, 39, 32, 63, 32, 39, 119, 115, 115, 58, // 'https:' ? 'wss: - 39, 32, 58, 32, 39, 119, 115, 58, 39, 41, 32, 43, 32, 39, 47, 47, // ' : 'ws:') + '// - 39, 32, 43, 32, 108, 111, 99, 97, 116, 105, 111, 110, 46, 104, 111, 115, // ' + location.hos - 116, 32, 43, 32, 39, 47, 119, 115, 39, 59, 10, 32, 32, 32, 32, 32, // t + '/ws';. - 32, 32, 32, 87, 115, 67, 108, 105, 101, 110, 116, 46, 99, 111, 110, 110, // WsClient.conn - 101, 99, 116, 40, 119, 115, 85, 114, 108, 41, 59, 10, 10, 32, 32, 32, // ect(wsUrl);.. - 32, 32, 32, 32, 32, 47, 47, 32, 231, 155, 145, 229, 144, 172, 32, 87, // // ...... W - 83, 32, 231, 138, 182, 230, 128, 129, 10, 32, 32, 32, 32, 32, 32, 32, // S ....... - 32, 87, 115, 67, 108, 105, 101, 110, 116, 46, 111, 110, 83, 116, 97, 116, // WsClient.onStat - 117, 115, 67, 104, 97, 110, 103, 101, 40, 102, 117, 110, 99, 116, 105, 111, // usChange(functio - 110, 40, 115, 116, 97, 116, 117, 115, 41, 32, 123, 10, 32, 32, 32, 32, // n(status) {. - 32, 32, 32, 32, 32, 32, 32, 32, 117, 112, 100, 97, 116, 101, 87, 115, // updateWs - 83, 116, 97, 116, 117, 115, 40, 115, 116, 97, 116, 117, 115, 41, 59, 10, // Status(status);. - 32, 32, 32, 32, 32, 32, 32, 32, 125, 41, 59, 10, 10, 32, 32, 32, // });.. - 32, 32, 32, 32, 32, 47, 47, 32, 231, 155, 145, 229, 144, 172, 32, 87, // // ...... W - 83, 32, 228, 184, 139, 232, 161, 140, 230, 182, 136, 230, 129, 175, 10, 32, // S ............. - 32, 32, 32, 32, 32, 32, 32, 87, 115, 67, 108, 105, 101, 110, 116, 46, // WsClient. - 111, 110, 77, 101, 115, 115, 97, 103, 101, 40, 102, 117, 110, 99, 116, 105, // onMessage(functi - 111, 110, 40, 100, 97, 116, 97, 44, 32, 114, 97, 119, 41, 32, 123, 10, // on(data, raw) {. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 111, 110, 87, 115, // onWs - 77, 101, 115, 115, 97, 103, 101, 40, 100, 97, 116, 97, 44, 32, 114, 97, // Message(data, ra - 119, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 41, 59, 10, // w);. });. - 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 232, 183, 175, 231, // . // .... - 148, 177, 229, 143, 152, 229, 140, 150, 10, 32, 32, 32, 32, 32, 32, 32, // ......... - 32, 119, 105, 110, 100, 111, 119, 46, 97, 100, 100, 69, 118, 101, 110, 116, // window.addEvent - 76, 105, 115, 116, 101, 110, 101, 114, 40, 39, 104, 97, 115, 104, 99, 104, // Listener('hashch - 97, 110, 103, 101, 39, 44, 32, 102, 117, 110, 99, 116, 105, 111, 110, 40, // ange', function( - 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ) {. - 118, 97, 114, 32, 104, 97, 115, 104, 32, 61, 32, 119, 105, 110, 100, 111, // var hash = windo - 119, 46, 108, 111, 99, 97, 116, 105, 111, 110, 46, 104, 97, 115, 104, 32, // w.location.hash - 124, 124, 32, 39, 35, 108, 111, 103, 105, 110, 39, 59, 10, 32, 32, 32, // || '#login';. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 100, 105, 115, 112, 97, 116, 99, // dispatc - 104, 40, 104, 97, 115, 104, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, // h(hash);. - 32, 125, 41, 59, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, // });.. // - 32, 231, 153, 187, 229, 135, 186, 230, 140, 137, 233, 146, 174, 10, 32, 32, // ............. - 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 108, 111, 103, 111, 117, 116, // var logout - 66, 116, 110, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, // Btn = document.g - 101, 116, 69, 108, 101, 109, 101, 110, 116, 66, 121, 73, 100, 40, 39, 110, // etElementById('n - 97, 118, 45, 108, 111, 103, 111, 117, 116, 39, 41, 59, 10, 32, 32, 32, // av-logout');. - 32, 32, 32, 32, 32, 105, 102, 32, 40, 108, 111, 103, 111, 117, 116, 66, // if (logoutB - 116, 110, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // tn) {. - 32, 32, 108, 111, 103, 111, 117, 116, 66, 116, 110, 46, 111, 110, 99, 108, // logoutBtn.oncl - 105, 99, 107, 32, 61, 32, 102, 117, 110, 99, 116, 105, 111, 110, 40, 41, // ick = function() + 45, 108, 105, 110, 107, 115, 39, 41, 59, 10, 32, 32, 32, 32, 32, 32, // -links');. + 32, 32, 105, 102, 32, 40, 33, 110, 97, 118, 41, 32, 114, 101, 116, 117, // if (!nav) retu + 114, 110, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, // rn;. var + 104, 116, 109, 108, 32, 61, 32, 39, 39, 59, 10, 32, 32, 32, 32, 32, // html = '';. + 32, 32, 32, 102, 111, 114, 32, 40, 118, 97, 114, 32, 105, 32, 61, 32, // for (var i = + 48, 59, 32, 105, 32, 60, 32, 110, 97, 118, 76, 105, 110, 107, 115, 46, // 0; i < navLinks. + 108, 101, 110, 103, 116, 104, 59, 32, 105, 43, 43, 41, 32, 123, 10, 32, // length; i++) {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 108, // var l + 105, 110, 107, 32, 61, 32, 110, 97, 118, 76, 105, 110, 107, 115, 91, 105, // ink = navLinks[i + 93, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 104, // ];. h + 116, 109, 108, 32, 43, 61, 32, 39, 60, 97, 32, 104, 114, 101, 102, 61, // tml += '' + link.label + 32, 43, 32, 39, 60, 47, 97, 62, 39, 59, 10, 32, 32, 32, 32, 32, // + '';. + 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 110, 97, 118, // }. nav + 46, 105, 110, 110, 101, 114, 72, 84, 77, 76, 32, 61, 32, 104, 116, 109, // .innerHTML = htm + 108, 59, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 102, 117, // l;. }.. fu + 110, 99, 116, 105, 111, 110, 32, 117, 112, 100, 97, 116, 101, 78, 97, 118, // nction updateNav + 65, 99, 116, 105, 118, 101, 40, 104, 97, 115, 104, 41, 32, 123, 10, 32, // Active(hash) {. + 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 108, 105, 110, 107, 115, // var links + 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 113, 117, 101, 114, // = document.quer + 121, 83, 101, 108, 101, 99, 116, 111, 114, 65, 108, 108, 40, 39, 35, 110, // ySelectorAll('#n + 97, 118, 45, 108, 105, 110, 107, 115, 32, 97, 39, 41, 59, 10, 32, 32, // av-links a');. + 32, 32, 32, 32, 32, 32, 102, 111, 114, 32, 40, 118, 97, 114, 32, 105, // for (var i + 32, 61, 32, 48, 59, 32, 105, 32, 60, 32, 108, 105, 110, 107, 115, 46, // = 0; i < links. + 108, 101, 110, 103, 116, 104, 59, 32, 105, 43, 43, 41, 32, 123, 10, 32, // length; i++) {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 108, // var l + 105, 110, 107, 72, 97, 115, 104, 32, 61, 32, 108, 105, 110, 107, 115, 91, // inkHash = links[ + 105, 93, 46, 103, 101, 116, 65, 116, 116, 114, 105, 98, 117, 116, 101, 40, // i].getAttribute( + 39, 100, 97, 116, 97, 45, 104, 97, 115, 104, 39, 41, 59, 10, 32, 32, // 'data-hash');. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 108, 105, // if (li + 110, 107, 72, 97, 115, 104, 32, 61, 61, 61, 32, 104, 97, 115, 104, 41, // nkHash === hash) 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // {. - 32, 32, 32, 108, 111, 99, 97, 108, 83, 116, 111, 114, 97, 103, 101, 46, // localStorage. - 114, 101, 109, 111, 118, 101, 73, 116, 101, 109, 40, 39, 114, 116, 117, 95, // removeItem('rtu_ - 108, 111, 103, 103, 101, 100, 95, 105, 110, 39, 41, 59, 10, 32, 32, 32, // logged_in');. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 119, 105, 110, // win - 100, 111, 119, 46, 108, 111, 99, 97, 116, 105, 111, 110, 46, 104, 97, 115, // dow.location.has - 104, 32, 61, 32, 39, 35, 108, 111, 103, 105, 110, 39, 59, 10, 32, 32, // h = '#login';. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 59, 10, 32, 32, 32, // };. - 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, // }.. - 47, 47, 32, 233, 166, 150, 230, 172, 161, 229, 138, 160, 232, 189, 189, 10, // // ............. - 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 105, 110, 105, 116, // var init - 72, 97, 115, 104, 32, 61, 32, 119, 105, 110, 100, 111, 119, 46, 108, 111, // Hash = window.lo - 99, 97, 116, 105, 111, 110, 46, 104, 97, 115, 104, 32, 124, 124, 32, 39, // cation.hash || ' - 35, 108, 111, 103, 105, 110, 39, 59, 10, 32, 32, 32, 32, 32, 32, 32, // #login';. - 32, 100, 105, 115, 112, 97, 116, 99, 104, 40, 105, 110, 105, 116, 72, 97, // dispatch(initHa - 115, 104, 41, 59, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, // sh);. }.. - 114, 101, 116, 117, 114, 110, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, // return {. - 32, 105, 110, 105, 116, 58, 32, 105, 110, 105, 116, 44, 10, 32, 32, 32, // init: init,. - 32, 32, 32, 32, 32, 100, 105, 115, 112, 97, 116, 99, 104, 58, 32, 100, // dispatch: d - 105, 115, 112, 97, 116, 99, 104, 10, 32, 32, 32, 32, 125, 59, 10, 125, // ispatch. };.} - 41, 40, 41, 59, 10, 10, 47, 47, 32, 233, 161, 181, 233, 157, 162, 229, // )();..// ....... - 138, 160, 232, 189, 189, 229, 174, 140, 230, 136, 144, 229, 144, 142, 229, 144, // ................ - 175, 229, 138, 168, 10, 100, 111, 99, 117, 109, 101, 110, 116, 46, 97, 100, // .....document.ad - 100, 69, 118, 101, 110, 116, 76, 105, 115, 116, 101, 110, 101, 114, 40, 39, // dEventListener(' - 68, 79, 77, 67, 111, 110, 116, 101, 110, 116, 76, 111, 97, 100, 101, 100, // DOMContentLoaded - 39, 44, 32, 102, 117, 110, 99, 116, 105, 111, 110, 40, 41, 32, 123, 10, // ', function() {. - 32, 32, 32, 32, 65, 112, 112, 46, 105, 110, 105, 116, 40, 41, 59, 10, // App.init();. - 125, 41, 59, 10, 0 // });. + 32, 32, 32, 108, 105, 110, 107, 115, 91, 105, 93, 46, 99, 108, 97, 115, // links[i].clas + 115, 76, 105, 115, 116, 46, 97, 100, 100, 40, 39, 97, 99, 116, 105, 118, // sList.add('activ + 101, 39, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // e');. + 32, 125, 32, 101, 108, 115, 101, 32, 123, 10, 32, 32, 32, 32, 32, 32, // } else {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 108, 105, 110, 107, 115, 91, // links[ + 105, 93, 46, 99, 108, 97, 115, 115, 76, 105, 115, 116, 46, 114, 101, 109, // i].classList.rem + 111, 118, 101, 40, 39, 97, 99, 116, 105, 118, 101, 39, 41, 59, 10, 32, // ove('active');. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, // }. + 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, // }. }.. + 32, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 104, 111, 119, 83, // function showS + 105, 100, 101, 98, 97, 114, 40, 115, 104, 111, 119, 41, 32, 123, 10, 32, // idebar(show) {. + 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 115, 105, 100, 101, 98, // var sideb + 97, 114, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, // ar = document.ge + 116, 69, 108, 101, 109, 101, 110, 116, 66, 121, 73, 100, 40, 39, 110, 97, // tElementById('na + 118, 45, 115, 105, 100, 101, 98, 97, 114, 39, 41, 59, 10, 32, 32, 32, // v-sidebar');. + 32, 32, 32, 32, 32, 105, 102, 32, 40, 115, 105, 100, 101, 98, 97, 114, // if (sidebar + 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ) {. + 115, 105, 100, 101, 98, 97, 114, 46, 115, 116, 121, 108, 101, 46, 100, 105, // sidebar.style.di + 115, 112, 108, 97, 121, 32, 61, 32, 115, 104, 111, 119, 32, 63, 32, 39, // splay = show ? ' + 102, 108, 101, 120, 39, 32, 58, 32, 39, 110, 111, 110, 101, 39, 59, 10, // flex' : 'none';. + 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, // }. + 32, 32, 118, 97, 114, 32, 109, 97, 105, 110, 32, 61, 32, 100, 111, 99, // var main = doc + 117, 109, 101, 110, 116, 46, 103, 101, 116, 69, 108, 101, 109, 101, 110, 116, // ument.getElement + 66, 121, 73, 100, 40, 39, 109, 97, 105, 110, 45, 99, 111, 110, 116, 101, // ById('main-conte + 110, 116, 39, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, // nt');. if + 32, 40, 109, 97, 105, 110, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, // (main) {. + 32, 32, 32, 32, 32, 32, 109, 97, 105, 110, 46, 115, 116, 121, 108, 101, // main.style + 46, 109, 97, 114, 103, 105, 110, 76, 101, 102, 116, 32, 61, 32, 115, 104, // .marginLeft = sh + 111, 119, 32, 63, 32, 39, 50, 50, 48, 112, 120, 39, 32, 58, 32, 39, // ow ? '220px' : ' + 48, 39, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, // 0';. }. + 32, 32, 125, 10, 10, 32, 32, 32, 32, 47, 42, 32, 45, 45, 45, 45, // }.. /* ---- + 32, 87, 83, 32, 231, 138, 182, 230, 128, 129, 230, 155, 180, 230, 150, 176, // WS ............ + 32, 45, 45, 45, 45, 32, 42, 47, 10, 32, 32, 32, 32, 102, 117, 110, // ---- */. fun + 99, 116, 105, 111, 110, 32, 117, 112, 100, 97, 116, 101, 87, 115, 83, 116, // ction updateWsSt + 97, 116, 117, 115, 40, 115, 116, 97, 116, 117, 115, 41, 32, 123, 10, 32, // atus(status) {. + 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 100, 111, 116, 32, 61, // var dot = + 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, 116, 69, 108, 101, // document.getEle + 109, 101, 110, 116, 66, 121, 73, 100, 40, 39, 110, 97, 118, 45, 115, 116, // mentById('nav-st + 97, 116, 117, 115, 45, 100, 111, 116, 39, 41, 59, 10, 32, 32, 32, 32, // atus-dot');. + 32, 32, 32, 32, 118, 97, 114, 32, 116, 101, 120, 116, 32, 61, 32, 100, // var text = d + 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, 116, 69, 108, 101, 109, 101, // ocument.getEleme + 110, 116, 66, 121, 73, 100, 40, 39, 110, 97, 118, 45, 115, 116, 97, 116, // ntById('nav-stat + 117, 115, 45, 116, 101, 120, 116, 39, 41, 59, 10, 32, 32, 32, 32, 32, // us-text');. + 32, 32, 32, 105, 102, 32, 40, 100, 111, 116, 41, 32, 123, 10, 32, 32, // if (dot) {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 100, 111, 116, 46, 99, 108, // dot.cl + 97, 115, 115, 78, 97, 109, 101, 32, 61, 32, 39, 110, 97, 118, 45, 115, // assName = 'nav-s + 116, 97, 116, 117, 115, 45, 100, 111, 116, 32, 39, 32, 43, 32, 115, 116, // tatus-dot ' + st + 97, 116, 117, 115, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, // atus;. }. + 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 116, 101, 120, 116, // if (text + 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ) {. + 118, 97, 114, 32, 109, 97, 112, 32, 61, 32, 123, 32, 99, 111, 110, 110, // var map = { conn + 101, 99, 116, 101, 100, 58, 32, 39, 229, 183, 178, 232, 191, 158, 230, 142, // ected: '........ + 165, 39, 44, 32, 100, 105, 115, 99, 111, 110, 110, 101, 99, 116, 101, 100, // .', disconnected + 58, 32, 39, 229, 183, 178, 230, 150, 173, 229, 188, 128, 39, 44, 32, 99, // : '.........', c + 111, 110, 110, 101, 99, 116, 105, 110, 103, 58, 32, 39, 232, 191, 158, 230, // onnecting: '.... + 142, 165, 228, 184, 173, 46, 46, 46, 39, 32, 125, 59, 10, 32, 32, 32, // ........' };. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 101, 120, 116, 46, 116, 101, // text.te + 120, 116, 67, 111, 110, 116, 101, 110, 116, 32, 61, 32, 109, 97, 112, 91, // xtContent = map[ + 115, 116, 97, 116, 117, 115, 93, 32, 124, 124, 32, 115, 116, 97, 116, 117, // status] || statu + 115, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, // s;. }. + 32, 125, 10, 10, 32, 32, 32, 32, 47, 42, 32, 45, 45, 45, 45, 32, // }.. /* ---- + 232, 183, 175, 231, 148, 177, 232, 176, 131, 229, 186, 166, 32, 45, 45, 45, // ............ --- + 45, 32, 42, 47, 10, 32, 32, 32, 32, 102, 117, 110, 99, 116, 105, 111, // - */. functio + 110, 32, 100, 105, 115, 112, 97, 116, 99, 104, 40, 104, 97, 115, 104, 41, // n dispatch(hash) + 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 230, 156, // {. // .. + 170, 231, 153, 187, 229, 189, 149, 32, 226, 134, 146, 32, 232, 183, 179, 232, // ....... ... .... + 189, 172, 229, 136, 176, 32, 108, 111, 103, 105, 110, 10, 32, 32, 32, 32, // ..... login. + 32, 32, 32, 32, 105, 102, 32, 40, 104, 97, 115, 104, 32, 33, 61, 61, // if (hash !== + 32, 39, 35, 108, 111, 103, 105, 110, 39, 32, 38, 38, 32, 33, 108, 111, // '#login' && !lo + 99, 97, 108, 83, 116, 111, 114, 97, 103, 101, 46, 103, 101, 116, 73, 116, // calStorage.getIt + 101, 109, 40, 39, 114, 116, 117, 95, 108, 111, 103, 103, 101, 100, 95, 105, // em('rtu_logged_i + 110, 39, 41, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // n')) {. + 32, 32, 32, 119, 105, 110, 100, 111, 119, 46, 108, 111, 99, 97, 116, 105, // window.locati + 111, 110, 46, 104, 97, 115, 104, 32, 61, 32, 39, 35, 108, 111, 103, 105, // on.hash = '#logi + 110, 39, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // n';. + 114, 101, 116, 117, 114, 110, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, // return;. + 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 229, 183, // }.. // .. + 178, 231, 153, 187, 229, 189, 149, 228, 189, 134, 232, 174, 191, 233, 151, 174, // ................ + 32, 108, 111, 103, 105, 110, 32, 226, 134, 146, 32, 232, 183, 179, 232, 189, // login ... ..... + 172, 229, 136, 176, 32, 100, 97, 115, 104, 98, 111, 97, 114, 100, 10, 32, // .... dashboard. + 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 104, 97, 115, 104, 32, // if (hash + 61, 61, 61, 32, 39, 35, 108, 111, 103, 105, 110, 39, 32, 38, 38, 32, // === '#login' && + 108, 111, 99, 97, 108, 83, 116, 111, 114, 97, 103, 101, 46, 103, 101, 116, // localStorage.get + 73, 116, 101, 109, 40, 39, 114, 116, 117, 95, 108, 111, 103, 103, 101, 100, // Item('rtu_logged + 95, 105, 110, 39, 41, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, // _in')) {. + 32, 32, 32, 32, 32, 119, 105, 110, 100, 111, 119, 46, 108, 111, 99, 97, // window.loca + 116, 105, 111, 110, 46, 104, 97, 115, 104, 32, 61, 32, 39, 35, 100, 97, // tion.hash = '#da + 115, 104, 98, 111, 97, 114, 100, 39, 59, 10, 32, 32, 32, 32, 32, 32, // shboard';. + 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 59, 10, 32, 32, // return;. + 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, // }.. + 32, 105, 102, 32, 40, 104, 97, 115, 104, 32, 61, 61, 61, 32, 99, 117, // if (hash === cu + 114, 114, 101, 110, 116, 72, 97, 115, 104, 32, 38, 38, 32, 99, 117, 114, // rrentHash && cur + 114, 101, 110, 116, 80, 97, 103, 101, 41, 32, 114, 101, 116, 117, 114, 110, // rentPage) return + 59, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 99, // ;.. var c + 111, 110, 116, 97, 105, 110, 101, 114, 32, 61, 32, 100, 111, 99, 117, 109, // ontainer = docum + 101, 110, 116, 46, 103, 101, 116, 69, 108, 101, 109, 101, 110, 116, 66, 121, // ent.getElementBy + 73, 100, 40, 39, 112, 97, 103, 101, 45, 99, 111, 110, 116, 97, 105, 110, // Id('page-contain + 101, 114, 39, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, // er');. if + 32, 40, 33, 99, 111, 110, 116, 97, 105, 110, 101, 114, 41, 32, 114, 101, // (!container) re + 116, 117, 114, 110, 59, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, // turn;.. / + 47, 32, 231, 166, 187, 229, 188, 128, 230, 151, 167, 233, 161, 181, 233, 157, // / .............. + 162, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 99, 117, // .. if (cu + 114, 114, 101, 110, 116, 80, 97, 103, 101, 32, 38, 38, 32, 99, 117, 114, // rrentPage && cur + 114, 101, 110, 116, 80, 97, 103, 101, 46, 111, 110, 76, 101, 97, 118, 101, // rentPage.onLeave + 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ) {. + 99, 117, 114, 114, 101, 110, 116, 80, 97, 103, 101, 46, 111, 110, 76, 101, // currentPage.onLe + 97, 118, 101, 40, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, // ave();. } + 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 230, 184, 178, // .. // ... + 230, 159, 147, 230, 150, 176, 233, 161, 181, 233, 157, 162, 10, 32, 32, 32, // ............. + 32, 32, 32, 32, 32, 118, 97, 114, 32, 112, 97, 103, 101, 32, 61, 32, // var page = + 112, 97, 103, 101, 115, 91, 104, 97, 115, 104, 93, 59, 10, 32, 32, 32, // pages[hash];. + 32, 32, 32, 32, 32, 105, 102, 32, 40, 33, 112, 97, 103, 101, 41, 32, // if (!page) + 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, // {. // + 32, 233, 187, 152, 232, 174, 164, 232, 183, 179, 232, 189, 172, 229, 136, 176, // ............... + 32, 108, 111, 103, 105, 110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // login. + 32, 32, 32, 119, 105, 110, 100, 111, 119, 46, 108, 111, 99, 97, 116, 105, // window.locati + 111, 110, 46, 104, 97, 115, 104, 32, 61, 32, 39, 35, 108, 111, 103, 105, // on.hash = '#logi + 110, 39, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // n';. + 114, 101, 116, 117, 114, 110, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, // return;. + 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99, 111, 110, 116, 97, // }.. conta + 105, 110, 101, 114, 46, 105, 110, 110, 101, 114, 72, 84, 77, 76, 32, 61, // iner.innerHTML = + 32, 39, 39, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 112, 97, 103, // '';. pag + 101, 46, 114, 101, 110, 100, 101, 114, 40, 99, 111, 110, 116, 97, 105, 110, // e.render(contain + 101, 114, 41, 59, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, // er);.. if + 32, 40, 112, 97, 103, 101, 46, 111, 110, 69, 110, 116, 101, 114, 41, 32, // (page.onEnter) + 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 112, 97, // {. pa + 103, 101, 46, 111, 110, 69, 110, 116, 101, 114, 40, 41, 59, 10, 32, 32, // ge.onEnter();. + 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, // }.. + 32, 47, 47, 32, 233, 161, 181, 233, 157, 162, 232, 191, 155, 229, 133, 165, // // ............ + 229, 144, 142, 231, 171, 139, 229, 141, 179, 230, 142, 168, 233, 128, 129, 231, // ................ + 188, 147, 229, 173, 152, 230, 149, 176, 230, 141, 174, 239, 188, 136, 229, 166, // ................ + 130, 230, 156, 137, 239, 188, 137, 10, 32, 32, 32, 32, 32, 32, 32, 32, // ........ + 118, 97, 114, 32, 115, 116, 77, 97, 112, 32, 61, 32, 123, 32, 39, 35, // var stMap = { '# + 111, 117, 116, 39, 58, 32, 39, 111, 117, 116, 39, 44, 32, 39, 35, 105, // out': 'out', '#i + 110, 39, 58, 32, 39, 105, 110, 39, 44, 32, 39, 35, 121, 107, 39, 58, // n': 'in', '#yk': + 32, 39, 121, 107, 39, 44, 32, 39, 35, 97, 111, 39, 58, 32, 39, 97, // 'yk', '#ao': 'a + 111, 39, 44, 32, 39, 35, 112, 97, 114, 97, 109, 39, 58, 32, 39, 112, // o', '#param': 'p + 97, 114, 97, 109, 39, 32, 125, 59, 10, 32, 32, 32, 32, 32, 32, 32, // aram' };. + 32, 118, 97, 114, 32, 115, 116, 32, 61, 32, 115, 116, 77, 97, 112, 91, // var st = stMap[ + 104, 97, 115, 104, 93, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, // hash];. i + 102, 32, 40, 115, 116, 32, 38, 38, 32, 112, 97, 103, 101, 46, 111, 110, // f (st && page.on + 68, 97, 116, 97, 32, 38, 38, 32, 108, 97, 115, 116, 68, 97, 116, 97, // Data && lastData + 67, 97, 99, 104, 101, 91, 115, 116, 93, 41, 32, 123, 10, 32, 32, 32, // Cache[st]) {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 112, 97, 103, 101, 46, 111, 110, // page.on + 68, 97, 116, 97, 40, 108, 97, 115, 116, 68, 97, 116, 97, 67, 97, 99, // Data(lastDataCac + 104, 101, 91, 115, 116, 93, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, // he[st]);. + 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99, 117, 114, 114, // }.. curr + 101, 110, 116, 80, 97, 103, 101, 32, 61, 32, 112, 97, 103, 101, 59, 10, // entPage = page;. + 32, 32, 32, 32, 32, 32, 32, 32, 99, 117, 114, 114, 101, 110, 116, 72, // currentH + 97, 115, 104, 32, 61, 32, 104, 97, 115, 104, 59, 10, 10, 32, 32, 32, // ash = hash;.. + 32, 32, 32, 32, 32, 47, 47, 32, 230, 155, 180, 230, 150, 176, 229, 175, // // ........ + 188, 232, 136, 170, 10, 32, 32, 32, 32, 32, 32, 32, 32, 117, 112, 100, // ..... upd + 97, 116, 101, 78, 97, 118, 65, 99, 116, 105, 118, 101, 40, 104, 97, 115, // ateNavActive(has + 104, 41, 59, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, // h);.. // + 231, 153, 187, 229, 189, 149, 233, 161, 181, 233, 154, 144, 232, 151, 143, 228, // ................ + 190, 167, 232, 190, 185, 230, 160, 143, 10, 32, 32, 32, 32, 32, 32, 32, // ......... + 32, 105, 102, 32, 40, 104, 97, 115, 104, 32, 61, 61, 61, 32, 39, 35, // if (hash === '# + 108, 111, 103, 105, 110, 39, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, // login') {. + 32, 32, 32, 32, 32, 32, 115, 104, 111, 119, 83, 105, 100, 101, 98, 97, // showSideba + 114, 40, 102, 97, 108, 115, 101, 41, 59, 10, 32, 32, 32, 32, 32, 32, // r(false);. + 32, 32, 32, 32, 32, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 98, // document.b + 111, 100, 121, 46, 99, 108, 97, 115, 115, 76, 105, 115, 116, 46, 97, 100, // ody.classList.ad + 100, 40, 39, 108, 111, 103, 105, 110, 45, 112, 97, 103, 101, 39, 41, 59, // d('login-page'); + 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 32, 101, 108, 115, 101, 32, // . } else + 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 104, // {. sh + 111, 119, 83, 105, 100, 101, 98, 97, 114, 40, 116, 114, 117, 101, 41, 59, // owSidebar(true); + 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 100, 111, 99, // . doc + 117, 109, 101, 110, 116, 46, 98, 111, 100, 121, 46, 99, 108, 97, 115, 115, // ument.body.class + 76, 105, 115, 116, 46, 114, 101, 109, 111, 118, 101, 40, 39, 108, 111, 103, // List.remove('log + 105, 110, 45, 112, 97, 103, 101, 39, 41, 59, 10, 32, 32, 32, 32, 32, // in-page');. + 32, 32, 32, 125, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, // }. }.. + 47, 42, 32, 45, 45, 45, 45, 32, 230, 149, 176, 230, 141, 174, 231, 188, // /* ---- ........ + 147, 229, 173, 152, 239, 188, 154, 228, 191, 157, 231, 149, 153, 230, 175, 143, // ................ + 231, 167, 141, 228, 191, 161, 229, 143, 183, 231, 177, 187, 229, 158, 139, 231, // ................ + 154, 132, 230, 156, 128, 229, 144, 142, 230, 149, 176, 230, 141, 174, 239, 188, // ................ + 140, 229, 136, 135, 230, 141, 162, 233, 161, 181, 233, 157, 162, 230, 151, 182, // ................ + 231, 171, 139, 229, 141, 179, 230, 129, 162, 229, 164, 141, 32, 45, 45, 45, // ............ --- + 45, 32, 42, 47, 10, 32, 32, 32, 32, 118, 97, 114, 32, 108, 97, 115, // - */. var las + 116, 68, 97, 116, 97, 67, 97, 99, 104, 101, 32, 61, 32, 123, 125, 59, // tDataCache = {}; + 10, 10, 32, 32, 32, 32, 47, 42, 32, 45, 45, 45, 45, 32, 87, 83, // .. /* ---- WS + 32, 228, 184, 139, 232, 161, 140, 230, 149, 176, 230, 141, 174, 229, 136, 134, // ............... + 229, 143, 145, 32, 45, 45, 45, 45, 32, 42, 47, 10, 32, 32, 32, 32, // ... ---- */. + 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 110, 87, 115, 77, 101, 115, // function onWsMes + 115, 97, 103, 101, 40, 100, 97, 116, 97, 44, 32, 114, 97, 119, 41, 32, // sage(data, raw) + 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 114, 97, // {. if (ra + 119, 32, 105, 110, 115, 116, 97, 110, 99, 101, 111, 102, 32, 65, 114, 114, // w instanceof Arr + 97, 121, 66, 117, 102, 102, 101, 114, 32, 38, 38, 32, 99, 117, 114, 114, // ayBuffer && curr + 101, 110, 116, 80, 97, 103, 101, 32, 38, 38, 32, 99, 117, 114, 114, 101, // entPage && curre + 110, 116, 80, 97, 103, 101, 46, 111, 110, 66, 105, 110, 97, 114, 121, 41, // ntPage.onBinary) + 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, // {. c + 117, 114, 114, 101, 110, 116, 80, 97, 103, 101, 46, 111, 110, 66, 105, 110, // urrentPage.onBin + 97, 114, 121, 40, 114, 97, 119, 41, 59, 10, 32, 32, 32, 32, 32, 32, // ary(raw);. + 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 59, 10, 32, 32, // return;. + 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, // }.. + 32, 105, 102, 32, 40, 33, 100, 97, 116, 97, 32, 124, 124, 32, 116, 121, // if (!data || ty + 112, 101, 111, 102, 32, 100, 97, 116, 97, 32, 33, 61, 61, 32, 39, 111, // peof data !== 'o + 98, 106, 101, 99, 116, 39, 41, 32, 114, 101, 116, 117, 114, 110, 59, 10, // bject') return;. + 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 100, 97, 116, // . if (dat + 97, 46, 116, 121, 112, 101, 32, 61, 61, 61, 32, 39, 99, 109, 100, 95, // a.type === 'cmd_ + 114, 115, 112, 39, 32, 38, 38, 32, 99, 117, 114, 114, 101, 110, 116, 80, // rsp' && currentP + 97, 103, 101, 32, 38, 38, 32, 99, 117, 114, 114, 101, 110, 116, 80, 97, // age && currentPa + 103, 101, 46, 111, 110, 68, 97, 116, 97, 41, 32, 123, 10, 32, 32, 32, // ge.onData) {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 117, 114, 114, 101, 110, 116, // current + 80, 97, 103, 101, 46, 111, 110, 68, 97, 116, 97, 40, 100, 97, 116, 97, // Page.onData(data + 46, 100, 97, 116, 97, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, // .data);. + 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 59, 10, 32, 32, 32, 32, // return;. + 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 118, // }.. v + 97, 114, 32, 115, 105, 103, 110, 97, 108, 84, 121, 112, 101, 115, 32, 61, // ar signalTypes = + 32, 91, 39, 111, 117, 116, 39, 44, 32, 39, 105, 110, 39, 44, 32, 39, // ['out', 'in', ' + 121, 107, 39, 44, 32, 39, 97, 111, 39, 44, 32, 39, 112, 97, 114, 97, // yk', 'ao', 'para + 109, 39, 93, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 102, 111, 114, // m'];. for + 32, 40, 118, 97, 114, 32, 105, 32, 61, 32, 48, 59, 32, 105, 32, 60, // (var i = 0; i < + 32, 115, 105, 103, 110, 97, 108, 84, 121, 112, 101, 115, 46, 108, 101, 110, // signalTypes.len + 103, 116, 104, 59, 32, 105, 43, 43, 41, 32, 123, 10, 32, 32, 32, 32, // gth; i++) {. + 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 115, 116, 32, 61, // var st = + 32, 115, 105, 103, 110, 97, 108, 84, 121, 112, 101, 115, 91, 105, 93, 59, // signalTypes[i]; + 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, // . if + 40, 100, 97, 116, 97, 91, 115, 116, 93, 41, 32, 123, 10, 32, 32, 32, // (data[st]) {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 108, 97, 115, // las + 116, 68, 97, 116, 97, 67, 97, 99, 104, 101, 91, 115, 116, 93, 32, 61, // tDataCache[st] = + 32, 100, 97, 116, 97, 91, 115, 116, 93, 59, 10, 32, 32, 32, 32, 32, // data[st];. + 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, // }. + 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 228, // }.. // . + 187, 133, 229, 144, 145, 229, 189, 147, 229, 137, 141, 233, 161, 181, 233, 157, // ................ + 162, 230, 142, 168, 233, 128, 129, 229, 175, 185, 229, 186, 148, 231, 177, 187, // ................ + 229, 158, 139, 231, 154, 132, 230, 149, 176, 230, 141, 174, 10, 32, 32, 32, // ............. + 32, 32, 32, 32, 32, 118, 97, 114, 32, 115, 105, 103, 110, 97, 108, 84, // var signalT + 121, 112, 101, 77, 97, 112, 32, 61, 32, 123, 10, 32, 32, 32, 32, 32, // ypeMap = {. + 32, 32, 32, 32, 32, 32, 32, 39, 35, 111, 117, 116, 39, 58, 32, 39, // '#out': ' + 111, 117, 116, 39, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // out',. + 32, 32, 39, 35, 105, 110, 39, 58, 32, 39, 105, 110, 39, 44, 10, 32, // '#in': 'in',. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 39, 35, 121, 107, 39, // '#yk' + 58, 32, 39, 121, 107, 39, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, // : 'yk',. + 32, 32, 32, 32, 39, 35, 97, 111, 39, 58, 32, 39, 97, 111, 39, 44, // '#ao': 'ao', + 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 39, 35, 112, // . '#p + 97, 114, 97, 109, 39, 58, 32, 39, 112, 97, 114, 97, 109, 39, 10, 32, // aram': 'param'. + 32, 32, 32, 32, 32, 32, 32, 125, 59, 10, 10, 32, 32, 32, 32, 32, // };.. + 32, 32, 32, 118, 97, 114, 32, 115, 105, 103, 110, 97, 108, 84, 121, 112, // var signalTyp + 101, 32, 61, 32, 115, 105, 103, 110, 97, 108, 84, 121, 112, 101, 77, 97, // e = signalTypeMa + 112, 91, 99, 117, 114, 114, 101, 110, 116, 72, 97, 115, 104, 93, 59, 10, // p[currentHash];. + 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 115, 105, 103, 110, // if (sign + 97, 108, 84, 121, 112, 101, 32, 38, 38, 32, 99, 117, 114, 114, 101, 110, // alType && curren + 116, 80, 97, 103, 101, 32, 38, 38, 32, 99, 117, 114, 114, 101, 110, 116, // tPage && current + 80, 97, 103, 101, 46, 111, 110, 68, 97, 116, 97, 32, 38, 38, 32, 100, // Page.onData && d + 97, 116, 97, 91, 115, 105, 103, 110, 97, 108, 84, 121, 112, 101, 93, 41, // ata[signalType]) + 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, // {. c + 117, 114, 114, 101, 110, 116, 80, 97, 103, 101, 46, 111, 110, 68, 97, 116, // urrentPage.onDat + 97, 40, 100, 97, 116, 97, 91, 115, 105, 103, 110, 97, 108, 84, 121, 112, // a(data[signalTyp + 101, 93, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, // e]);. }. + 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 47, 42, 32, 45, 45, 45, // }.. /* --- + 45, 32, 229, 136, 157, 229, 167, 139, 229, 140, 150, 32, 45, 45, 45, 45, // - ......... ---- + 32, 42, 47, 10, 32, 32, 32, 32, 102, 117, 110, 99, 116, 105, 111, 110, // */. function + 32, 105, 110, 105, 116, 40, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, // init() {. + 32, 32, 47, 47, 32, 230, 179, 168, 229, 134, 140, 233, 161, 181, 233, 157, // // ........... + 162, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 103, 105, 115, 116, // .. regist + 101, 114, 80, 97, 103, 101, 40, 39, 35, 108, 111, 103, 105, 110, 39, 44, // erPage('#login', + 32, 76, 111, 103, 105, 110, 80, 97, 103, 101, 41, 59, 10, 32, 32, 32, // LoginPage);. + 32, 32, 32, 32, 32, 114, 101, 103, 105, 115, 116, 101, 114, 80, 97, 103, // registerPag + 101, 40, 39, 35, 100, 97, 115, 104, 98, 111, 97, 114, 100, 39, 44, 32, // e('#dashboard', + 68, 97, 115, 104, 98, 111, 97, 114, 100, 80, 97, 103, 101, 41, 59, 10, // DashboardPage);. + 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 103, 105, 115, 116, 101, 114, // register + 80, 97, 103, 101, 40, 39, 35, 111, 117, 116, 39, 44, 32, 79, 117, 116, // Page('#out', Out + 80, 97, 103, 101, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114, // Page);. r + 101, 103, 105, 115, 116, 101, 114, 80, 97, 103, 101, 40, 39, 35, 105, 110, // egisterPage('#in + 39, 44, 32, 73, 110, 80, 97, 103, 101, 41, 59, 10, 32, 32, 32, 32, // ', InPage);. + 32, 32, 32, 32, 114, 101, 103, 105, 115, 116, 101, 114, 80, 97, 103, 101, // registerPage + 40, 39, 35, 121, 107, 39, 44, 32, 89, 107, 80, 97, 103, 101, 41, 59, // ('#yk', YkPage); + 10, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 103, 105, 115, 116, 101, // . registe + 114, 80, 97, 103, 101, 40, 39, 35, 97, 111, 39, 44, 32, 65, 111, 80, // rPage('#ao', AoP + 97, 103, 101, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, // age);. re + 103, 105, 115, 116, 101, 114, 80, 97, 103, 101, 40, 39, 35, 112, 97, 114, // gisterPage('#par + 97, 109, 39, 44, 32, 80, 97, 114, 97, 109, 80, 97, 103, 101, 41, 59, // am', ParamPage); + 10, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 103, 105, 115, 116, 101, // . registe + 114, 80, 97, 103, 101, 40, 39, 35, 109, 111, 110, 105, 116, 111, 114, 39, // rPage('#monitor' + 44, 32, 77, 111, 110, 105, 116, 111, 114, 80, 97, 103, 101, 41, 59, 10, // , MonitorPage);. + 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 103, 105, 115, 116, 101, 114, // register + 80, 97, 103, 101, 40, 39, 35, 116, 101, 114, 109, 105, 110, 97, 108, 39, // Page('#terminal' + 44, 32, 84, 101, 114, 109, 105, 110, 97, 108, 80, 97, 103, 101, 41, 59, // , TerminalPage); + 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 230, 158, 132, // .. // ... + 229, 187, 186, 229, 175, 188, 232, 136, 170, 10, 32, 32, 32, 32, 32, 32, // .......... + 32, 32, 98, 117, 105, 108, 100, 78, 97, 118, 40, 41, 59, 10, 10, 32, // buildNav();.. + 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 229, 136, 157, 229, 167, 139, // // ...... + 229, 140, 150, 32, 87, 101, 98, 83, 111, 99, 107, 101, 116, 10, 32, 32, // ... WebSocket. + 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 119, 115, 85, 114, 108, 32, // var wsUrl + 61, 32, 40, 108, 111, 99, 97, 116, 105, 111, 110, 46, 112, 114, 111, 116, // = (location.prot + 111, 99, 111, 108, 32, 61, 61, 61, 32, 39, 104, 116, 116, 112, 115, 58, // ocol === 'https: + 39, 32, 63, 32, 39, 119, 115, 115, 58, 39, 32, 58, 32, 39, 119, 115, // ' ? 'wss:' : 'ws + 58, 39, 41, 32, 43, 32, 39, 47, 47, 39, 32, 43, 32, 108, 111, 99, // :') + '//' + loc + 97, 116, 105, 111, 110, 46, 104, 111, 115, 116, 32, 43, 32, 39, 47, 119, // ation.host + '/w + 115, 39, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 87, 115, 67, 108, // s';. WsCl + 105, 101, 110, 116, 46, 99, 111, 110, 110, 101, 99, 116, 40, 119, 115, 85, // ient.connect(wsU + 114, 108, 41, 59, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, // rl);.. // + 32, 231, 155, 145, 229, 144, 172, 32, 87, 83, 32, 231, 138, 182, 230, 128, // ...... WS ..... + 129, 10, 32, 32, 32, 32, 32, 32, 32, 32, 87, 115, 67, 108, 105, 101, // .. WsClie + 110, 116, 46, 111, 110, 83, 116, 97, 116, 117, 115, 67, 104, 97, 110, 103, // nt.onStatusChang + 101, 40, 102, 117, 110, 99, 116, 105, 111, 110, 40, 115, 116, 97, 116, 117, // e(function(statu + 115, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // s) {. + 32, 117, 112, 100, 97, 116, 101, 87, 115, 83, 116, 97, 116, 117, 115, 40, // updateWsStatus( + 115, 116, 97, 116, 117, 115, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, // status);. + 32, 125, 41, 59, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, // });.. // + 32, 231, 155, 145, 229, 144, 172, 32, 87, 83, 32, 228, 184, 139, 232, 161, // ...... WS ..... + 140, 230, 182, 136, 230, 129, 175, 10, 32, 32, 32, 32, 32, 32, 32, 32, // ........ + 87, 115, 67, 108, 105, 101, 110, 116, 46, 111, 110, 77, 101, 115, 115, 97, // WsClient.onMessa + 103, 101, 40, 102, 117, 110, 99, 116, 105, 111, 110, 40, 100, 97, 116, 97, // ge(function(data + 44, 32, 114, 97, 119, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, // , raw) {. + 32, 32, 32, 32, 32, 111, 110, 87, 115, 77, 101, 115, 115, 97, 103, 101, // onWsMessage + 40, 100, 97, 116, 97, 44, 32, 114, 97, 119, 41, 59, 10, 32, 32, 32, // (data, raw);. + 32, 32, 32, 32, 32, 125, 41, 59, 10, 10, 32, 32, 32, 32, 32, 32, // });.. + 32, 32, 47, 47, 32, 232, 183, 175, 231, 148, 177, 229, 143, 152, 229, 140, // // ........... + 150, 10, 32, 32, 32, 32, 32, 32, 32, 32, 119, 105, 110, 100, 111, 119, // .. window + 46, 97, 100, 100, 69, 118, 101, 110, 116, 76, 105, 115, 116, 101, 110, 101, // .addEventListene + 114, 40, 39, 104, 97, 115, 104, 99, 104, 97, 110, 103, 101, 39, 44, 32, // r('hashchange', + 102, 117, 110, 99, 116, 105, 111, 110, 40, 41, 32, 123, 10, 32, 32, 32, // function() {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 104, 97, 115, // var has + 104, 32, 61, 32, 119, 105, 110, 100, 111, 119, 46, 108, 111, 99, 97, 116, // h = window.locat + 105, 111, 110, 46, 104, 97, 115, 104, 32, 124, 124, 32, 39, 35, 108, 111, // ion.hash || '#lo + 103, 105, 110, 39, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // gin';. + 32, 32, 100, 105, 115, 112, 97, 116, 99, 104, 40, 104, 97, 115, 104, 41, // dispatch(hash) + 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 41, 59, 10, 10, 32, // ;. });.. + 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 231, 153, 187, 229, 135, 186, // // ...... + 230, 140, 137, 233, 146, 174, 10, 32, 32, 32, 32, 32, 32, 32, 32, 118, // ....... v + 97, 114, 32, 108, 111, 103, 111, 117, 116, 66, 116, 110, 32, 61, 32, 100, // ar logoutBtn = d + 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, 116, 69, 108, 101, 109, 101, // ocument.getEleme + 110, 116, 66, 121, 73, 100, 40, 39, 110, 97, 118, 45, 108, 111, 103, 111, // ntById('nav-logo + 117, 116, 39, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, // ut');. if + 32, 40, 108, 111, 103, 111, 117, 116, 66, 116, 110, 41, 32, 123, 10, 32, // (logoutBtn) {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 108, 111, 103, 111, 117, // logou + 116, 66, 116, 110, 46, 111, 110, 99, 108, 105, 99, 107, 32, 61, 32, 102, // tBtn.onclick = f + 117, 110, 99, 116, 105, 111, 110, 40, 41, 32, 123, 10, 32, 32, 32, 32, // unction() {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 108, 111, 99, 97, // loca + 108, 83, 116, 111, 114, 97, 103, 101, 46, 114, 101, 109, 111, 118, 101, 73, // lStorage.removeI + 116, 101, 109, 40, 39, 114, 116, 117, 95, 108, 111, 103, 103, 101, 100, 95, // tem('rtu_logged_ + 105, 110, 39, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // in');. + 32, 32, 32, 32, 32, 32, 119, 105, 110, 100, 111, 119, 46, 108, 111, 99, // window.loc + 97, 116, 105, 111, 110, 46, 104, 97, 115, 104, 32, 61, 32, 39, 35, 108, // ation.hash = '#l + 111, 103, 105, 110, 39, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ogin';. + 32, 32, 32, 125, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, // };. }. + 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 233, 166, 150, 230, // . // .... + 172, 161, 229, 138, 160, 232, 189, 189, 10, 32, 32, 32, 32, 32, 32, 32, // ......... + 32, 118, 97, 114, 32, 105, 110, 105, 116, 72, 97, 115, 104, 32, 61, 32, // var initHash = + 119, 105, 110, 100, 111, 119, 46, 108, 111, 99, 97, 116, 105, 111, 110, 46, // window.location. + 104, 97, 115, 104, 32, 124, 124, 32, 39, 35, 108, 111, 103, 105, 110, 39, // hash || '#login' + 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 100, 105, 115, 112, 97, 116, // ;. dispat + 99, 104, 40, 105, 110, 105, 116, 72, 97, 115, 104, 41, 59, 10, 32, 32, // ch(initHash);. + 32, 32, 125, 10, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, // }.. return + 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 110, 105, 116, 58, 32, // {. init: + 105, 110, 105, 116, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 100, 105, // init,. di + 115, 112, 97, 116, 99, 104, 58, 32, 100, 105, 115, 112, 97, 116, 99, 104, // spatch: dispatch + 10, 32, 32, 32, 32, 125, 59, 10, 125, 41, 40, 41, 59, 10, 10, 47, // . };.})();../ + 47, 32, 233, 161, 181, 233, 157, 162, 229, 138, 160, 232, 189, 189, 229, 174, // / .............. + 140, 230, 136, 144, 229, 144, 142, 229, 144, 175, 229, 138, 168, 10, 100, 111, // ..............do + 99, 117, 109, 101, 110, 116, 46, 97, 100, 100, 69, 118, 101, 110, 116, 76, // cument.addEventL + 105, 115, 116, 101, 110, 101, 114, 40, 39, 68, 79, 77, 67, 111, 110, 116, // istener('DOMCont + 101, 110, 116, 76, 111, 97, 100, 101, 100, 39, 44, 32, 102, 117, 110, 99, // entLoaded', func + 116, 105, 111, 110, 40, 41, 32, 123, 10, 32, 32, 32, 32, 65, 112, 112, // tion() {. App + 46, 105, 110, 105, 116, 40, 41, 59, 10, 125, 41, 59, 10, 0 // .init();.});. }; static const unsigned char v6[] = { 47, 42, 42, 10, 32, 42, 32, 109, 111, 110, 105, 116, 111, 114, 46, 106, // /**. * monitor.j @@ -3191,7 +3285,208 @@ static const unsigned char v7[] = { 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, // }. 32, 32, 32, 32, 32, 32, 101, 120, 112, 97, 110, 100, 101, 100, 83, 101, // expandedSe 116, 32, 61, 32, 123, 125, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, // t = {};. - 125, 10, 32, 32, 32, 32, 125, 59, 10, 125, 41, 40, 41, 59, 10, 0 // }. };.})();. + 125, 10, 32, 32, 32, 32, 125, 59, 10, 125, 41, 40, 41, 59, 10, 10, // }. };.})();.. + 10, 47, 42, 32, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, // ./* ============ + 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, // ================ + 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, // ================ + 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, // ================ + 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 10, 32, 42, 32, // ============. * + 229, 145, 189, 228, 187, 164, 231, 187, 136, 231, 171, 175, 233, 161, 181, 233, // ................ + 157, 162, 10, 32, 42, 32, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, // ... * ========== + 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, // ================ + 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, // ================ + 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, // ================ + 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 32, 42, // ============== * + 47, 10, 118, 97, 114, 32, 84, 101, 114, 109, 105, 110, 97, 108, 80, 97, // /.var TerminalPa + 103, 101, 32, 61, 32, 40, 102, 117, 110, 99, 116, 105, 111, 110, 40, 41, // ge = (function() + 32, 123, 10, 32, 32, 32, 32, 118, 97, 114, 32, 104, 105, 115, 116, 111, // {. var histo + 114, 121, 32, 61, 32, 91, 93, 59, 10, 32, 32, 32, 32, 118, 97, 114, // ry = [];. var + 32, 104, 105, 115, 116, 111, 114, 121, 73, 100, 120, 32, 61, 32, 48, 59, // historyIdx = 0; + 10, 10, 32, 32, 32, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 97, // .. function a + 112, 112, 101, 110, 100, 40, 116, 101, 120, 116, 44, 32, 99, 108, 115, 41, // ppend(text, cls) + 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 101, // {. var e + 108, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, 116, // l = document.get + 69, 108, 101, 109, 101, 110, 116, 66, 121, 73, 100, 40, 39, 116, 101, 114, // ElementById('ter + 109, 45, 111, 117, 116, 112, 117, 116, 39, 41, 59, 10, 32, 32, 32, 32, // m-output');. + 32, 32, 32, 32, 105, 102, 32, 40, 33, 101, 108, 41, 32, 114, 101, 116, // if (!el) ret + 117, 114, 110, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, // urn;. var + 32, 100, 105, 118, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, // div = document. + 99, 114, 101, 97, 116, 101, 69, 108, 101, 109, 101, 110, 116, 40, 39, 100, // createElement('d + 105, 118, 39, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 100, 105, // iv');. di + 118, 46, 99, 108, 97, 115, 115, 78, 97, 109, 101, 32, 61, 32, 99, 108, // v.className = cl + 115, 32, 124, 124, 32, 39, 39, 59, 10, 32, 32, 32, 32, 32, 32, 32, // s || '';. + 32, 100, 105, 118, 46, 116, 101, 120, 116, 67, 111, 110, 116, 101, 110, 116, // div.textContent + 32, 61, 32, 116, 101, 120, 116, 59, 10, 32, 32, 32, 32, 32, 32, 32, // = text;. + 32, 101, 108, 46, 97, 112, 112, 101, 110, 100, 67, 104, 105, 108, 100, 40, // el.appendChild( + 100, 105, 118, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 101, 108, // div);. el + 46, 115, 99, 114, 111, 108, 108, 84, 111, 112, 32, 61, 32, 101, 108, 46, // .scrollTop = el. + 115, 99, 114, 111, 108, 108, 72, 101, 105, 103, 104, 116, 59, 10, 32, 32, // scrollHeight;. + 32, 32, 125, 10, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, // }.. return + 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 110, 100, 101, 114, // {. render + 58, 32, 102, 117, 110, 99, 116, 105, 111, 110, 40, 99, 111, 110, 116, 97, // : function(conta + 105, 110, 101, 114, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, // iner) {. + 32, 32, 32, 32, 104, 105, 115, 116, 111, 114, 121, 32, 61, 32, 91, 93, // history = [] + 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 104, 105, // ;. hi + 115, 116, 111, 114, 121, 73, 100, 120, 32, 61, 32, 48, 59, 10, 32, 32, // storyIdx = 0;. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 111, 110, 116, 97, 105, // contai + 110, 101, 114, 46, 105, 110, 110, 101, 114, 72, 84, 77, 76, 32, 61, 32, // ner.innerHTML = + 39, 39, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ''. + 32, 32, 32, 43, 32, 39, 60, 100, 105, 118, 32, 99, 108, 97, 115, 115, // + '
< + 104, 50, 62, 229, 145, 189, 228, 187, 164, 231, 187, 136, 231, 171, 175, 60, // h2>............< + 47, 104, 50, 62, 60, 112, 62, 232, 190, 147, 229, 133, 165, 32, 82, 84, // /h2>

...... RT + 85, 32, 229, 145, 189, 228, 187, 164, 239, 188, 140, 69, 110, 116, 101, 114, // U .........Enter + 32, 229, 143, 145, 233, 128, 129, 239, 188, 140, 226, 134, 145, 226, 134, 147, // ............... + 32, 229, 142, 134, 229, 143, 178, 232, 174, 176, 229, 189, 149, 60, 47, 112, // ............

'. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 43, 32, 39, 60, 100, 105, 118, // + '
'. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 43, 32, 32, 32, 39, 60, 100, // + ''. + 32, 32, 32, 32, 43, 32, 32, 32, 39, 60, 100, 105, 118, 32, 99, 108, // + '
'. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 43, 32, 32, 32, // + + 32, 32, 39, 60, 115, 112, 97, 110, 32, 99, 108, 97, 115, 115, 61, 34, // 'cmd > '. + 32, 32, 32, 43, 32, 32, 32, 32, 32, 39, 60, 105, 110, 112, 117, 116, // + ''. + 32, 32, 32, 43, 32, 32, 32, 39, 60, 47, 100, 105, 118, 62, 39, 10, // + '
'. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // + 43, 32, 39, 60, 47, 100, 105, 118, 62, 39, 59, 10, 10, 32, 32, 32, // + '
';.. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 105, 110, 112, // var inp + 117, 116, 32, 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, // ut = document.ge + 116, 69, 108, 101, 109, 101, 110, 116, 66, 121, 73, 100, 40, 39, 116, 101, // tElementById('te + 114, 109, 45, 105, 110, 112, 117, 116, 39, 41, 59, 10, 32, 32, 32, 32, // rm-input');. + 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 33, 105, 110, 112, // if (!inp + 117, 116, 41, 32, 114, 101, 116, 117, 114, 110, 59, 10, 10, 32, 32, 32, // ut) return;.. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 110, 112, 117, 116, 46, 111, // input.o + 110, 107, 101, 121, 100, 111, 119, 110, 32, 61, 32, 102, 117, 110, 99, 116, // nkeydown = funct + 105, 111, 110, 40, 101, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, // ion(e) {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 101, 46, 107, // if (e.k + 101, 121, 32, 61, 61, 61, 32, 39, 69, 110, 116, 101, 114, 39, 41, 32, // ey === 'Enter') + 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // {. + 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 99, 109, 100, 32, 61, 32, // var cmd = + 105, 110, 112, 117, 116, 46, 118, 97, 108, 117, 101, 46, 116, 114, 105, 109, // input.value.trim + 40, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ();. + 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 99, 109, 100, 41, // if (cmd) + 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 104, 105, 115, 116, 111, // histo + 114, 121, 46, 112, 117, 115, 104, 40, 99, 109, 100, 41, 59, 10, 32, 32, // ry.push(cmd);. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // + 32, 32, 32, 32, 32, 32, 104, 105, 115, 116, 111, 114, 121, 73, 100, 120, // historyIdx + 32, 61, 32, 104, 105, 115, 116, 111, 114, 121, 46, 108, 101, 110, 103, 116, // = history.lengt + 104, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // h;. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97, 112, 112, 101, 110, // appen + 100, 40, 39, 99, 109, 100, 32, 62, 32, 39, 32, 43, 32, 99, 109, 100, // d('cmd > ' + cmd + 44, 32, 39, 116, 101, 114, 109, 45, 115, 101, 110, 116, 39, 41, 59, 10, // , 'term-sent');. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // + 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 33, 87, 115, 67, // if (!WsC + 108, 105, 101, 110, 116, 46, 115, 101, 110, 100, 40, 123, 116, 121, 112, 101, // lient.send({type + 58, 39, 99, 109, 100, 39, 44, 32, 100, 97, 116, 97, 58, 99, 109, 100, // :'cmd', data:cmd + 125, 41, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // })) {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // + 32, 32, 97, 112, 112, 101, 110, 100, 40, 39, 91, 230, 156, 170, 232, 191, // append('[..... + 158, 230, 142, 165, 93, 39, 44, 32, 39, 116, 101, 114, 109, 45, 101, 114, // ....]', 'term-er + 114, 39, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // r');. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, // }. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // + 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // }. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 110, 112, 117, 116, 46, 118, // input.v + 97, 108, 117, 101, 32, 61, 32, 39, 39, 59, 10, 32, 32, 32, 32, 32, // alue = '';. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 32, 101, 108, 115, // } els + 101, 32, 105, 102, 32, 40, 101, 46, 107, 101, 121, 32, 61, 61, 61, 32, // e if (e.key === + 39, 65, 114, 114, 111, 119, 85, 112, 39, 41, 32, 123, 10, 32, 32, 32, // 'ArrowUp') {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // + 32, 101, 46, 112, 114, 101, 118, 101, 110, 116, 68, 101, 102, 97, 117, 108, // e.preventDefaul + 116, 40, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // t();. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 104, 105, 115, // if (his + 116, 111, 114, 121, 46, 108, 101, 110, 103, 116, 104, 32, 62, 32, 48, 41, // tory.length > 0) + 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 104, 105, 115, 116, 111, // histo + 114, 121, 73, 100, 120, 32, 61, 32, 77, 97, 116, 104, 46, 109, 97, 120, // ryIdx = Math.max + 40, 48, 44, 32, 104, 105, 115, 116, 111, 114, 121, 73, 100, 120, 32, 45, // (0, historyIdx - + 32, 49, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // 1);. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 110, 112, // inp + 117, 116, 46, 118, 97, 108, 117, 101, 32, 61, 32, 104, 105, 115, 116, 111, // ut.value = histo + 114, 121, 91, 104, 105, 115, 116, 111, 114, 121, 73, 100, 120, 93, 59, 10, // ry[historyIdx];. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // + 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // }. + 32, 32, 32, 32, 32, 32, 125, 32, 101, 108, 115, 101, 32, 105, 102, 32, // } else if + 40, 101, 46, 107, 101, 121, 32, 61, 61, 61, 32, 39, 65, 114, 114, 111, // (e.key === 'Arro + 119, 68, 111, 119, 110, 39, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, // wDown') {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 101, 46, // e. + 112, 114, 101, 118, 101, 110, 116, 68, 101, 102, 97, 117, 108, 116, 40, 41, // preventDefault() + 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ;. + 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 104, 105, 115, 116, 111, 114, // if (histor + 121, 73, 100, 120, 32, 60, 32, 104, 105, 115, 116, 111, 114, 121, 46, 108, // yIdx < history.l + 101, 110, 103, 116, 104, 32, 45, 32, 49, 41, 32, 123, 10, 32, 32, 32, // ength - 1) {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // + 32, 32, 32, 32, 32, 104, 105, 115, 116, 111, 114, 121, 73, 100, 120, 43, // historyIdx+ + 43, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // +;. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 110, 112, 117, 116, // input + 46, 118, 97, 108, 117, 101, 32, 61, 32, 104, 105, 115, 116, 111, 114, 121, // .value = history + 91, 104, 105, 115, 116, 111, 114, 121, 73, 100, 120, 93, 59, 10, 32, 32, // [historyIdx];. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // + 32, 32, 125, 32, 101, 108, 115, 101, 32, 123, 10, 32, 32, 32, 32, 32, // } else {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // + 32, 32, 32, 104, 105, 115, 116, 111, 114, 121, 73, 100, 120, 32, 61, 32, // historyIdx = + 104, 105, 115, 116, 111, 114, 121, 46, 108, 101, 110, 103, 116, 104, 59, 10, // history.length;. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // + 32, 32, 32, 32, 32, 32, 32, 32, 105, 110, 112, 117, 116, 46, 118, 97, // input.va + 108, 117, 101, 32, 61, 32, 39, 39, 59, 10, 32, 32, 32, 32, 32, 32, // lue = '';. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, // }. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // + 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 59, // }. }; + 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 97, 112, // .. ap + 112, 101, 110, 100, 40, 39, 232, 190, 147, 229, 133, 165, 32, 104, 101, 108, // pend('...... hel + 112, 32, 230, 159, 165, 231, 156, 139, 230, 137, 128, 230, 156, 137, 229, 145, // p .............. + 189, 228, 187, 164, 39, 44, 32, 39, 116, 101, 114, 109, 45, 105, 110, 102, // ....', 'term-inf + 111, 39, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 44, 10, // o');. },. + 10, 32, 32, 32, 32, 32, 32, 32, 32, 111, 110, 68, 97, 116, 97, 58, // . onData: + 32, 102, 117, 110, 99, 116, 105, 111, 110, 40, 100, 97, 116, 97, 41, 32, // function(data) + 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, // {. if + 32, 40, 100, 97, 116, 97, 41, 32, 97, 112, 112, 101, 110, 100, 40, 100, // (data) append(d + 97, 116, 97, 44, 32, 39, 116, 101, 114, 109, 45, 114, 101, 115, 112, 39, // ata, 'term-resp' + 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 44, 10, 10, 32, // );. },.. + 32, 32, 32, 32, 32, 32, 32, 111, 110, 66, 105, 110, 97, 114, 121, 58, // onBinary: + 32, 102, 117, 110, 99, 116, 105, 111, 110, 40, 97, 98, 41, 32, 123, 10, // function(ab) {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, // var + 100, 101, 99, 111, 100, 101, 114, 32, 61, 32, 110, 101, 119, 32, 84, 101, // decoder = new Te + 120, 116, 68, 101, 99, 111, 100, 101, 114, 40, 39, 117, 116, 102, 45, 56, // xtDecoder('utf-8 + 39, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ');. + 118, 97, 114, 32, 116, 101, 120, 116, 32, 61, 32, 100, 101, 99, 111, 100, // var text = decod + 101, 114, 46, 100, 101, 99, 111, 100, 101, 40, 97, 98, 41, 59, 10, 32, // er.decode(ab);. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 116, // if (t + 101, 120, 116, 41, 32, 97, 112, 112, 101, 110, 100, 40, 116, 101, 120, 116, // ext) append(text + 44, 32, 39, 116, 101, 114, 109, 45, 114, 101, 115, 112, 39, 41, 59, 10, // , 'term-resp');. + 32, 32, 32, 32, 32, 32, 32, 32, 125, 44, 10, 10, 32, 32, 32, 32, // },.. + 32, 32, 32, 32, 111, 110, 69, 110, 116, 101, 114, 58, 32, 102, 117, 110, // onEnter: fun + 99, 116, 105, 111, 110, 40, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, // ction() {. + 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 105, 110, 112, 117, 116, 32, // var input + 61, 32, 100, 111, 99, 117, 109, 101, 110, 116, 46, 103, 101, 116, 69, 108, // = document.getEl + 101, 109, 101, 110, 116, 66, 121, 73, 100, 40, 39, 116, 101, 114, 109, 45, // ementById('term- + 105, 110, 112, 117, 116, 39, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, // input');. + 32, 32, 32, 32, 32, 105, 102, 32, 40, 105, 110, 112, 117, 116, 41, 32, // if (input) + 115, 101, 116, 84, 105, 109, 101, 111, 117, 116, 40, 102, 117, 110, 99, 116, // setTimeout(funct + 105, 111, 110, 40, 41, 32, 123, 32, 105, 110, 112, 117, 116, 46, 102, 111, // ion() { input.fo + 99, 117, 115, 40, 41, 59, 32, 125, 44, 32, 49, 48, 48, 41, 59, 10, // cus(); }, 100);. + 32, 32, 32, 32, 32, 32, 32, 32, 125, 44, 10, 10, 32, 32, 32, 32, // },.. + 32, 32, 32, 32, 111, 110, 76, 101, 97, 118, 101, 58, 32, 102, 117, 110, // onLeave: fun + 99, 116, 105, 111, 110, 40, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, // ction() {. + 32, 32, 125, 10, 32, 32, 32, 32, 125, 59, 10, 125, 41, 40, 41, 59, // }. };.})(); + 10, 0 // . }; static const unsigned char v8[] = { 47, 42, 42, 10, 32, 42, 32, 119, 115, 45, 99, 108, 105, 101, 110, 116, // /**. * ws-client @@ -3249,206 +3544,233 @@ static const unsigned char v8[] = { 32, 32, 32, 32, 32, 32, 116, 114, 121, 32, 123, 10, 32, 32, 32, 32, // try {. 32, 32, 32, 32, 32, 32, 32, 32, 119, 115, 32, 61, 32, 110, 101, 119, // ws = new 32, 87, 101, 98, 83, 111, 99, 107, 101, 116, 40, 117, 114, 108, 41, 59, // WebSocket(url); - 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 32, 99, 97, 116, 99, 104, // . } catch - 32, 40, 101, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // (e) {. - 32, 32, 32, 115, 101, 116, 83, 116, 97, 116, 117, 115, 40, 39, 100, 105, // setStatus('di - 115, 99, 111, 110, 110, 101, 99, 116, 101, 100, 39, 41, 59, 10, 32, 32, // sconnected');. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 99, 104, 101, 100, 117, // schedu - 108, 101, 82, 101, 99, 111, 110, 110, 101, 99, 116, 40, 41, 59, 10, 32, // leReconnect();. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, // retur - 110, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, // n;. }.. - 32, 32, 32, 32, 32, 32, 119, 115, 46, 111, 110, 111, 112, 101, 110, 32, // ws.onopen - 61, 32, 102, 117, 110, 99, 116, 105, 111, 110, 40, 41, 32, 123, 10, 32, // = function() {. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 101, 116, 83, 116, // setSt - 97, 116, 117, 115, 40, 39, 99, 111, 110, 110, 101, 99, 116, 101, 100, 39, // atus('connected' - 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, // );. i - 102, 32, 40, 114, 101, 99, 111, 110, 110, 101, 99, 116, 84, 105, 109, 101, // f (reconnectTime - 114, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // r) {. - 32, 32, 32, 32, 32, 99, 108, 101, 97, 114, 84, 105, 109, 101, 111, 117, // clearTimeou - 116, 40, 114, 101, 99, 111, 110, 110, 101, 99, 116, 84, 105, 109, 101, 114, // t(reconnectTimer - 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // );. - 32, 32, 32, 114, 101, 99, 111, 110, 110, 101, 99, 116, 84, 105, 109, 101, // reconnectTime - 114, 32, 61, 32, 110, 117, 108, 108, 59, 10, 32, 32, 32, 32, 32, 32, // r = null;. - 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, // }. - 125, 59, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 119, 115, 46, 111, // };.. ws.o - 110, 99, 108, 111, 115, 101, 32, 61, 32, 102, 117, 110, 99, 116, 105, 111, // nclose = functio - 110, 40, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // n() {. - 32, 32, 115, 101, 116, 83, 116, 97, 116, 117, 115, 40, 39, 100, 105, 115, // setStatus('dis - 99, 111, 110, 110, 101, 99, 116, 101, 100, 39, 41, 59, 10, 32, 32, 32, // connected');. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 119, 115, 32, 61, 32, 110, 117, // ws = nu - 108, 108, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ll;. - 115, 99, 104, 101, 100, 117, 108, 101, 82, 101, 99, 111, 110, 110, 101, 99, // scheduleReconnec - 116, 40, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 59, 10, // t();. };. - 10, 32, 32, 32, 32, 32, 32, 32, 32, 119, 115, 46, 111, 110, 101, 114, // . ws.oner - 114, 111, 114, 32, 61, 32, 102, 117, 110, 99, 116, 105, 111, 110, 40, 41, // ror = function() - 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, // {. / - 47, 32, 111, 110, 99, 108, 111, 115, 101, 32, 119, 105, 108, 108, 32, 102, // / onclose will f - 105, 114, 101, 32, 97, 102, 116, 101, 114, 32, 111, 110, 101, 114, 114, 111, // ire after onerro - 114, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 59, 10, 10, 32, 32, // r. };.. - 32, 32, 32, 32, 32, 32, 119, 115, 46, 111, 110, 109, 101, 115, 115, 97, // ws.onmessa - 103, 101, 32, 61, 32, 102, 117, 110, 99, 116, 105, 111, 110, 40, 101, 41, // ge = function(e) - 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 118, // {. v - 97, 114, 32, 114, 97, 119, 32, 61, 32, 101, 46, 100, 97, 116, 97, 59, // ar raw = e.data; - 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, // .. // - 32, 229, 134, 153, 229, 133, 165, 231, 155, 145, 230, 142, 167, 230, 151, 165, // ............... - 229, 191, 151, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // .... - 105, 102, 32, 40, 116, 121, 112, 101, 111, 102, 32, 77, 111, 110, 105, 116, // if (typeof Monit - 111, 114, 82, 105, 110, 103, 32, 33, 61, 61, 32, 39, 117, 110, 100, 101, // orRing !== 'unde - 102, 105, 110, 101, 100, 39, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, // fined') {. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 77, 111, 110, 105, 116, 111, // Monito - 114, 82, 105, 110, 103, 46, 112, 117, 115, 104, 40, 39, 226, 134, 147, 39, // rRing.push('...' - 44, 32, 114, 97, 119, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, // , raw);. - 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // }.. - 32, 32, 32, 47, 47, 32, 229, 176, 157, 232, 175, 149, 232, 167, 163, 230, // // .......... - 158, 144, 32, 74, 83, 79, 78, 10, 32, 32, 32, 32, 32, 32, 32, 32, // .. JSON. - 32, 32, 32, 32, 118, 97, 114, 32, 100, 97, 116, 97, 32, 61, 32, 110, // var data = n + 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 119, 115, 46, // . ws. + 98, 105, 110, 97, 114, 121, 84, 121, 112, 101, 32, 61, 32, 39, 97, 114, // binaryType = 'ar + 114, 97, 121, 98, 117, 102, 102, 101, 114, 39, 59, 10, 32, 32, 32, 32, // raybuffer';. + 32, 32, 32, 32, 125, 32, 99, 97, 116, 99, 104, 32, 40, 101, 41, 32, // } catch (e) + 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 101, // {. se + 116, 83, 116, 97, 116, 117, 115, 40, 39, 100, 105, 115, 99, 111, 110, 110, // tStatus('disconn + 101, 99, 116, 101, 100, 39, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, // ected');. + 32, 32, 32, 32, 32, 115, 99, 104, 101, 100, 117, 108, 101, 82, 101, 99, // scheduleRec + 111, 110, 110, 101, 99, 116, 40, 41, 59, 10, 32, 32, 32, 32, 32, 32, // onnect();. + 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 59, 10, 32, 32, // return;. + 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, // }.. + 32, 119, 115, 46, 111, 110, 111, 112, 101, 110, 32, 61, 32, 102, 117, 110, // ws.onopen = fun + 99, 116, 105, 111, 110, 40, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, // ction() {. + 32, 32, 32, 32, 32, 32, 115, 101, 116, 83, 116, 97, 116, 117, 115, 40, // setStatus( + 39, 99, 111, 110, 110, 101, 99, 116, 101, 100, 39, 41, 59, 10, 32, 32, // 'connected');. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 114, 101, // if (re + 99, 111, 110, 110, 101, 99, 116, 84, 105, 109, 101, 114, 41, 32, 123, 10, // connectTimer) {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // + 99, 108, 101, 97, 114, 84, 105, 109, 101, 111, 117, 116, 40, 114, 101, 99, // clearTimeout(rec + 111, 110, 110, 101, 99, 116, 84, 105, 109, 101, 114, 41, 59, 10, 32, 32, // onnectTimer);. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, // re + 99, 111, 110, 110, 101, 99, 116, 84, 105, 109, 101, 114, 32, 61, 32, 110, // connectTimer = n 117, 108, 108, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ull;. - 32, 116, 114, 121, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // try {. - 32, 32, 32, 32, 32, 32, 32, 100, 97, 116, 97, 32, 61, 32, 74, 83, // data = JS - 79, 78, 46, 112, 97, 114, 115, 101, 40, 114, 97, 119, 41, 59, 10, 32, // ON.parse(raw);. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 32, 99, 97, 116, // } cat - 99, 104, 32, 40, 101, 120, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, // ch (ex) {. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 233, 157, 158, // // ... - 32, 74, 83, 79, 78, 32, 230, 182, 136, 230, 129, 175, 228, 185, 159, 229, // JSON .......... - 136, 134, 229, 143, 145, 229, 142, 159, 229, 167, 139, 230, 149, 176, 230, 141, // ................ - 174, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, // .. }. - 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, // . // - 229, 136, 134, 229, 143, 145, 231, 187, 153, 230, 137, 128, 230, 156, 137, 230, // ................ - 179, 168, 229, 134, 140, 231, 154, 132, 229, 155, 158, 232, 176, 131, 10, 32, // ............... - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 102, 111, 114, 32, 40, // for ( - 118, 97, 114, 32, 105, 32, 61, 32, 48, 59, 32, 105, 32, 60, 32, 109, // var i = 0; i < m - 115, 103, 67, 97, 108, 108, 98, 97, 99, 107, 115, 46, 108, 101, 110, 103, // sgCallbacks.leng - 116, 104, 59, 32, 105, 43, 43, 41, 32, 123, 10, 32, 32, 32, 32, 32, // th; i++) {. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 114, 121, 32, 123, // try { - 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // . - 32, 32, 32, 32, 32, 109, 115, 103, 67, 97, 108, 108, 98, 97, 99, 107, // msgCallback - 115, 91, 105, 93, 40, 100, 97, 116, 97, 32, 124, 124, 32, 114, 97, 119, // s[i](data || raw - 44, 32, 114, 97, 119, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, // , raw);. - 32, 32, 32, 32, 32, 32, 32, 32, 125, 32, 99, 97, 116, 99, 104, 32, // } catch - 40, 101, 120, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // (ex) {. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 111, 110, 115, 111, // conso - 108, 101, 46, 101, 114, 114, 111, 114, 40, 39, 87, 115, 67, 108, 105, 101, // le.error('WsClie - 110, 116, 32, 109, 115, 103, 32, 99, 97, 108, 108, 98, 97, 99, 107, 32, // nt msg callback - 101, 114, 114, 111, 114, 58, 39, 44, 32, 101, 120, 41, 59, 10, 32, 32, // error:', ex);. + 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 59, 10, 10, 32, // }. };.. + 32, 32, 32, 32, 32, 32, 32, 119, 115, 46, 111, 110, 99, 108, 111, 115, // ws.onclos + 101, 32, 61, 32, 102, 117, 110, 99, 116, 105, 111, 110, 40, 41, 32, 123, // e = function() { + 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 101, 116, // . set + 83, 116, 97, 116, 117, 115, 40, 39, 100, 105, 115, 99, 111, 110, 110, 101, // Status('disconne + 99, 116, 101, 100, 39, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, // cted');. + 32, 32, 32, 32, 119, 115, 32, 61, 32, 110, 117, 108, 108, 59, 10, 32, // ws = null;. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 115, 99, 104, 101, 100, // sched + 117, 108, 101, 82, 101, 99, 111, 110, 110, 101, 99, 116, 40, 41, 59, 10, // uleReconnect();. + 32, 32, 32, 32, 32, 32, 32, 32, 125, 59, 10, 10, 32, 32, 32, 32, // };.. + 32, 32, 32, 32, 119, 115, 46, 111, 110, 101, 114, 114, 111, 114, 32, 61, // ws.onerror = + 32, 102, 117, 110, 99, 116, 105, 111, 110, 40, 41, 32, 123, 10, 32, 32, // function() {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 111, 110, 99, // // onc + 108, 111, 115, 101, 32, 119, 105, 108, 108, 32, 102, 105, 114, 101, 32, 97, // lose will fire a + 102, 116, 101, 114, 32, 111, 110, 101, 114, 114, 111, 114, 10, 32, 32, 32, // fter onerror. + 32, 32, 32, 32, 32, 125, 59, 10, 10, 32, 32, 32, 32, 32, 32, 32, // };.. + 32, 119, 115, 46, 111, 110, 109, 101, 115, 115, 97, 103, 101, 32, 61, 32, // ws.onmessage = + 102, 117, 110, 99, 116, 105, 111, 110, 40, 101, 41, 32, 123, 10, 32, 32, // function(e) {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 114, 97, // var ra + 119, 32, 61, 32, 101, 46, 100, 97, 116, 97, 59, 10, 10, 32, 32, 32, // w = e.data;.. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 114, 97, 119, // if (raw + 32, 105, 110, 115, 116, 97, 110, 99, 101, 111, 102, 32, 65, 114, 114, 97, // instanceof Arra + 121, 66, 117, 102, 102, 101, 114, 41, 32, 123, 10, 32, 32, 32, 32, 32, // yBuffer) {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 116, // if (t + 121, 112, 101, 111, 102, 32, 77, 111, 110, 105, 116, 111, 114, 82, 105, 110, // ypeof MonitorRin + 103, 32, 33, 61, 61, 32, 39, 117, 110, 100, 101, 102, 105, 110, 101, 100, // g !== 'undefined + 39, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ') {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 77, 111, 110, 105, 116, 111, 114, // Monitor + 82, 105, 110, 103, 46, 112, 117, 115, 104, 40, 39, 226, 134, 147, 39, 44, // Ring.push('...', + 32, 39, 91, 98, 105, 110, 97, 114, 121, 32, 39, 32, 43, 32, 114, 97, // '[binary ' + ra + 119, 46, 98, 121, 116, 101, 76, 101, 110, 103, 116, 104, 32, 43, 32, 39, // w.byteLength + ' + 66, 93, 39, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // B]');. + 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, // }. + 32, 32, 32, 32, 32, 32, 32, 32, 102, 111, 114, 32, 40, 118, 97, 114, // for (var + 32, 105, 32, 61, 32, 48, 59, 32, 105, 32, 60, 32, 109, 115, 103, 67, // i = 0; i < msgC + 97, 108, 108, 98, 97, 99, 107, 115, 46, 108, 101, 110, 103, 116, 104, 59, // allbacks.length; + 32, 105, 43, 43, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, // i++) {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 116, 114, 121, 32, // try + 123, 32, 109, 115, 103, 67, 97, 108, 108, 98, 97, 99, 107, 115, 91, 105, // { msgCallbacks[i + 93, 40, 110, 117, 108, 108, 44, 32, 114, 97, 119, 41, 59, 32, 125, 32, // ](null, raw); } + 99, 97, 116, 99, 104, 32, 40, 101, 120, 41, 32, 123, 125, 10, 32, 32, // catch (ex) {}. 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, // }. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, // }. - 32, 32, 32, 32, 32, 32, 125, 59, 10, 32, 32, 32, 32, 125, 10, 10, // };. }.. - 32, 32, 32, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 99, 104, // function sch - 101, 100, 117, 108, 101, 82, 101, 99, 111, 110, 110, 101, 99, 116, 40, 41, // eduleReconnect() - 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 114, // {. if (r - 101, 99, 111, 110, 110, 101, 99, 116, 84, 105, 109, 101, 114, 41, 32, 114, // econnectTimer) r - 101, 116, 117, 114, 110, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114, // eturn;. r - 101, 99, 111, 110, 110, 101, 99, 116, 84, 105, 109, 101, 114, 32, 61, 32, // econnectTimer = - 115, 101, 116, 84, 105, 109, 101, 111, 117, 116, 40, 102, 117, 110, 99, 116, // setTimeout(funct - 105, 111, 110, 40, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, // ion() {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // + 114, 101, 116, 117, 114, 110, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, // return;. + 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // }.. + 32, 32, 32, 47, 47, 32, 229, 134, 153, 229, 133, 165, 231, 155, 145, 230, // // .......... + 142, 167, 230, 151, 165, 229, 191, 151, 10, 32, 32, 32, 32, 32, 32, 32, // ......... + 32, 32, 32, 32, 32, 105, 102, 32, 40, 116, 121, 112, 101, 111, 102, 32, // if (typeof + 77, 111, 110, 105, 116, 111, 114, 82, 105, 110, 103, 32, 33, 61, 61, 32, // MonitorRing !== + 39, 117, 110, 100, 101, 102, 105, 110, 101, 100, 39, 41, 32, 123, 10, 32, // 'undefined') {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 77, // M + 111, 110, 105, 116, 111, 114, 82, 105, 110, 103, 46, 112, 117, 115, 104, 40, // onitorRing.push( + 39, 226, 134, 147, 39, 44, 32, 114, 97, 119, 41, 59, 10, 32, 32, 32, // '...', raw);. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, // }.. + 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 229, 176, 157, 232, 175, // // ..... + 149, 232, 167, 163, 230, 158, 144, 32, 74, 83, 79, 78, 10, 32, 32, 32, // ....... JSON. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 100, 97, 116, // var dat + 97, 32, 61, 32, 110, 117, 108, 108, 59, 10, 32, 32, 32, 32, 32, 32, // a = null;. + 32, 32, 32, 32, 32, 32, 116, 114, 121, 32, 123, 10, 32, 32, 32, 32, // try {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 100, 97, 116, 97, // data + 32, 61, 32, 74, 83, 79, 78, 46, 112, 97, 114, 115, 101, 40, 114, 97, // = JSON.parse(ra + 119, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // w);. + 125, 32, 99, 97, 116, 99, 104, 32, 40, 101, 120, 41, 32, 123, 10, 32, // } catch (ex) {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 47, // / + 47, 32, 233, 157, 158, 32, 74, 83, 79, 78, 32, 230, 182, 136, 230, 129, // / ... JSON ..... + 175, 228, 185, 159, 229, 136, 134, 229, 143, 145, 229, 142, 159, 229, 167, 139, // ................ + 230, 149, 176, 230, 141, 174, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ....... + 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // }.. + 32, 32, 47, 47, 32, 229, 136, 134, 229, 143, 145, 231, 187, 153, 230, 137, // // ........... + 128, 230, 156, 137, 230, 179, 168, 229, 134, 140, 231, 154, 132, 229, 155, 158, // ................ + 232, 176, 131, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // .... + 102, 111, 114, 32, 40, 118, 97, 114, 32, 105, 32, 61, 32, 48, 59, 32, // for (var i = 0; + 105, 32, 60, 32, 109, 115, 103, 67, 97, 108, 108, 98, 97, 99, 107, 115, // i < msgCallbacks + 46, 108, 101, 110, 103, 116, 104, 59, 32, 105, 43, 43, 41, 32, 123, 10, // .length; i++) {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // + 116, 114, 121, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // try {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 109, 115, 103, 67, 97, 108, // msgCal + 108, 98, 97, 99, 107, 115, 91, 105, 93, 40, 100, 97, 116, 97, 32, 124, // lbacks[i](data | + 124, 32, 114, 97, 119, 44, 32, 114, 97, 119, 41, 59, 10, 32, 32, 32, // | raw, raw);. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 125, 32, 99, // } c + 97, 116, 99, 104, 32, 40, 101, 120, 41, 32, 123, 10, 32, 32, 32, 32, // atch (ex) {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // + 99, 111, 110, 115, 111, 108, 101, 46, 101, 114, 114, 111, 114, 40, 39, 87, // console.error('W + 115, 67, 108, 105, 101, 110, 116, 32, 109, 115, 103, 32, 99, 97, 108, 108, // sClient msg call + 98, 97, 99, 107, 32, 101, 114, 114, 111, 114, 58, 39, 44, 32, 101, 120, // back error:', ex + 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // );. + 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // }. + 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 59, 10, 32, 32, // }. };. + 32, 32, 125, 10, 10, 32, 32, 32, 32, 102, 117, 110, 99, 116, 105, 111, // }.. functio + 110, 32, 115, 99, 104, 101, 100, 117, 108, 101, 82, 101, 99, 111, 110, 110, // n scheduleReconn + 101, 99, 116, 40, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, // ect() {. + 105, 102, 32, 40, 114, 101, 99, 111, 110, 110, 101, 99, 116, 84, 105, 109, // if (reconnectTim + 101, 114, 41, 32, 114, 101, 116, 117, 114, 110, 59, 10, 32, 32, 32, 32, // er) return;. + 32, 32, 32, 32, 114, 101, 99, 111, 110, 110, 101, 99, 116, 84, 105, 109, // reconnectTim + 101, 114, 32, 61, 32, 115, 101, 116, 84, 105, 109, 101, 111, 117, 116, 40, // er = setTimeout( + 102, 117, 110, 99, 116, 105, 111, 110, 40, 41, 32, 123, 10, 32, 32, 32, // function() {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 99, 111, 110, 110, 101, // reconne + 99, 116, 84, 105, 109, 101, 114, 32, 61, 32, 110, 117, 108, 108, 59, 10, // ctTimer = null;. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, // if ( + 115, 116, 97, 116, 117, 115, 32, 61, 61, 61, 32, 39, 100, 105, 115, 99, // status === 'disc + 111, 110, 110, 101, 99, 116, 101, 100, 39, 41, 32, 123, 10, 32, 32, 32, // onnected') {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 111, 110, // con + 110, 101, 99, 116, 40, 117, 114, 108, 41, 59, 10, 32, 32, 32, 32, 32, // nect(url);. + 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, // }. + 32, 125, 44, 32, 114, 101, 99, 111, 110, 110, 101, 99, 116, 68, 101, 108, // }, reconnectDel + 97, 121, 41, 59, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, // ay);. }.. + 102, 117, 110, 99, 116, 105, 111, 110, 32, 115, 101, 110, 100, 40, 100, 97, // function send(da + 116, 97, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, // ta) {. va + 114, 32, 114, 97, 119, 32, 61, 32, 39, 39, 59, 10, 32, 32, 32, 32, // r raw = '';. + 32, 32, 32, 32, 105, 102, 32, 40, 116, 121, 112, 101, 111, 102, 32, 100, // if (typeof d + 97, 116, 97, 32, 61, 61, 61, 32, 39, 111, 98, 106, 101, 99, 116, 39, // ata === 'object' + 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ) {. + 114, 97, 119, 32, 61, 32, 74, 83, 79, 78, 46, 115, 116, 114, 105, 110, // raw = JSON.strin + 103, 105, 102, 121, 40, 100, 97, 116, 97, 41, 59, 10, 32, 32, 32, 32, // gify(data);. + 32, 32, 32, 32, 125, 32, 101, 108, 115, 101, 32, 123, 10, 32, 32, 32, // } else {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 97, 119, 32, 61, 32, 83, // raw = S + 116, 114, 105, 110, 103, 40, 100, 97, 116, 97, 41, 59, 10, 32, 32, 32, // tring(data);. + 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, // }.. + 47, 47, 32, 229, 134, 153, 229, 133, 165, 231, 155, 145, 230, 142, 167, 230, // // ............. + 151, 165, 229, 191, 151, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, // ...... if + 32, 40, 116, 121, 112, 101, 111, 102, 32, 77, 111, 110, 105, 116, 111, 114, // (typeof Monitor + 82, 105, 110, 103, 32, 33, 61, 61, 32, 39, 117, 110, 100, 101, 102, 105, // Ring !== 'undefi + 110, 101, 100, 39, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, // ned') {. + 32, 32, 32, 32, 77, 111, 110, 105, 116, 111, 114, 82, 105, 110, 103, 46, // MonitorRing. + 112, 117, 115, 104, 40, 39, 226, 134, 145, 39, 44, 32, 114, 97, 119, 41, // push('...', raw) + 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, // ;. }.. + 32, 32, 32, 32, 32, 105, 102, 32, 40, 33, 119, 115, 32, 124, 124, 32, // if (!ws || + 119, 115, 46, 114, 101, 97, 100, 121, 83, 116, 97, 116, 101, 32, 33, 61, // ws.readyState != + 61, 32, 87, 101, 98, 83, 111, 99, 107, 101, 116, 46, 79, 80, 69, 78, // = WebSocket.OPEN + 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ) {. + 99, 111, 110, 115, 111, 108, 101, 46, 101, 114, 114, 111, 114, 40, 39, 87, // console.error('W + 115, 67, 108, 105, 101, 110, 116, 58, 32, 110, 111, 116, 32, 99, 111, 110, // sClient: not con + 110, 101, 99, 116, 101, 100, 44, 32, 99, 97, 110, 110, 111, 116, 32, 115, // nected, cannot s + 101, 110, 100, 39, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // end');. + 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 97, 108, 115, 101, 59, // return false; + 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, // . }.. + 32, 32, 32, 32, 116, 114, 121, 32, 123, 10, 32, 32, 32, 32, 32, 32, // try {. + 32, 32, 32, 32, 32, 32, 119, 115, 46, 115, 101, 110, 100, 40, 114, 97, // ws.send(ra + 119, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // w);. + 114, 101, 116, 117, 114, 110, 32, 116, 114, 117, 101, 59, 10, 32, 32, 32, // return true;. + 32, 32, 32, 32, 32, 125, 32, 99, 97, 116, 99, 104, 32, 40, 101, 41, // } catch (e) + 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, // {. c + 111, 110, 115, 111, 108, 101, 46, 101, 114, 114, 111, 114, 40, 39, 87, 115, // onsole.error('Ws + 67, 108, 105, 101, 110, 116, 58, 32, 115, 101, 110, 100, 32, 102, 97, 105, // Client: send fai + 108, 101, 100, 39, 44, 32, 101, 41, 59, 10, 32, 32, 32, 32, 32, 32, // led', e);. + 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 102, 97, 108, // return fal + 115, 101, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, // se;. }. + 32, 32, 125, 10, 10, 32, 32, 32, 32, 102, 117, 110, 99, 116, 105, 111, // }.. functio + 110, 32, 111, 110, 77, 101, 115, 115, 97, 103, 101, 40, 99, 98, 41, 32, // n onMessage(cb) + 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 109, 115, 103, 67, 97, 108, // {. msgCal + 108, 98, 97, 99, 107, 115, 46, 112, 117, 115, 104, 40, 99, 98, 41, 59, // lbacks.push(cb); + 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 102, 117, 110, 99, // . }.. func + 116, 105, 111, 110, 32, 111, 110, 83, 116, 97, 116, 117, 115, 67, 104, 97, // tion onStatusCha + 110, 103, 101, 40, 99, 98, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, // nge(cb) {. + 32, 32, 115, 116, 97, 116, 117, 115, 67, 97, 108, 108, 98, 97, 99, 107, // statusCallback + 115, 46, 112, 117, 115, 104, 40, 99, 98, 41, 59, 10, 32, 32, 32, 32, // s.push(cb);. + 32, 32, 32, 32, 47, 47, 32, 231, 171, 139, 229, 141, 179, 233, 128, 154, // // ......... + 231, 159, 165, 229, 189, 147, 229, 137, 141, 231, 138, 182, 230, 128, 129, 10, // ................ + 32, 32, 32, 32, 32, 32, 32, 32, 99, 98, 40, 115, 116, 97, 116, 117, // cb(statu + 115, 41, 59, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 102, // s);. }.. f + 117, 110, 99, 116, 105, 111, 110, 32, 103, 101, 116, 83, 116, 97, 116, 117, // unction getStatu + 115, 40, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, // s() {. re + 116, 117, 114, 110, 32, 115, 116, 97, 116, 117, 115, 59, 10, 32, 32, 32, // turn status;. + 32, 125, 10, 10, 32, 32, 32, 32, 102, 117, 110, 99, 116, 105, 111, 110, // }.. function + 32, 100, 105, 115, 99, 111, 110, 110, 101, 99, 116, 40, 41, 32, 123, 10, // disconnect() {. + 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 114, 101, 99, 111, // if (reco + 110, 110, 101, 99, 116, 84, 105, 109, 101, 114, 41, 32, 123, 10, 32, 32, // nnectTimer) {. + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 108, 101, 97, 114, 84, // clearT + 105, 109, 101, 111, 117, 116, 40, 114, 101, 99, 111, 110, 110, 101, 99, 116, // imeout(reconnect + 84, 105, 109, 101, 114, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, // Timer);. 32, 32, 32, 32, 114, 101, 99, 111, 110, 110, 101, 99, 116, 84, 105, 109, // reconnectTim 101, 114, 32, 61, 32, 110, 117, 108, 108, 59, 10, 32, 32, 32, 32, 32, // er = null;. - 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 115, 116, 97, 116, 117, // if (statu - 115, 32, 61, 61, 61, 32, 39, 100, 105, 115, 99, 111, 110, 110, 101, 99, // s === 'disconnec - 116, 101, 100, 39, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, // ted') {. - 32, 32, 32, 32, 32, 32, 32, 32, 99, 111, 110, 110, 101, 99, 116, 40, // connect( - 117, 114, 108, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // url);. - 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 44, 32, 114, // }. }, r - 101, 99, 111, 110, 110, 101, 99, 116, 68, 101, 108, 97, 121, 41, 59, 10, // econnectDelay);. - 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 102, 117, 110, 99, 116, // }.. funct - 105, 111, 110, 32, 115, 101, 110, 100, 40, 100, 97, 116, 97, 41, 32, 123, // ion send(data) { - 10, 32, 32, 32, 32, 32, 32, 32, 32, 118, 97, 114, 32, 114, 97, 119, // . var raw - 32, 61, 32, 39, 39, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, // = '';. i - 102, 32, 40, 116, 121, 112, 101, 111, 102, 32, 100, 97, 116, 97, 32, 61, // f (typeof data = - 61, 61, 32, 39, 111, 98, 106, 101, 99, 116, 39, 41, 32, 123, 10, 32, // == 'object') {. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 97, 119, 32, 61, // raw = - 32, 74, 83, 79, 78, 46, 115, 116, 114, 105, 110, 103, 105, 102, 121, 40, // JSON.stringify( - 100, 97, 116, 97, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, // data);. } - 32, 101, 108, 115, 101, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, // else {. - 32, 32, 32, 32, 114, 97, 119, 32, 61, 32, 83, 116, 114, 105, 110, 103, // raw = String - 40, 100, 97, 116, 97, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, // (data);. - 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, 47, 32, 229, 134, // }.. // .. - 153, 229, 133, 165, 231, 155, 145, 230, 142, 167, 230, 151, 165, 229, 191, 151, // ................ - 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 116, 121, 112, // . if (typ - 101, 111, 102, 32, 77, 111, 110, 105, 116, 111, 114, 82, 105, 110, 103, 32, // eof MonitorRing - 33, 61, 61, 32, 39, 117, 110, 100, 101, 102, 105, 110, 101, 100, 39, 41, // !== 'undefined') - 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 77, // {. M - 111, 110, 105, 116, 111, 114, 82, 105, 110, 103, 46, 112, 117, 115, 104, 40, // onitorRing.push( - 39, 226, 134, 145, 39, 44, 32, 114, 97, 119, 41, 59, 10, 32, 32, 32, // '...', raw);. - 32, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, // }.. - 105, 102, 32, 40, 33, 119, 115, 32, 124, 124, 32, 119, 115, 46, 114, 101, // if (!ws || ws.re - 97, 100, 121, 83, 116, 97, 116, 101, 32, 33, 61, 61, 32, 87, 101, 98, // adyState !== Web - 83, 111, 99, 107, 101, 116, 46, 79, 80, 69, 78, 41, 32, 123, 10, 32, // Socket.OPEN) {. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 111, 110, 115, 111, // conso - 108, 101, 46, 101, 114, 114, 111, 114, 40, 39, 87, 115, 67, 108, 105, 101, // le.error('WsClie - 110, 116, 58, 32, 110, 111, 116, 32, 99, 111, 110, 110, 101, 99, 116, 101, // nt: not connecte - 100, 44, 32, 99, 97, 110, 110, 111, 116, 32, 115, 101, 110, 100, 39, 41, // d, cannot send') - 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, // ;. re - 116, 117, 114, 110, 32, 102, 97, 108, 115, 101, 59, 10, 32, 32, 32, 32, // turn false;. - 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 32, 32, 32, 32, 116, // }.. t - 114, 121, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ry {. - 32, 119, 115, 46, 115, 101, 110, 100, 40, 114, 97, 119, 41, 59, 10, 32, // ws.send(raw);. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, // retur - 110, 32, 116, 114, 117, 101, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, // n true;. - 125, 32, 99, 97, 116, 99, 104, 32, 40, 101, 41, 32, 123, 10, 32, 32, // } catch (e) {. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 99, 111, 110, 115, 111, 108, // consol - 101, 46, 101, 114, 114, 111, 114, 40, 39, 87, 115, 67, 108, 105, 101, 110, // e.error('WsClien - 116, 58, 32, 115, 101, 110, 100, 32, 102, 97, 105, 108, 101, 100, 39, 44, // t: send failed', - 32, 101, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // e);. - 32, 114, 101, 116, 117, 114, 110, 32, 102, 97, 108, 115, 101, 59, 10, 32, // return false;. - 32, 32, 32, 32, 32, 32, 32, 125, 10, 32, 32, 32, 32, 125, 10, 10, // }. }.. - 32, 32, 32, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 111, 110, 77, // function onM - 101, 115, 115, 97, 103, 101, 40, 99, 98, 41, 32, 123, 10, 32, 32, 32, // essage(cb) {. - 32, 32, 32, 32, 32, 109, 115, 103, 67, 97, 108, 108, 98, 97, 99, 107, // msgCallback - 115, 46, 112, 117, 115, 104, 40, 99, 98, 41, 59, 10, 32, 32, 32, 32, // s.push(cb);. - 125, 10, 10, 32, 32, 32, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, // }.. function - 111, 110, 83, 116, 97, 116, 117, 115, 67, 104, 97, 110, 103, 101, 40, 99, // onStatusChange(c - 98, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 115, 116, 97, // b) {. sta - 116, 117, 115, 67, 97, 108, 108, 98, 97, 99, 107, 115, 46, 112, 117, 115, // tusCallbacks.pus - 104, 40, 99, 98, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 47, // h(cb);. / - 47, 32, 231, 171, 139, 229, 141, 179, 233, 128, 154, 231, 159, 165, 229, 189, // / .............. - 147, 229, 137, 141, 231, 138, 182, 230, 128, 129, 10, 32, 32, 32, 32, 32, // ........... - 32, 32, 32, 99, 98, 40, 115, 116, 97, 116, 117, 115, 41, 59, 10, 32, // cb(status);. - 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 102, 117, 110, 99, 116, 105, // }.. functi - 111, 110, 32, 103, 101, 116, 83, 116, 97, 116, 117, 115, 40, 41, 32, 123, // on getStatus() { - 10, 32, 32, 32, 32, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, // . return - 115, 116, 97, 116, 117, 115, 59, 10, 32, 32, 32, 32, 125, 10, 10, 32, // status;. }.. - 32, 32, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 100, 105, 115, 99, // function disc - 111, 110, 110, 101, 99, 116, 40, 41, 32, 123, 10, 32, 32, 32, 32, 32, // onnect() {. - 32, 32, 32, 105, 102, 32, 40, 114, 101, 99, 111, 110, 110, 101, 99, 116, // if (reconnect - 84, 105, 109, 101, 114, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, // Timer) {. - 32, 32, 32, 32, 32, 99, 108, 101, 97, 114, 84, 105, 109, 101, 111, 117, // clearTimeou - 116, 40, 114, 101, 99, 111, 110, 110, 101, 99, 116, 84, 105, 109, 101, 114, // t(reconnectTimer - 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 114, // );. r - 101, 99, 111, 110, 110, 101, 99, 116, 84, 105, 109, 101, 114, 32, 61, 32, // econnectTimer = - 110, 117, 108, 108, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, // null;. }. - 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, 40, 119, 115, 41, 32, // if (ws) - 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 119, 115, // {. ws - 46, 111, 110, 99, 108, 111, 115, 101, 32, 61, 32, 110, 117, 108, 108, 59, // .onclose = null; - 32, 47, 47, 32, 233, 152, 187, 230, 173, 162, 232, 135, 170, 229, 138, 168, // // ............ - 233, 135, 141, 232, 191, 158, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ....... - 32, 32, 32, 119, 115, 46, 99, 108, 111, 115, 101, 40, 41, 59, 10, 32, // ws.close();. - 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 119, 115, 32, 61, 32, // ws = - 110, 117, 108, 108, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 125, 10, // null;. }. - 32, 32, 32, 32, 32, 32, 32, 32, 115, 101, 116, 83, 116, 97, 116, 117, // setStatu - 115, 40, 39, 100, 105, 115, 99, 111, 110, 110, 101, 99, 116, 101, 100, 39, // s('disconnected' - 41, 59, 10, 32, 32, 32, 32, 125, 10, 10, 32, 32, 32, 32, 114, 101, // );. }.. re - 116, 117, 114, 110, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 99, // turn {. c - 111, 110, 110, 101, 99, 116, 58, 32, 99, 111, 110, 110, 101, 99, 116, 44, // onnect: connect, - 10, 32, 32, 32, 32, 32, 32, 32, 32, 115, 101, 110, 100, 58, 32, 115, // . send: s - 101, 110, 100, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 111, 110, 77, // end,. onM - 101, 115, 115, 97, 103, 101, 58, 32, 111, 110, 77, 101, 115, 115, 97, 103, // essage: onMessag - 101, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 111, 110, 83, 116, 97, // e,. onSta - 116, 117, 115, 67, 104, 97, 110, 103, 101, 58, 32, 111, 110, 83, 116, 97, // tusChange: onSta - 116, 117, 115, 67, 104, 97, 110, 103, 101, 44, 10, 32, 32, 32, 32, 32, // tusChange,. - 32, 32, 32, 103, 101, 116, 83, 116, 97, 116, 117, 115, 58, 32, 103, 101, // getStatus: ge - 116, 83, 116, 97, 116, 117, 115, 44, 10, 32, 32, 32, 32, 32, 32, 32, // tStatus,. - 32, 100, 105, 115, 99, 111, 110, 110, 101, 99, 116, 58, 32, 100, 105, 115, // disconnect: dis - 99, 111, 110, 110, 101, 99, 116, 10, 32, 32, 32, 32, 125, 59, 10, 125, // connect. };.} - 41, 40, 41, 59, 10, 0 // )();. + 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 105, 102, 32, // }. if + 40, 119, 115, 41, 32, 123, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, // (ws) {. + 32, 32, 32, 119, 115, 46, 111, 110, 99, 108, 111, 115, 101, 32, 61, 32, // ws.onclose = + 110, 117, 108, 108, 59, 32, 47, 47, 32, 233, 152, 187, 230, 173, 162, 232, // null; // ....... + 135, 170, 229, 138, 168, 233, 135, 141, 232, 191, 158, 10, 32, 32, 32, 32, // ............ + 32, 32, 32, 32, 32, 32, 32, 32, 119, 115, 46, 99, 108, 111, 115, 101, // ws.close + 40, 41, 59, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, // ();. + 119, 115, 32, 61, 32, 110, 117, 108, 108, 59, 10, 32, 32, 32, 32, 32, // ws = null;. + 32, 32, 32, 125, 10, 32, 32, 32, 32, 32, 32, 32, 32, 115, 101, 116, // }. set + 83, 116, 97, 116, 117, 115, 40, 39, 100, 105, 115, 99, 111, 110, 110, 101, // Status('disconne + 99, 116, 101, 100, 39, 41, 59, 10, 32, 32, 32, 32, 125, 10, 10, 32, // cted');. }.. + 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 123, 10, 32, 32, 32, 32, // return {. + 32, 32, 32, 32, 99, 111, 110, 110, 101, 99, 116, 58, 32, 99, 111, 110, // connect: con + 110, 101, 99, 116, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, 115, 101, // nect,. se + 110, 100, 58, 32, 115, 101, 110, 100, 44, 10, 32, 32, 32, 32, 32, 32, // nd: send,. + 32, 32, 111, 110, 77, 101, 115, 115, 97, 103, 101, 58, 32, 111, 110, 77, // onMessage: onM + 101, 115, 115, 97, 103, 101, 44, 10, 32, 32, 32, 32, 32, 32, 32, 32, // essage,. + 111, 110, 83, 116, 97, 116, 117, 115, 67, 104, 97, 110, 103, 101, 58, 32, // onStatusChange: + 111, 110, 83, 116, 97, 116, 117, 115, 67, 104, 97, 110, 103, 101, 44, 10, // onStatusChange,. + 32, 32, 32, 32, 32, 32, 32, 32, 103, 101, 116, 83, 116, 97, 116, 117, // getStatu + 115, 58, 32, 103, 101, 116, 83, 116, 97, 116, 117, 115, 44, 10, 32, 32, // s: getStatus,. + 32, 32, 32, 32, 32, 32, 100, 105, 115, 99, 111, 110, 110, 101, 99, 116, // disconnect + 58, 32, 100, 105, 115, 99, 111, 110, 110, 101, 99, 116, 10, 32, 32, 32, // : disconnect. + 32, 125, 59, 10, 125, 41, 40, 41, 59, 10, 0 // };.})();. }; const struct mg_mem_file mg_packed_files[] = { - {"/css/style.css", v3, sizeof(v3) - 1, 1781250466}, + {"/css/style.css", v3, sizeof(v3) - 1, 1781688563}, {"/index.html", v4, sizeof(v4) - 1, 1781250466}, - {"/js/app.js", v5, sizeof(v5) - 1, 1781250466}, + {"/js/app.js", v5, sizeof(v5) - 1, 1781693852}, {"/js/monitor.js", v6, sizeof(v6) - 1, 1781250466}, - {"/js/pages.js", v7, sizeof(v7) - 1, 1781250466}, - {"/js/ws-client.js", v8, sizeof(v8) - 1, 1781250466}, + {"/js/pages.js", v7, sizeof(v7) - 1, 1781693844}, + {"/js/ws-client.js", v8, sizeof(v8) - 1, 1781693786}, {NULL, NULL, 0, 0} }; diff --git a/src/system/libweb_server/src/web_server.cpp b/src/system/libweb_server/src/web_server.cpp index df13914..b66e48b 100644 --- a/src/system/libweb_server/src/web_server.cpp +++ b/src/system/libweb_server/src/web_server.cpp @@ -18,11 +18,11 @@ LOCAL pthread_mutex_t g_ws_conns_mutex = PTHREAD_MUTEX_INITIALIZER; static pthread_t thread_id; -void ws_send_all(const char *p_tx, uint16_t tx_len) +void ws_send_all(const char *p_tx, size_t tx_len) { if(NULL == p_tx || 0 == tx_len) { - LOG_E("ws_send_all arg not valid, p_tx:%p, tx_len:%d", p_tx, tx_len); + LOG_E("ws_send_all arg not valid, p_tx:%p, tx_len:%zu", p_tx, tx_len); return; } @@ -39,25 +39,48 @@ void ws_send_all(const char *p_tx, uint16_t tx_len) } -void ws_send_one(unsigned long conn_id, const char *p_tx, uint16_t tx_len) +bool ws_send_one(unsigned long conn_id, const char *p_tx, size_t tx_len) { if(NULL == p_tx || 0 == tx_len) { - LOG_E("ws_send_one arg not valid, p_tx:%p, tx_len:%d", p_tx, tx_len); - return; + LOG_E("ws_send_one arg not valid, p_tx:%p, tx_len:%zu", p_tx, tx_len); + return false; } + bool ok = false; pthread_mutex_lock(&g_ws_conns_mutex); for(uint32_t i = 0; i < g_ws_conns.size(); i++) { struct mg_connection *c = g_ws_conns[i]; if(c->id == conn_id && c->is_websocket && !c->is_draining) { - mg_ws_send(c, p_tx, tx_len, WEBSOCKET_OP_TEXT); + size_t sent = mg_ws_send(c, p_tx, tx_len, WEBSOCKET_OP_TEXT); + ok = (sent >= tx_len); break; } } pthread_mutex_unlock(&g_ws_conns_mutex); + return ok; +} + +bool ws_send_binary(unsigned long conn_id, const void *data, size_t len) +{ + if(NULL == data || 0 == len) return false; + + bool ok = false; + pthread_mutex_lock(&g_ws_conns_mutex); + for(uint32_t i = 0; i < g_ws_conns.size(); i++) + { + struct mg_connection *c = g_ws_conns[i]; + if(c->id == conn_id && c->is_websocket && !c->is_draining) + { + size_t sent = mg_ws_send(c, data, len, WEBSOCKET_OP_BINARY); + ok = (sent >= len); + break; + } + } + pthread_mutex_unlock(&g_ws_conns_mutex); + return ok; } diff --git a/src/system/libweb_server/src/ws_method.cpp b/src/system/libweb_server/src/ws_method.cpp index be2898c..32f019a 100644 --- a/src/system/libweb_server/src/ws_method.cpp +++ b/src/system/libweb_server/src/ws_method.cpp @@ -4,6 +4,10 @@ #include "mySystem.h" #include "myDatacenter.h" #include "mongoose.h" +#include "myCmd.h" +#include +#include +#include typedef struct { @@ -499,6 +503,148 @@ LOCAL void set_param_signal_data(stru_ws_session &s, const std::string& saddr, c } +LOCAL void ws_send_large_text(unsigned long conn_id, const char *type, const std::string &data) +{ + const size_t CHUNK_MAX = 35000; + + if(data.size() <= CHUNK_MAX) + { + cJSON *resp = cJSON_CreateObject(); + cJSON_AddStringToObject(resp, "type", type); + cJSON_AddStringToObject(resp, "data", data.c_str()); + char *p_tx = cJSON_PrintUnformatted(resp); + if(p_tx) + { + ws_send_one(conn_id, p_tx, strlen(p_tx)); + free(p_tx); + } + cJSON_Delete(resp); + return; + } + + std::vector cuts; + size_t pos = 0; + while(pos < data.size()) + { + size_t end = pos + CHUNK_MAX; + if(end >= data.size()) end = data.size(); + + while(end < data.size() && (data[end] & 0xC0) == 0x80) end++; + + cuts.push_back(end); + pos = end; + } + + size_t total_chunks = cuts.size(); + pos = 0; + + MY_LOG_I("ws_send_large_text: %zu chunks, %zu bytes total", total_chunks, data.size()); + + for(size_t seq = 0; seq < total_chunks; seq++) + { + size_t end = cuts[seq]; + std::string chunk = data.substr(pos, end - pos); + pos = end; + + cJSON *resp = cJSON_CreateObject(); + cJSON_AddStringToObject(resp, "type", "cmd_rsp_chunk"); + cJSON_AddNumberToObject(resp, "seq", (double)seq); + cJSON_AddNumberToObject(resp, "total", (double)total_chunks); + cJSON_AddStringToObject(resp, "data", chunk.c_str()); + char *p_tx = cJSON_PrintUnformatted(resp); + if(p_tx) + { + size_t tx_len = strlen(p_tx); + bool ok = ws_send_one(conn_id, p_tx, tx_len); + free(p_tx); + if(!ok) + { + MY_LOG_E("ws_send_large_text: chunk %zu/%zu failed (len=%zu)", seq, total_chunks, tx_len); + cJSON_Delete(resp); + break; + } + usleep(5000); + } + cJSON_Delete(resp); + } +} + + +LOCAL std::string ws_cmd_exec(const char *cmd_line) +{ + if(NULL == cmd_line || 0 == strlen(cmd_line)) + { + return ""; + } + + char line[1024]; + strncpy(line, cmd_line, sizeof(line) - 1); + line[sizeof(line) - 1] = '\0'; + + char *argv[16]; + int argc = 0; + char *p = strtok(line, " \t"); + while(NULL != p && argc < 16) + { + argv[argc++] = p; + p = strtok(NULL, " \t"); + } + + if(0 == argc) + { + return ""; + } + + stru_cmd *p_cmd = cmd_find(argv[0]); + if(NULL == p_cmd) + { + return std::string("[unknown] ") + argv[0]; + } + + fflush(stdout); + int pipefd[2]; + if(0 != pipe(pipefd)) + { + return "pipe failed"; + } + + std::string result; + pthread_t reader_thread; + auto *reader_ctx = new std::pair(pipefd[0], &result); + + pthread_create(&reader_thread, NULL, + [](void *arg) -> void* { + auto *ctx = (std::pair*)arg; + char rbuf[4096]; + ssize_t nr; + while((nr = read(ctx->first, rbuf, sizeof(rbuf))) > 0) + { + ctx->second->append(rbuf, nr); + } + close(ctx->first); + delete ctx; + return NULL; + }, + reader_ctx); + + int saved_stdout = dup(STDOUT_FILENO); + dup2(pipefd[1], STDOUT_FILENO); + close(pipefd[1]); + + p_cmd->func(argc, argv); + fflush(stdout); + + dup2(saved_stdout, STDOUT_FILENO); + close(saved_stdout); + + pthread_join(reader_thread, NULL); + + if(!result.empty()) + { + return result; + } + return "(no output)"; +} void ws_recv(struct mg_connection *c, const char* p_rx, uint16_t rx_len) { @@ -526,6 +672,22 @@ void ws_recv(struct mg_connection *c, const char* p_rx, uint16_t rx_len) cJSON *signal_type = cJSON_GetObjectItem(root, "signal_type"); cJSON *signal_data = cJSON_GetObjectItem(root, "signal_data"); cJSON *setting_zone = cJSON_GetObjectItem(root, "setting_zone"); + cJSON *type = cJSON_GetObjectItem(root, "type"); + if(type && cJSON_IsString(type) && type->valuestring) + { + if(0 == strcmp(type->valuestring, "cmd")) + { + cJSON *data = cJSON_GetObjectItem(root, "data"); + if(data && cJSON_IsString(data) && data->valuestring) + { + std::string result = ws_cmd_exec(data->valuestring); + ws_send_binary(c->id, result.data(), result.size()); + } + cJSON_Delete(root); + return; + } + } + cJSON *curd = cJSON_GetObjectItem(root, "curd"); diff --git a/test/web_root/css/style.css b/test/web_root/css/style.css index a9e4441..033520b 100644 --- a/test/web_root/css/style.css +++ b/test/web_root/css/style.css @@ -538,3 +538,54 @@ body.login-page #main-content { margin-left: 0; display: flex; align-items: cent .signal-table { font-size: 12px; } .signal-table thead th, .signal-table tbody td { padding: 6px 8px; } } + +/* ===== 命令终端 ===== */ +.terminal-wrap { + background: #1e1e1e; + border-radius: 4px; + overflow: hidden; + display: flex; + flex-direction: column; + height: calc(100vh - 200px); + min-height: 400px; +} +.terminal-output { + flex: 1; + overflow-y: auto; + padding: 10px; + font-family: 'Courier New', monospace; + font-size: 13px; + color: #d4d4d4; + white-space: pre-wrap; + word-break: break-all; + background: #1e1e1e; +} +.terminal-output div { + line-height: 1.5; +} +.terminal-input-line { + display: flex; + background: #2d2d2d; + padding: 6px 10px; + border-top: 1px solid #3c3c3c; +} +.terminal-prompt { + color: #6a9955; + padding: 4px 6px 4px 0; + font-family: 'Courier New', monospace; + font-size: 13px; + white-space: nowrap; +} +.terminal-input { + flex: 1; + background: transparent; + border: none; + color: #d4d4d4; + font-family: 'Courier New', monospace; + font-size: 13px; + outline: none; +} +.term-sent { color: #569cd6; } +.term-resp { color: #d4d4d4; } +.term-err { color: #f44747; } +.term-info { color: #6a9955; } diff --git a/test/web_root/js/app.js b/test/web_root/js/app.js index c317d4a..aa553de 100644 --- a/test/web_root/js/app.js +++ b/test/web_root/js/app.js @@ -20,7 +20,8 @@ var App = (function() { { hash: '#yk', label: '⚡ 遥控 (yk)' }, { hash: '#ao', label: '🔧 参数 (ao)' }, { hash: '#param', label: '⚙ 定值 (param)' }, - { hash: '#monitor', label: '📋 数据监控' } + { hash: '#monitor', label: '📋 数据监控' }, + { hash: '#terminal', label: '💻 命令终端' } ]; function buildNav() { @@ -137,8 +138,18 @@ var App = (function() { /* ---- WS 下行数据分发 ---- */ function onWsMessage(data, raw) { + if (raw instanceof ArrayBuffer && currentPage && currentPage.onBinary) { + currentPage.onBinary(raw); + return; + } + if (!data || typeof data !== 'object') return; + if (data.type === 'cmd_rsp' && currentPage && currentPage.onData) { + currentPage.onData(data.data); + return; + } + var signalTypes = ['out', 'in', 'yk', 'ao', 'param']; for (var i = 0; i < signalTypes.length; i++) { var st = signalTypes[i]; @@ -173,6 +184,7 @@ var App = (function() { registerPage('#ao', AoPage); registerPage('#param', ParamPage); registerPage('#monitor', MonitorPage); + registerPage('#terminal', TerminalPage); // 构建导航 buildNav(); diff --git a/test/web_root/js/pages.js b/test/web_root/js/pages.js index d341d69..eed54b6 100644 --- a/test/web_root/js/pages.js +++ b/test/web_root/js/pages.js @@ -684,3 +684,91 @@ var MonitorPage = (function() { } }; })(); + + +/* ======================================================================== + * 命令终端页面 + * ======================================================================== */ +var TerminalPage = (function() { + var history = []; + var historyIdx = 0; + + function append(text, cls) { + var el = document.getElementById('term-output'); + if (!el) return; + var div = document.createElement('div'); + div.className = cls || ''; + div.textContent = text; + el.appendChild(div); + el.scrollTop = el.scrollHeight; + } + + return { + render: function(container) { + history = []; + historyIdx = 0; + container.innerHTML = '' + + '' + + '
' + + '
' + + '
' + + 'cmd > ' + + '' + + '
' + + '
'; + + var input = document.getElementById('term-input'); + if (!input) return; + + input.onkeydown = function(e) { + if (e.key === 'Enter') { + var cmd = input.value.trim(); + if (cmd) { + history.push(cmd); + historyIdx = history.length; + append('cmd > ' + cmd, 'term-sent'); + if (!WsClient.send({type:'cmd', data:cmd})) { + append('[未连接]', 'term-err'); + } + } + input.value = ''; + } else if (e.key === 'ArrowUp') { + e.preventDefault(); + if (history.length > 0) { + historyIdx = Math.max(0, historyIdx - 1); + input.value = history[historyIdx]; + } + } else if (e.key === 'ArrowDown') { + e.preventDefault(); + if (historyIdx < history.length - 1) { + historyIdx++; + input.value = history[historyIdx]; + } else { + historyIdx = history.length; + input.value = ''; + } + } + }; + + append('输入 help 查看所有命令', 'term-info'); + }, + + onData: function(data) { + if (data) append(data, 'term-resp'); + }, + + onBinary: function(ab) { + var decoder = new TextDecoder('utf-8'); + var text = decoder.decode(ab); + if (text) append(text, 'term-resp'); + }, + + onEnter: function() { + var input = document.getElementById('term-input'); + if (input) setTimeout(function() { input.focus(); }, 100); + }, + + onLeave: function() { + } + }; +})(); diff --git a/test/web_root/js/ws-client.js b/test/web_root/js/ws-client.js index ca9b19a..3adaa46 100644 --- a/test/web_root/js/ws-client.js +++ b/test/web_root/js/ws-client.js @@ -30,6 +30,7 @@ var WsClient = (function() { try { ws = new WebSocket(url); + ws.binaryType = 'arraybuffer'; } catch (e) { setStatus('disconnected'); scheduleReconnect(); @@ -57,6 +58,16 @@ var WsClient = (function() { ws.onmessage = function(e) { var raw = e.data; + if (raw instanceof ArrayBuffer) { + if (typeof MonitorRing !== 'undefined') { + MonitorRing.push('↓', '[binary ' + raw.byteLength + 'B]'); + } + for (var i = 0; i < msgCallbacks.length; i++) { + try { msgCallbacks[i](null, raw); } catch (ex) {} + } + return; + } + // 写入监控日志 if (typeof MonitorRing !== 'undefined') { MonitorRing.push('↓', raw);