Skip to content

Instantly share code, notes, and snippets.

@mcspr
Last active April 3, 2019 19:49
Show Gist options
  • Save mcspr/8dd70144250867feefe1806840c46d6c to your computer and use it in GitHub Desktop.
Save mcspr/8dd70144250867feefe1806840c46d6c to your computer and use it in GitHub Desktop.
Check ~100ms WS stream
diff --git a/src/AsyncWebSocket.cpp b/src/AsyncWebSocket.cpp
index f507aa7..9499414 100644
--- a/src/AsyncWebSocket.cpp
+++ b/src/AsyncWebSocket.cpp
@@ -536,6 +536,7 @@ void AsyncWebSocketClient::_runQueue(){
while(!_messageQueue.isEmpty() && _messageQueue.front()->finished()){
_messageQueue.remove(_messageQueue.front());
}
+ Serial.printf("> _runQueue() size:%u heap:%u\n", _messageQueue.length(), ESP.getFreeHeap());
if(!_controlQueue.isEmpty() && (_messageQueue.isEmpty() || _messageQueue.front()->betweenFrames()) && webSocketSendFrameWindow(_client) > (size_t)(_controlQueue.front()->len() - 1)){
_controlQueue.front()->send(_client);
@@ -602,6 +603,12 @@ void AsyncWebSocketClient::ping(uint8_t *data, size_t len){
void AsyncWebSocketClient::_onError(int8_t){}
void AsyncWebSocketClient::_onTimeout(uint32_t time){
+ while (!_messageQueue.isEmpty()) {
+ _messageQueue.remove(_messageQueue.front());
+ }
+ while (!_controlQueue.isEmpty()) {
+ _controlQueue.remove(_controlQueue.front());
+ }
_client->close(true);
}
> data:1400 heap:278692
> _runQueue() size:1 heap:277152
> _runQueue() size:1 heap:277008
> data:1400 heap:277028
> _runQueue() size:2 heap:275484
> data:1400 heap:275484
> _runQueue() size:3 heap:273932
> data:1400 heap:273932
> _runQueue() size:4 heap:272380
> data:1400 heap:272380
> _runQueue() size:5 heap:270828
> data:1400 heap:270828
> _runQueue() size:6 heap:269276
> _runQueue() size:6 heap:269256
> data:1400 heap:269276
> _runQueue() size:7 heap:267724
> data:1400 heap:267724
> _runQueue() size:8 heap:266172
> data:1400 heap:266172
> _runQueue() size:9 heap:264620
> data:1400 heap:264620
> _runQueue() size:10 heap:263068
> data:1400 heap:263068
> _runQueue() size:11 heap:261516
> _runQueue() size:11 heap:259760
> _runQueue() size:10 heap:262820
> _runQueue() size:9 heap:264368
> data:1400 heap:263128
> _runQueue() size:10 heap:261588
> data:1400 heap:263056
> _runQueue() size:11 heap:261512
> data:1400 heap:261512
> _runQueue() size:12 heap:259964
> data:1400 heap:259964
> _runQueue() size:13 heap:258412
> data:1400 heap:258412
> _runQueue() size:14 heap:256860
> _runQueue() size:14 heap:256840
> data:1400 heap:256860
> _runQueue() size:15 heap:255308
> data:1400 heap:253600
> _runQueue() size:16 heap:252048
> data:1400 heap:253752
> _runQueue() size:17 heap:252200
> data:1400 heap:252176
> _runQueue() size:18 heap:250624
> data:1400 heap:250644
> _runQueue() size:19 heap:249100
> _runQueue() size:19 heap:249080
> data:1400 heap:249100
> _runQueue() size:20 heap:247548
> data:1400 heap:247548
> _runQueue() size:21 heap:245996
> data:1400 heap:245996
> _runQueue() size:22 heap:244444
> data:1400 heap:244444
> _runQueue() size:23 heap:242896
> data:1400 heap:242896
> _runQueue() size:24 heap:241344
> _runQueue() size:24 heap:239588
> _runQueue() size:23 heap:242340
> data:1400 heap:241416
> _runQueue() size:24 heap:239864
> _runQueue() size:23 heap:242644
> _runQueue() size:22 heap:244424
> data:1400 heap:242960
> _runQueue() size:23 heap:241412
> _runQueue() size:22 heap:244188
> _runQueue() size:21 heap:245968
> data:1400 heap:244504
> _runQueue() size:22 heap:242956
> _runQueue() size:21 heap:245736
> _runQueue() size:20 heap:247516
> data:1400 heap:246048
> _runQueue() size:21 heap:244500
> _runQueue() size:20 heap:247284
> _runQueue() size:19 heap:249060
> data:1400 heap:247600
> _runQueue() size:20 heap:246052
> _runQueue() size:19 heap:249068
> _runQueue() size:18 heap:250376
> _runQueue() size:18 heap:247516
> data:1400 heap:249140
> _runQueue() size:19 heap:247608
> _runQueue() size:18 heap:250388
> _runQueue() size:17 heap:251924
> data:1400 heap:250688
> _runQueue() size:18 heap:249148
> _runQueue() size:17 heap:252160
> _runQueue() size:16 heap:253484
> data:1400 heap:252248
> _runQueue() size:17 heap:250696
> _runQueue() size:16 heap:253708
> _runQueue() size:15 heap:255028
> data:1400 heap:253796
> _runQueue() size:16 heap:252248
> _runQueue() size:15 heap:255264
> _runQueue() size:14 heap:256576
> data:1400 heap:255344
> _runQueue() size:15 heap:253796
> _runQueue() size:14 heap:256812
> _runQueue() size:13 heap:258132
> _runQueue() size:13 heap:256880
> data:1400 heap:256896
> _runQueue() size:14 heap:255348
> _runQueue() size:13 heap:258132
> _runQueue() size:12 heap:259676
> data:1400 heap:258452
> _runQueue() size:13 heap:256900
> _runQueue() size:12 heap:259916
> _runQueue() size:11 heap:261236
> data:1400 heap:260008
> _runQueue() size:12 heap:258456
> _runQueue() size:11 heap:261472
> _runQueue() size:10 heap:262788
> data:1400 heap:261556
> _runQueue() size:11 heap:260008
> _runQueue() size:10 heap:263020
> _runQueue() size:9 heap:264336
> data:1400 heap:263108
> _runQueue() size:10 heap:261564
> _runQueue() size:9 heap:264576
> _runQueue() size:8 heap:265892
> _runQueue() size:8 heap:264636
> data:1400 heap:264656
> _runQueue() size:9 heap:263116
> _runQueue() size:8 heap:265904
> _runQueue() size:7 heap:267680
> data:1400 heap:266216
> _runQueue() size:8 heap:264672
> _runQueue() size:7 heap:267456
> _runQueue() size:6 heap:269008
> data:1400 heap:267784
> _runQueue() size:7 heap:266232
> _runQueue() size:6 heap:269236
> _runQueue() size:5 heap:270788
> data:1400 heap:269332
> _runQueue() size:6 heap:267784
> _runQueue() size:5 heap:270568
> _runQueue() size:4 heap:272344
> data:1400 heap:270884
> _runQueue() size:5 heap:269344
> _runQueue() size:4 heap:272112
> _runQueue() size:3 heap:273896
> _runQueue() size:3 heap:272416
> _runQueue() size:2 heap:275220
> data:1400 heap:275504
> _runQueue() size:3 heap:272400
> _runQueue() size:2 heap:275232
> _runQueue() size:1 heap:276788
> data:1400 heap:275556
> _runQueue() size:2 heap:274004
> _runQueue() size:1 heap:277012
> _runQueue() size:0 heap:278336
> data:1400 heap:278688
> _runQueue() size:1 heap:277148
> _runQueue() size:0 heap:278344
> data:1400 heap:278744
> _runQueue() size:1 heap:277196
> _runQueue() size:0 heap:278376
> data:1400 heap:278736
> _runQueue() size:1 heap:277196
> _runQueue() size:0 heap:278380
> data:1400 heap:278744
> _runQueue() size:1 heap:277196
> _runQueue() size:0 heap:278376
> data:1400 heap:278736
> _runQueue() size:1 heap:277196
> _runQueue() size:0 heap:278380
> data:1400 heap:278744
> _runQueue() size:1 heap:277196
> _runQueue() size:0 heap:278376
> data:1400 heap:278736
> _runQueue() size:1 heap:277196
> _runQueue() size:0 heap:278380
> data:1400 heap:278744
> _runQueue() size:1 heap:277196
> data:1400 heap:277068
> _runQueue() size:2 heap:275528
> _runQueue() size:2 heap:275500
> data:1400 heap:275528
> _runQueue() size:3 heap:273976
> data:1400 heap:273976
> _runQueue() size:4 heap:272424
> data:1400 heap:272424
> _runQueue() size:5 heap:270872
> data:1400 heap:270872
> _runQueue() size:6 heap:269320
> data:1400 heap:269320
> _runQueue() size:7 heap:267768
> _runQueue() size:7 heap:267740
> data:1400 heap:267768
> _runQueue() size:8 heap:266216
> data:1400 heap:266216
> _runQueue() size:9 heap:264664
> data:1400 heap:264664
> _runQueue() size:10 heap:263112
> data:1400 heap:263112
> _runQueue() size:11 heap:259852
> data:1400 heap:261560
> _runQueue() size:12 heap:260008
> _runQueue() size:12 heap:258244
> _runQueue() size:11 heap:261000
> _runQueue() size:10 heap:263092
> _runQueue() size:9 heap:264640
> _runQueue() size:8 heap:266192
> _runQueue() size:7 heap:267748
> _runQueue() size:6 heap:269300
> _runQueue() size:5 heap:270848
> _runQueue() size:4 heap:272400
> _runQueue() size:3 heap:273956
> _runQueue() size:2 heap:275508
> _runQueue() size:1 heap:277060
> _runQueue() size:0 heap:278616
> data:1400 heap:278732
> _runQueue() size:1 heap:277184
> _runQueue() size:0 heap:278380
> data:1400 heap:278744
> _runQueue() size:1 heap:277196
> _runQueue() size:0 heap:278376
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
[env:default]
platform = espressif32
board = lolin32
monitor_speed = 115200
framework = arduino
#include <Arduino.h>
#include <WiFi.h>
#include <ESPAsyncWebServer.h>
#include <AsyncWebSocket.h>
#include "ws_test.h"
AsyncWebServer server(80);
AsyncWebSocket ws("/ws");
const char* WIFI_SSID = "SSID";
const char* WIFI_PASS = "PASS";
void wsEvent(AsyncWebSocket* websocket, AsyncWebSocketClient* client, AwsEventType type, void* arg, uint8_t* data, size_t len) {
switch (type) {
case WS_EVT_CONNECT:
ws.textAll(ESP.getSdkVersion());
ws.textAll("client connected");
break;
default:
break;
}
}
void setup() {
Serial.begin(115200);
Serial.println();
Serial.flush();
WiFi.persistent(false);
WiFi.mode(WIFI_STA);
WiFi.begin(WIFI_SSID, WIFI_PASS);
if (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.printf("WiFi Failed!\n");
return;
}
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
Serial.print("Hostname: ");
Serial.println(WiFi.getHostname());
server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
request->send_P(200, "text/html", index_html);
});
ws.onEvent(wsEvent);
server.addHandler(&ws);
server.onNotFound([](AsyncWebServerRequest* request) {
request->send(404, "text/plain", "Not found");
});
Serial.print("Starting webserver on ");
Serial.println(ESP.getSdkVersion());
server.begin();
}
void loop() {
if (ws.count()) {
Serial.printf("> data:1400 heap:%u\n", ESP.getFreeHeap());
ws.textAll(data_1400);
}
delay(100);
}
const char index_html[] = R"EOF(
<html>
<head>
<title>test page</title>
</head>
<body>
<textarea id="output" style="height:100%;width:100%;"></textarea>
</body>
<script>
function processData(data) {
var elem = document.getElementById("output");
elem.value += data;
elem.value += "\n";
}
var root = new URL(window.location);
var ws_url = new URL("/ws", root);
ws_url.protocol = "ws";
var ws = new WebSocket(ws_url.href);
ws.onmessage = function(evt) {
if (evt.data) {
processData(evt.data);
}
};
</script>
<p id="dummy-4096" style="display:none;">
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
</p>
</html>
)EOF";
const char data_1400[] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment