Liu Song’s Projects


~/Projects/AWTRIX2.0-Controller

git clone https://code.lsong.org/AWTRIX2.0-Controller

Commit

Commit
61a942a40f4f74aeeb3a25b4c8df3b432ed56f37
Author
Mazze2000 <[email protected]>
Date
2019-07-04 14:12:37 +0200 +0200
Diffstat
 lib/AutoConnect-master/.gitattributes | 2 
 lib/AutoConnect-master/.gitignore | 12 
 lib/AutoConnect-master/.travis.yml | 45 
 lib/AutoConnect-master/LICENSE | 21 
 lib/AutoConnect-master/README.md | 162 
 lib/AutoConnect-master/docs/404.html | 20 
 lib/AutoConnect-master/docs/acelements.html | 314 
 lib/AutoConnect-master/docs/achandling.html | 694 
 lib/AutoConnect-master/docs/acintro.html | 181 
 lib/AutoConnect-master/docs/acjson.html | 397 
 lib/AutoConnect-master/docs/acupload.html | 366 
 lib/AutoConnect-master/docs/advancedusage.html | 442 
 lib/AutoConnect-master/docs/api.html | 284 
 lib/AutoConnect-master/docs/apiaux.html | 291 
 lib/AutoConnect-master/docs/apiconfig.html | 251 
 lib/AutoConnect-master/docs/apielements.html | 617 
 lib/AutoConnect-master/docs/apiextra.html | 43 
 lib/AutoConnect-master/docs/assets/fonts/font-awesome.css | 4 
 lib/AutoConnect-master/docs/assets/fonts/material-icons.css | 13 
 lib/AutoConnect-master/docs/assets/images/icons/bitbucket.1b09e088.svg | 1 
 lib/AutoConnect-master/docs/assets/images/icons/github.f0b8504a.svg | 1 
 lib/AutoConnect-master/docs/assets/images/icons/gitlab.6dd19c00.svg | 1 
 lib/AutoConnect-master/docs/assets/javascripts/application.b260a35d.js | 6 
 lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.da.js | 1 
 lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.de.js | 1 
 lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.du.js | 1 
 lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.es.js | 1 
 lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.fi.js | 1 
 lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.fr.js | 1 
 lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.hu.js | 1 
 lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.it.js | 1 
 lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.ja.js | 1 
 lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.jp.js | 1 
 lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.multi.js | 1 
 lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.nl.js | 1 
 lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.no.js | 1 
 lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.pt.js | 1 
 lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.ro.js | 1 
 lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.ru.js | 1 
 lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.stemmer.support.js | 1 
 lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.sv.js | 1 
 lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.th.js | 1 
 lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.tr.js | 1 
 lib/AutoConnect-master/docs/assets/javascripts/lunr/tinyseg.js | 1 
 lib/AutoConnect-master/docs/assets/javascripts/lunr/wordcut.js | 1 
 lib/AutoConnect-master/docs/assets/javascripts/modernizr.74668098.js | 1 
 lib/AutoConnect-master/docs/assets/stylesheets/application-palette.224b79ff.css | 1 
 lib/AutoConnect-master/docs/assets/stylesheets/application.4031d38b.css | 1 
 lib/AutoConnect-master/docs/basicusage.html | 137 
 lib/AutoConnect-master/docs/changelog.html | 90 
 lib/AutoConnect-master/docs/colorized.html | 71 
 lib/AutoConnect-master/docs/credit.html | 175 
 lib/AutoConnect-master/docs/css/extra.css | 9 
 lib/AutoConnect-master/docs/css/paragraph.css | 67 
 lib/AutoConnect-master/docs/datatips.html | 179 
 lib/AutoConnect-master/docs/faq.html | 188 
 lib/AutoConnect-master/docs/gettingstarted.html | 81 
 lib/AutoConnect-master/docs/howtoembed.html | 121 
 lib/AutoConnect-master/docs/images/BeforeAfter.svg | 639 
 lib/AutoConnect-master/docs/images/ac_auxjoin_multi.svg | 233 
 lib/AutoConnect-master/docs/images/ac_declaration.svg | 384 
 lib/AutoConnect-master/docs/images/ac_load_save.svg | 822 
 lib/AutoConnect-master/docs/images/ac_objects.svg | 1401 
 lib/AutoConnect-master/docs/images/ac_param_flow.svg | 971 
 lib/AutoConnect-master/docs/images/ac_upload_flow.svg | 973 
 lib/AutoConnect-master/docs/images/arduino-logo.svg | 93 
 lib/AutoConnect-master/docs/images/arrow_right.svg | 76 
 lib/AutoConnect-master/docs/images/fsbrowser_ba.svg | 1406 
 lib/AutoConnect-master/docs/images/handleClient.svg | 695 
 lib/AutoConnect-master/docs/images/handlePortal.svg | 705 
 lib/AutoConnect-master/docs/images/logic_sequence.svg | 504 
 lib/AutoConnect-master/docs/images/menu_login.svg | 667 
 lib/AutoConnect-master/docs/images/ov.svg | 439 
 lib/AutoConnect-master/docs/images/process_begin.svg | 1105 
 lib/AutoConnect-master/docs/index.html | 109 
 lib/AutoConnect-master/docs/js/gifffer.min.js | 1 
 lib/AutoConnect-master/docs/license.html | 31 
 lib/AutoConnect-master/docs/lsbegin.html | 37 
 lib/AutoConnect-master/docs/menu.html | 71 
 lib/AutoConnect-master/docs/menuize.html | 59 
 lib/AutoConnect-master/docs/search/search_index.json | 1 
 lib/AutoConnect-master/docs/sitemap.xml | 128 
 lib/AutoConnect-master/docs/wojson.html | 219 
 lib/AutoConnect-master/examples/Credential/Credential.ino | 171 
 lib/AutoConnect-master/examples/Elements/Elements.ino | 210 
 lib/AutoConnect-master/examples/FSBrowser/FSBrowser.ino | 358 
 lib/AutoConnect-master/examples/FSBrowser/LICENSE | 502 
 lib/AutoConnect-master/examples/FSBrowser/README.md | 13 
 lib/AutoConnect-master/examples/FSBrowser/data/index.htm | 101 
 lib/AutoConnect-master/examples/FileUpload/FileUpload.ino | 162 
 lib/AutoConnect-master/examples/HandleClient/HandleClient.ino | 128 
 lib/AutoConnect-master/examples/HandlePortal/HandlePortal.ino | 130 
 lib/AutoConnect-master/examples/HandlePortalEX/HandlePortalEX.ino | 161 
 lib/AutoConnect-master/examples/HelloWorld/Data/style.json | 5 
 lib/AutoConnect-master/examples/HelloWorld/HelloWorld.ino | 83 
 lib/AutoConnect-master/examples/Simple/Simple.ino | 181 
 lib/AutoConnect-master/examples/WebUpdate/WebUpdate.ino | 118 
 lib/AutoConnect-master/examples/mqttRSSI/README.md | 65 
 lib/AutoConnect-master/examples/mqttRSSI/data/param.json | 27 
 lib/AutoConnect-master/examples/mqttRSSI/mqttRSSI.ino | 405 
 lib/AutoConnect-master/examples/mqttRSSI_FS/data/mqtt_save.json | 23 
 lib/AutoConnect-master/examples/mqttRSSI_FS/data/mqtt_setting.json | 86 
 lib/AutoConnect-master/examples/mqttRSSI_FS/data/param.json | 27 
 lib/AutoConnect-master/examples/mqttRSSI_FS/mqttRSSI_FS.ino | 286 
 lib/AutoConnect-master/examples/mqttRSSI_NA/mqttRSSI_NA.ino | 261 
 lib/AutoConnect-master/keywords.txt | 87 
 lib/AutoConnect-master/library.json | 30 
 lib/AutoConnect-master/library.properties | 11 
 lib/AutoConnect-master/mkdocs.yml | 108 
 lib/AutoConnect-master/mkdocs/acelements.md | 429 
 lib/AutoConnect-master/mkdocs/achandling.md | 753 
 lib/AutoConnect-master/mkdocs/acintro.md | 176 
 lib/AutoConnect-master/mkdocs/acjson.md | 264 
 lib/AutoConnect-master/mkdocs/acupload.md | 384 
 lib/AutoConnect-master/mkdocs/advancedusage.md | 494 
 lib/AutoConnect-master/mkdocs/api.md | 312 
 lib/AutoConnect-master/mkdocs/apiaux.md | 315 
 lib/AutoConnect-master/mkdocs/apiconfig.md | 286 
 lib/AutoConnect-master/mkdocs/apielements.md | 804 
 lib/AutoConnect-master/mkdocs/apiextra.md | 24 
 lib/AutoConnect-master/mkdocs/basicusage.md | 107 
 lib/AutoConnect-master/mkdocs/changelog.md | 67 
 lib/AutoConnect-master/mkdocs/colorized.md | 54 
 lib/AutoConnect-master/mkdocs/credit.md | 142 
 lib/AutoConnect-master/mkdocs/css/extra.css | 9 
 lib/AutoConnect-master/mkdocs/css/paragraph.css | 67 
 lib/AutoConnect-master/mkdocs/datatips.md | 184 
 lib/AutoConnect-master/mkdocs/faq.md | 207 
 lib/AutoConnect-master/mkdocs/gettingstarted.md | 72 
 lib/AutoConnect-master/mkdocs/howtoembed.md | 129 
 lib/AutoConnect-master/mkdocs/images/BeforeAfter.svg | 639 
 lib/AutoConnect-master/mkdocs/images/ac_auxjoin_multi.svg | 233 
 lib/AutoConnect-master/mkdocs/images/ac_declaration.svg | 384 
 lib/AutoConnect-master/mkdocs/images/ac_load_save.svg | 822 
 lib/AutoConnect-master/mkdocs/images/ac_objects.svg | 1401 
 lib/AutoConnect-master/mkdocs/images/ac_param_flow.svg | 971 
 lib/AutoConnect-master/mkdocs/images/ac_upload_flow.svg | 973 
 lib/AutoConnect-master/mkdocs/images/arduino-logo.svg | 93 
 lib/AutoConnect-master/mkdocs/images/arrow_right.svg | 76 
 lib/AutoConnect-master/mkdocs/images/fsbrowser_ba.svg | 1406 
 lib/AutoConnect-master/mkdocs/images/handleClient.svg | 695 
 lib/AutoConnect-master/mkdocs/images/handlePortal.svg | 705 
 lib/AutoConnect-master/mkdocs/images/logic_sequence.svg | 504 
 lib/AutoConnect-master/mkdocs/images/menu_login.svg | 667 
 lib/AutoConnect-master/mkdocs/images/ov.svg | 439 
 lib/AutoConnect-master/mkdocs/images/process_begin.svg | 1105 
 lib/AutoConnect-master/mkdocs/index.md | 115 
 lib/AutoConnect-master/mkdocs/js/gifffer.min.js | 1 
 lib/AutoConnect-master/mkdocs/license.md | 17 
 lib/AutoConnect-master/mkdocs/lsbegin.md | 23 
 lib/AutoConnect-master/mkdocs/menu.md | 74 
 lib/AutoConnect-master/mkdocs/menuize.md | 53 
 lib/AutoConnect-master/mkdocs/wojson.md | 204 
 lib/AutoConnect-master/src/AutoConnect.cpp | 989 
 lib/AutoConnect-master/src/AutoConnect.h | 373 
 lib/AutoConnect-master/src/AutoConnectAux.cpp | 907 
 lib/AutoConnect-master/src/AutoConnectAux.h | 157 
 lib/AutoConnect-master/src/AutoConnectAuxImpl.h | 385 
 lib/AutoConnect-master/src/AutoConnectCredential.cpp | 288 
 lib/AutoConnect-master/src/AutoConnectCredential.h | 60 
 lib/AutoConnect-master/src/AutoConnectDefs.h | 154 
 lib/AutoConnect-master/src/AutoConnectElement.h | 54 
 lib/AutoConnect-master/src/AutoConnectElementBasis.h | 322 
 lib/AutoConnect-master/src/AutoConnectElementBasisImpl.h | 315 
 lib/AutoConnect-master/src/AutoConnectElementJson.h | 364 
 lib/AutoConnect-master/src/AutoConnectElementJsonImpl.h | 458 
 lib/AutoConnect-master/src/AutoConnectLabels.h | 89 
 lib/AutoConnect-master/src/AutoConnectPage.cpp | 1435 
 lib/AutoConnect-master/src/AutoConnectPage.h | 80 
 lib/AutoConnect-master/src/AutoConnectUpload.h | 38 
 lib/AutoConnect-master/src/AutoConnectUploadImpl.h | 206 
 src/AWTRIXController.cpp | 345 
 src/awtrix-conf.h | 2 

config move to server


diff --git a/lib/AutoConnect-master/.gitattributes b/lib/AutoConnect-master/.gitattributes
deleted file mode 100644
index dfe0770424b2a19faf507a501ebfc23be8f54e7b..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/.gitattributes
+++ /dev/null
@@ -1,2 +0,0 @@
-# Auto detect text files and perform LF normalization
-* text=auto




diff --git a/lib/AutoConnect-master/.gitignore b/lib/AutoConnect-master/.gitignore
deleted file mode 100644
index 73c54ec11393d53e94844c2f71394745639a48d7..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/.gitignore
+++ /dev/null
@@ -1,12 +0,0 @@
-# Files generated by build
-.vs/
-__vm/
-debug/
-Release/
-img/
-*.tmp
-*.TMP
-*.sln
-*.vcxproj
-*.vcxproj.filters
-*.vcxitems




diff --git a/lib/AutoConnect-master/.travis.yml b/lib/AutoConnect-master/.travis.yml
deleted file mode 100644
index 693552d0f1fed24b7e232c6eceaaf5e0eee0474c..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/.travis.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-banches:
-  only:
-    - master
-language: generic
-env:
-  global:
-    - IDE_VERSION=1.8.8
-  matrix:
-    - BOARD="esp8266:esp8266:generic:xtal=80,eesz=4M3M,ip=lm2f,exception=disabled,FlashMode=qio,FlashFreq=80"
-    - BOARD="esp32:esp32:esp32:FlashFreq=80,FlashSize=4M"
-before_install:
-  - "/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_1.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :1 -ac -screen 0 1280x1024x16"
-  - sleep 3
-  - export DISPLAY=:1.0
-  - wget http://downloads.arduino.cc/arduino-$IDE_VERSION-linux64.tar.xz
-  - tar xf arduino-$IDE_VERSION-linux64.tar.xz
-  - sudo mv arduino-$IDE_VERSION ~/arduino-ide
-  - export PATH=$PATH:~/arduino-ide
-  - arduino --pref "boardsmanager.additional.urls=http://arduino.esp8266.com/stable/package_esp8266com_index.json,http://dl.espressif.com/dl/package_esp32_index.json" --save-prefs
-  - if [[ "$BOARD" =~ "esp8266:esp8266:" ]]; then
-      arduino --install-boards esp8266:esp8266;
-    fi
-  - if [[ "$BOARD" =~ "esp32:esp32:" ]]; then
-      arduino --install-boards esp32:esp32;
-    fi
-  - arduino --install-library PubSubClient,PageBuilder:1.3.3
-  - arduino --install-library ArduinoJson:5.13.5
-  - buildExampleSketch() { arduino --verify --board $BOARD $PWD/examples/$1/$1.ino; }
-  - arduino --install-library ArduinoJson:6.10.1
-  - buildExampleSketch() { arduino --verify --board $BOARD $PWD/examples/$1/$1.ino; }
-install:
-  - mkdir -p ~/Arduino/libraries
-  - ln -s $PWD ~/Arduino/libraries/.
-script:
-  - buildExampleSketch Credential
-  - buildExampleSketch FSBrowser
-  - buildExampleSketch HandleClient
-  - buildExampleSketch HandlePortal
-  - buildExampleSketch HandlePortalEX
-  - buildExampleSketch Simple
-  - buildExampleSketch HelloWorld
-  - buildExampleSketch mqttRSSI
-  - buildExampleSketch mqttRSSI_FS
-  - buildExampleSketch mqttRSSI_NA
-  - buildExampleSketch FileUpload




diff --git a/lib/AutoConnect-master/LICENSE b/lib/AutoConnect-master/LICENSE
deleted file mode 100644
index 4a79f1b7a70475def4d5bf2a6a578373fe86b50b..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2018 Hieromon Ikasamo
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.




diff --git a/lib/AutoConnect-master/README.md b/lib/AutoConnect-master/README.md
deleted file mode 100644
index 3f47c14658d2bf2196f0bf1406dd5c9f350ca760..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/README.md
+++ /dev/null
@@ -1,162 +0,0 @@
-# AutoConnect for ESP8266/ESP32
-
-[![arduino-library-badge](https://www.ardu-badge.com/badge/AutoConnect.svg?)](https://www.ardu-badge.com/AutoConnect)
-[![GitHub release](https://img.shields.io/github/release/Hieromon/AutoConnect.svg)](https://github.com/Hieromon/AutoConnect/releases)
-[![Build Status](https://travis-ci.org/Hieromon/AutoConnect.svg?branch=master)](https://travis-ci.org/Hieromon/AutoConnect)
-
-An Arduino library for ESP8266/ESP32 WLAN configuration at run time with web interface. 
-
-## Overview
-
-To the dynamic configuration for joining to WLAN with SSID and PSK accordingly. It an Arduino library united with *ESP8266WebServer* class of ESP8266 or *WebServer* class of ESP32.
-Easily implementing the Web interface constituting the WLAN for ESP8266/ESP32 WiFi connection. With this library to make a sketch easily which connects from ESP8266/ESP32 to the access point at runtime by the web interface without hard-coded SSID and password.
-
-<div align="center"><img alt="Overview" width="460" src="docs/images/ov.png" />&emsp;&emsp;&emsp;<img alt="Captiveportal" width="182" src="docs/images/ov.gif" /></div>
-
-### No need pre-coded SSID &amp; password
-
-It is no needed hard-coding in advance the SSID and Password into the sketch to connect between ESP8266/ESP32 and WLAN. You can input SSID &amp; Password from a smartphone via the web interface at runtime.
-
-### Simple usage
-
-AutoConnect control screen will be displayed automatically for establishing new connections. It aids by the <a href="https://en.wikipedia.org/wiki/Captive_portal">captive portal</a> when vested the connection cannot be detected.<br>By using the [AutoConnect menu](https://hieromon.github.io/AutoConnect/menu.html), to manage the connections convenient.
-
-### Store the established connection
-
-The connection authentication data as credentials are saved automatically in EEPROM of ESP8266/ESP32 and You can select the past SSID from the [AutoConnect menu](https://hieromon.github.io/AutoConnect/menu.html).
-
-### Easy to embed in
-
-AutoConnect can be embedded easily into your sketch, just "**begin**" and "**handleClient**".
-
-###  Lives with the your sketches
-
-The sketches which provide the web page using ESP8266WebServer/WebServer there is, AutoConnect will not disturb it. AutoConnect can use an already instantiated ESP8266WebServer object(ESP8266) or WebServer object(ESP32), or itself can assign it.
-
-### Easily add user-owned web screen and  parameters <sup><sub>ENHANCED w/ v0.9.7</sub></sup>
-
-You can easily add your own web screen that can consist of representative HTML elements as the styled TEXT, INPUT, BUTTON, CHECKBOX, RADIO, SELECT, SUBMIT into the menu. It can be invoked from the AutoConnect menu and parameters can be passed.
-
-### Just loading the JSON description <sup><sub>ENHANCED w/ v0.9.7</sub></sup>
-
-These HTML elements that make up the user-owned screen can be easily loaded from the JSON description stored in PROGMEM, SPIFFS or SD.
-
-<img width="40%" src="mkdocs/images/aux_json.png">&emsp;
-<img width="32px" src="mkdocs/images/arrow_right.png" align="top">&emsp;
-<img width="30%" height="400px" src="mkdocs/images/AutoConnectAux.gif">
-
-## Supported hardware
-
-Apply the [Arduino core](https://github.com/esp8266/Arduino) of the ESP8266 Community.
-
-- Generic ESP8266 modules
-- Adafruit HUZZAH ESP8266 (ESP-12)
-- ESP-WROOM-02
-- Heltec WiFi Kit 8
-- NodeMCU 0.9 (ESP-12) / NodeMCU 1.0 (ESP-12E)
-- Olimex MOD-WIFI-ESP8266
-- SparkFun Thing
-- SweetPea ESP-210
-
-Alter the platform applying the [arduino-esp32](https://github.com/espressif/arduino-esp32) for the ESP32 modules.
-
-- ESP32Dev Board
-- SparkFun ESP32 Thing
-- WEMOS LOLIN D32
-- Ai-Thinker NodeMCU-32S
-- Heltec WiFi Kit 32
-- M5Stack
-- And other ESP32 modules supported by the Additional Board Manager URLs of the Arduino-IDE.
-
-## Simple usage
-
-### The AutoConnect menu
-
-<img src="mkdocs/images/menu_r.png" width="200">&emsp;<img src="mkdocs/images/statistics.png" width="200">&emsp;<img src="mkdocs/images/confignew.png"
- width="200">&emsp;<img src="mkdocs/images/openssid.png" width="200">
-
-### How embed the AutoConnect to the sketches you have
-
-Most simple approach to applying AutoConnect for the existing sketches, follow the below steps.
-
-<img src="mkdocs/images/beforeafter.png">
-
-## More usages and Documentation
-
-Full documentation is available on https://Hieromon.github.io/AutoConnect, some quick links at the list:
-
-- The [Installation](https://hieromon.github.io/AutoConnect/index.html#installation) is the installation procedure and requirements for the library.
-- [Getting started](https://hieromon.github.io/AutoConnect/gettingstarted.html) with the most simple sketch for using AutoConnect.
-- The [Basic usage](https://hieromon.github.io/AutoConnect/basicusage.html) guides to using the library correctly.
-- Details are explained in the [Advanced usage](https://hieromon.github.io/AutoConnect/advancedusage.html).
-- Details and usage of custom Web pages are explained in the [Custom Web pages](https://hieromon.github.io/AutoConnect/acintro.html).
-- The [API reference](https://hieromon.github.io/AutoConnect/api.html) describes the AutoConnect functions specification.
-- There are hints in [Examples](https://hieromon.github.io/AutoConnect/howtoembed.html) for making sketches with AutoConnect.
-- [FAQ](https://hieromon.github.io/AutoConnect/faq.html).
-
-## Change log
-
-### [0.9.10] June 12, 2019
-- Fixed the unable to get AutoConnectElemets values ​​in the sketch with ESP8266 arduino core 2.5.2. (issue #90)
-
-### [0.9.9] May 25, 2019
-- Supports ESP8266 Arduino core 2.5.2.
-- Menu text/background color can be statically customized. refer to the [Custom colorized](https://hieromon.github.io/AutoConnect/colorized.html) for the detailed specification for the menu colorizing.
-- Added ID attribute to HTML tag generated from AutoConnectText.
-- Added the enable attribute to the AutoConnectElements.
-- Fixed the input box layout collapsed.
-- Fixed that the decoration of AutoConnectButton was disabled.
-- Fixed that the value remains even after clearing the option with AutoConnectSelect.
-- Fixed that an alignment violation exception occurred when loading AutoConnectAux described by JSON with PROGMEM attribute.
-
-### [0.9.8] May 3, 2019
-- Supports ArduinoJson 6.9.1 or later.
-- Supports allocating JsonDocument buffer to PSRAM on ESP32 with ArduinoJson 6.10.0 or later.
-- Supports **operator`[]`** as a shortcut for AutoConnectAux::getElement function.
-- Supports **AutoConnectElement::as<T\>** function to easily coding for conversion from an AutoConnectElement to an actual type.
-- Supports new element type **AutoConnectFile** and built-in file uploader.
-- Supports a **format** attribute with the AutoConnectText element.
-- Supports a **selected** attribute with the AutoConnectSelect element.
-- Supports multiple element loading with AutoConnectAux::loadElement.
-- Changed menu labels placement in source files structure.
-- Changed API interface of AutoConnect::where function.
-- Fixed blank page responds with Configure new.
-- Fixed loading elements value missing.
-- Fixed losing elements in saveElement with ArduinoJson V6.
-- Fixed compile error with older than ESP8266 core 2.5.0.
-
-### [0.9.7] Feb. 25, 2019
-- Fixed crash in some environments. Thank you @ageurtse
-- Supports AutoConnect menu extension by user sketch with **AutoConnectAux**.
-- Supports loading and saving of user-defined parameters with JSON format.
-- Improved the WiFi connection sequence at the first WiFi.begin. Even if **AutoConnectConfig::autoReconnect** is disabled when SSID and PSK are not specified, it will use the information of the last established access point. The autoReconnect option will achieve trying the connect after a previous connection failed.
-- Supports the **AutoConnectConfig::immediateStart** option and immediately starts the portal without first trying WiFi.begin. You can start the captive portal at any time in combination with the **AutoConnectConfig::autoRise** option.
-- Improved boot uri after reset. **AutoConnectConfig::bootUri** can be specified either /_ac or HOME path as the uri to be accessed after invoking Reset from AutoConnect menu.
-- Improved source code placement of predefined macros. Defined common macros have been moved to ```AutoConnectDefs.h```.
-- Supports **AutoConnectConfig::hostName**. It activates ```WiFi.hostname()```.
-- Supports the captive portal time-out. It can be controlled by **AutoConnectConfig::portalTimeout** and **AutoConnectConfig::retainPortal**.
-
-### [0.9.6] Sept. 27, 2018
-- Improvement of RSSI detection for saved SSIDs.
-- Fixed disconnection SoftAP completely at the first connection phase of the AutoConnect::begin.
-
-### [0.9.5] Aug. 27, 2018
-- Supports the espressif arduino-esp32 core.
-- Fixed that crash may occur if the number of stored credentials in the EEPROM is smaller than the number of found WiFi networks.
-
-### [0.9.4] May 5, 2018.
-- Automatically focus passphrase after selecting SSID with Configure New AP.
-- Supports AutoConnectConfig::autoReconnect option, it will scan the WLAN when it can not connect to the default SSID, apply the applicable credentials if it is saved, and try reconnecting.
-
-### [0.9.3] March 23, 2018.
-- Supports a static IP address assignment.
-
-### [0.9.2] March 19, 2018.
-- Improvement of string literal declaration with the examples, no library change.
-
-### [0.9.1] March 13, 2018.
-- A release of the stable.
-
-## License
-
-License under the [MIT license](LICENSE).




diff --git a/lib/AutoConnect-master/docs/404.html b/lib/AutoConnect-master/docs/404.html
deleted file mode 100644
index 814f777959ecead92c26fe0811876155a1a03d35..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/404.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="/AutoConnect/assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="/AutoConnect/assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="/AutoConnect/assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="/AutoConnect/assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="/AutoConnect/assets/fonts/material-icons.css"><link rel="stylesheet" href="/AutoConnect/css/paragraph.css"><link rel="stylesheet" href="/AutoConnect/css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="/AutoConnect/images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic"></span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="/AutoConnect/images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="/AutoConnect/index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="/AutoConnect/gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="/AutoConnect/menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="/AutoConnect/basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="/AutoConnect/advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="/AutoConnect/acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="/AutoConnect/acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="/AutoConnect/acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="/AutoConnect/achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7"><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="/AutoConnect/api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="/AutoConnect/apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="/AutoConnect/apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="/AutoConnect/apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="/AutoConnect/apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="/AutoConnect/howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="/AutoConnect/datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="/AutoConnect/menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="/AutoConnect/wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="/AutoConnect/lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="/AutoConnect/credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="/AutoConnect/acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="/AutoConnect/colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="/AutoConnect/faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="/AutoConnect/changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="/AutoConnect/license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>404 - Not found</h1></article></div></div></main><footer class="md-footer"><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="/AutoConnect/assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="/AutoConnect/assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"/AutoConnect/"}})</script><script src="/AutoConnect/js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/acelements.html b/lib/AutoConnect-master/docs/acelements.html
deleted file mode 100644
index a16f2e96c04a980c9156755b079903cdbf6a2ed0..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/acelements.html
+++ /dev/null
@@ -1,314 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/acelements.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>AutoConnectElements - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#the-elements-for-the-custom-web-pages" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">AutoConnectElements</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--active md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6" checked><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">AutoConnectElements</label><a href="acelements.html" title="AutoConnectElements" class="md-nav__link md-nav__link--active">AutoConnectElements</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#the-elements-for-the-custom-web-pages" title="The elements for the custom Web pages" class="md-nav__link">The elements for the custom Web pages</a></li><li class="md-nav__item"><a href="#layout-on-a-custom-web-page" title="Layout on a custom Web page" class="md-nav__link">Layout on a custom Web page</a></li><li class="md-nav__item"><a href="#form-and-autoconnectelements" title="Form and AutoConnectElements" class="md-nav__link">Form and AutoConnectElements</a></li><li class="md-nav__item"><a href="#autoconnectelement-a-basic-class-of-elements" title="AutoConnectElement - A basic class of elements" class="md-nav__link">AutoConnectElement - A basic class of elements</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#name" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#value" title=" value" class="md-nav__link"> value</a></li><li class="md-nav__item"><a href="#type" title=" type" class="md-nav__link"> type</a></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectbutton" title="AutoConnectButton" class="md-nav__link">AutoConnectButton</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_1" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#name_1" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#value_1" title=" value" class="md-nav__link"> value</a></li><li class="md-nav__item"><a href="#action" title=" action" class="md-nav__link"> action</a></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectcheckbox" title="AutoConnectCheckbox" class="md-nav__link">AutoConnectCheckbox</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_2" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#name_2" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#value_2" title=" value" class="md-nav__link"> value</a></li><li class="md-nav__item"><a href="#label" title=" label" class="md-nav__link"> label</a></li><li class="md-nav__item"><a href="#checked" title=" checked" class="md-nav__link"> checked</a></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectfile" title="AutoConnectFile" class="md-nav__link">AutoConnectFile</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_3" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#name_3" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#value_3" title=" value" class="md-nav__link"> value</a></li><li class="md-nav__item"><a href="#label_1" title=" label" class="md-nav__link"> label</a></li><li class="md-nav__item"><a href="#store" title=" store" class="md-nav__link"> store</a></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectinput" title="AutoConnectInput" class="md-nav__link">AutoConnectInput</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_4" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#name_4" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#value_4" title=" value" class="md-nav__link"> value</a></li><li class="md-nav__item"><a href="#label_2" title=" label" class="md-nav__link"> label</a></li><li class="md-nav__item"><a href="#pattern" title=" pattern" class="md-nav__link"> pattern</a></li><li class="md-nav__item"><a href="#placeholder" title=" placeholder" class="md-nav__link"> placeholder</a></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectradio" title="AutoConnectRadio" class="md-nav__link">AutoConnectRadio</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_5" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#name_5" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#values" title=" values" class="md-nav__link"> values</a></li><li class="md-nav__item"><a href="#label_3" title=" label" class="md-nav__link"> label</a></li><li class="md-nav__item"><a href="#order" title=" order" class="md-nav__link"> order</a></li><li class="md-nav__item"><a href="#checked_1" title=" checked" class="md-nav__link"> checked</a></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectselect" title="AutoConnectSelect" class="md-nav__link">AutoConnectSelect</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_6" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#name_6" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#options" title=" options" class="md-nav__link"> options</a></li><li class="md-nav__item"><a href="#label_4" title=" label" class="md-nav__link"> label</a></li><li class="md-nav__item"><a href="#selected" title=" selected" class="md-nav__link"> selected</a></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectsubmit" title="AutoConnectSubmit" class="md-nav__link">AutoConnectSubmit</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_7" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#name_7" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#value_5" title=" value" class="md-nav__link"> value</a></li><li class="md-nav__item"><a href="#uri" title=" uri" class="md-nav__link"> uri</a></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnecttext" title="AutoConnectText" class="md-nav__link">AutoConnectText</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_8" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#name_8" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#value_6" title=" value" class="md-nav__link"> value</a></li><li class="md-nav__item"><a href="#style" title=" style" class="md-nav__link"> style</a></li><li class="md-nav__item"><a href="#format" title=" format" class="md-nav__link"> format</a></li></ul></nav></li><li class="md-nav__item"><a href="#how-to-coding-for-the-elements" title="How to coding for the elements" class="md-nav__link">How to coding for the elements</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#declaration-for-the-elements-in-sketches" title=" Declaration for the elements in Sketches" class="md-nav__link"> Declaration for the elements in Sketches</a></li><li class="md-nav__item"><a href="#variant-for-autoconnectelements" title=" Variant for AutoConnectElements" class="md-nav__link"> Variant for AutoConnectElements</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7"><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#the-elements-for-the-custom-web-pages" title="The elements for the custom Web pages" class="md-nav__link">The elements for the custom Web pages</a></li><li class="md-nav__item"><a href="#layout-on-a-custom-web-page" title="Layout on a custom Web page" class="md-nav__link">Layout on a custom Web page</a></li><li class="md-nav__item"><a href="#form-and-autoconnectelements" title="Form and AutoConnectElements" class="md-nav__link">Form and AutoConnectElements</a></li><li class="md-nav__item"><a href="#autoconnectelement-a-basic-class-of-elements" title="AutoConnectElement - A basic class of elements" class="md-nav__link">AutoConnectElement - A basic class of elements</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#name" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#value" title=" value" class="md-nav__link"> value</a></li><li class="md-nav__item"><a href="#type" title=" type" class="md-nav__link"> type</a></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectbutton" title="AutoConnectButton" class="md-nav__link">AutoConnectButton</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_1" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#name_1" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#value_1" title=" value" class="md-nav__link"> value</a></li><li class="md-nav__item"><a href="#action" title=" action" class="md-nav__link"> action</a></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectcheckbox" title="AutoConnectCheckbox" class="md-nav__link">AutoConnectCheckbox</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_2" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#name_2" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#value_2" title=" value" class="md-nav__link"> value</a></li><li class="md-nav__item"><a href="#label" title=" label" class="md-nav__link"> label</a></li><li class="md-nav__item"><a href="#checked" title=" checked" class="md-nav__link"> checked</a></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectfile" title="AutoConnectFile" class="md-nav__link">AutoConnectFile</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_3" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#name_3" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#value_3" title=" value" class="md-nav__link"> value</a></li><li class="md-nav__item"><a href="#label_1" title=" label" class="md-nav__link"> label</a></li><li class="md-nav__item"><a href="#store" title=" store" class="md-nav__link"> store</a></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectinput" title="AutoConnectInput" class="md-nav__link">AutoConnectInput</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_4" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#name_4" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#value_4" title=" value" class="md-nav__link"> value</a></li><li class="md-nav__item"><a href="#label_2" title=" label" class="md-nav__link"> label</a></li><li class="md-nav__item"><a href="#pattern" title=" pattern" class="md-nav__link"> pattern</a></li><li class="md-nav__item"><a href="#placeholder" title=" placeholder" class="md-nav__link"> placeholder</a></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectradio" title="AutoConnectRadio" class="md-nav__link">AutoConnectRadio</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_5" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#name_5" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#values" title=" values" class="md-nav__link"> values</a></li><li class="md-nav__item"><a href="#label_3" title=" label" class="md-nav__link"> label</a></li><li class="md-nav__item"><a href="#order" title=" order" class="md-nav__link"> order</a></li><li class="md-nav__item"><a href="#checked_1" title=" checked" class="md-nav__link"> checked</a></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectselect" title="AutoConnectSelect" class="md-nav__link">AutoConnectSelect</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_6" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#name_6" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#options" title=" options" class="md-nav__link"> options</a></li><li class="md-nav__item"><a href="#label_4" title=" label" class="md-nav__link"> label</a></li><li class="md-nav__item"><a href="#selected" title=" selected" class="md-nav__link"> selected</a></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectsubmit" title="AutoConnectSubmit" class="md-nav__link">AutoConnectSubmit</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_7" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#name_7" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#value_5" title=" value" class="md-nav__link"> value</a></li><li class="md-nav__item"><a href="#uri" title=" uri" class="md-nav__link"> uri</a></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnecttext" title="AutoConnectText" class="md-nav__link">AutoConnectText</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_8" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#name_8" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#value_6" title=" value" class="md-nav__link"> value</a></li><li class="md-nav__item"><a href="#style" title=" style" class="md-nav__link"> style</a></li><li class="md-nav__item"><a href="#format" title=" format" class="md-nav__link"> format</a></li></ul></nav></li><li class="md-nav__item"><a href="#how-to-coding-for-the-elements" title="How to coding for the elements" class="md-nav__link">How to coding for the elements</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#declaration-for-the-elements-in-sketches" title=" Declaration for the elements in Sketches" class="md-nav__link"> Declaration for the elements in Sketches</a></li><li class="md-nav__item"><a href="#variant-for-autoconnectelements" title=" Variant for AutoConnectElements" class="md-nav__link"> Variant for AutoConnectElements</a></li></ul></nav></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>AutoConnectElements</h1><h2 id="the-elements-for-the-custom-web-pages">The elements for the custom Web pages<a class="headerlink" href="#the-elements-for-the-custom-web-pages" title="Permanent link">&para;</a></h2>
-<p>Representative HTML elements for making the custom Web page are provided as AutoConnectElements.</p>
-<ul>
-<li><a href="#autoconnectbutton">AutoConnectButton</a>: Labeled action button</li>
-<li><a href="#autoconnectcheckbox">AutoConnectCheckbox</a>: Labeled checkbox</li>
-<li><a href="#autoconnectelement-a-basic-class-of-elements">AutoConnectElement</a>: General tag</li>
-<li><a href="#autoconnectfile">AutoConnectFile</a>: File uploader</li>
-<li><a href="#autoconnectinput">AutoConnectInput</a>: Labeled text input box</li>
-<li><a href="#autoconnectradio">AutoConnectRadio</a>: Labeled radio button</li>
-<li><a href="#autoconnectselect">AutoConnectSelect</a>: Selection list</li>
-<li><a href="#autoconnectsubmit">AutoConnectSubmit</a>: Submit button</li>
-<li><a href="#autoconnecttext">AutoConnectText</a>: Style attributed text</li>
-</ul>
-<h2 id="layout-on-a-custom-web-page">Layout on a custom Web page<a class="headerlink" href="#layout-on-a-custom-web-page" title="Permanent link">&para;</a></h2>
-<p>The elements of the page created by AutoConnectElements are aligned vertically exclude the <a href="#autoconnectradio">AutoConnectRadio</a>. You can specify the direction to arrange the radio buttons as AutoConnectRadio vertically or horizontally. This basic layout depends on the CSS of the AutoConnect menu so you can not change drastically.</p>
-<h2 id="form-and-autoconnectelements">Form and AutoConnectElements<a class="headerlink" href="#form-and-autoconnectelements" title="Permanent link">&para;</a></h2>
-<p>All AutoConnectElements placed on custom web pages will be contained into one form. Its form is fixed and created by AutoConnect. The form value (usually the text or checkbox you entered) is sent by <a href="#autoconnectsubmit">AutoConnectSubmit</a> using the <strong>POST</strong> method with HTTP. The post method sends the actual form data which is a query string whose contents are the <strong>name</strong> and <strong>value</strong> of AutoConnectElements. You can retrieve the value for the parameter with the sketch from the query string with <a href="https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer#getting-information-about-request-arguments">ESP8266WebServer::arg</a> function or <a href="https://github.com/Hieromon/PageBuilder#arguments-of-invoked-user-function">PageArgument</a> class of the <a href="api.html#on">AutoConnect::on</a> handler when the form is submitted.</p>
-<h2 id="autoconnectelement-a-basic-class-of-elements">AutoConnectElement - <small>A basic class of elements</small><a class="headerlink" href="#autoconnectelement-a-basic-class-of-elements" title="Permanent link">&para;</a></h2>
-<p>AutoConnectElement is a base class for other element classes and has common attributes for all elements. It can also be used as a <a href="#variant-for-autoconnectelements">variant</a> of each element. The following items are attributes that AutoConnectElement has and are common to other elements.</p>
-<p><i class="fa fa-eye"></i> <strong>Sample</strong><br>
-<small><strong><code>AutoConnectElement element("element", "&lt;hr&gt;");</code></strong></small></p>
-<p><small>On the page:</small><br><img src="images/acelement.png"></p>
-<h3 id="constructor"><i class="fa fa-edit"></i> Constructor<a class="headerlink" href="#constructor" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectElement(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">name,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">value)</span>
-</pre></div>
-
-<h3 id="name"><i class="fa fa-caret-right"></i> name<a class="headerlink" href="#name" title="Permanent link">&para;</a></h3>
-<p>Each element has a name. The <strong>name</strong> is the String data type. You can identify each element by the name to access it with sketches. </p>
-<h3 id="value"><i class="fa fa-caret-right"></i> value<a class="headerlink" href="#value" title="Permanent link">&para;</a></h3>
-<p>The <strong>value</strong> is the string which is a source to generate an HTML code. Characteristics of Value vary depending on the element. The value of AutoConnectElement is native HTML code. A string of value is output as HTML as it is.</p>
-<h3 id="type"><i class="fa fa-caret-right"></i> type<a class="headerlink" href="#type" title="Permanent link">&para;</a></h3>
-<p>The <strong>type</strong> indicates the type of the element and represented as the <em>ACElement_t</em> enumeration type in the sketch. Since AutoConnectElement also acts as a variant of other elements, it can be applied to handle elements collectively. At that time, the type can be referred to by the <a href="apielements.html#typeof"><strong>typeOf()</strong></a> function. The following example changes the font color of all <a href="#autoconnecttext">AutoConnectText</a> elements of a custom Web page to gray.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectAux</span>  <span style="color: #f8f8f2">customPage;</span>
-
-<span style="color: #f8f8f2">AutoConnectElementVT</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">elements</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">customPage.getElements();</span>
-<span style="color: #66d9ef">for</span> <span style="color: #f8f8f2">(AutoConnectElement</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">elm</span> <span style="color: #f8f8f2">:</span> <span style="color: #f8f8f2">elements)</span> <span style="color: #f8f8f2">{</span>
-<span style="background-color: #49483e">  <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(elm.typeOf()</span> <span style="color: #f92672">==</span> <span style="color: #f8f8f2">AC_Text)</span> <span style="color: #f8f8f2">{</span>
-</span>    <span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">text</span> <span style="color: #f92672">=</span> <span style="color: #66d9ef">reinterpret_cast</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&amp;&gt;</span><span style="color: #f8f8f2">(elm);</span>
-    <span style="color: #f8f8f2">text.style</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;color:gray;&quot;</span><span style="color: #f8f8f2">;</span>
-  <span style="color: #f8f8f2">}</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<p>The enumerators for <em>ACElement_t</em> are as follows:</p>
-<ul>
-<li>AutoConnectButton: <strong>AC_Button</strong></li>
-<li>AutoConnectCheckbox: <strong>AC_Checkbox</strong> </li>
-<li>AutoConnectElement: <strong>AC_Element</strong></li>
-<li>AutoConnectFile: <strong>AC_File</strong></li>
-<li>AutoConnectInput: <strong>AC_Input</strong></li>
-<li>AutoConnectRadio: <strong>AC_Radio</strong></li>
-<li>AutoConnectSelect: <strong>AC_Select</strong></li>
-<li>AutoConnectSubmit: <strong>AC_Submit</strong></li>
-<li>AutoConnectText: <strong>AC_Text</strong></li>
-<li>Uninitialized element: <strong>AC_Unknown</strong></li>
-</ul>
-<p>Furthermore, to convert an entity that is not an AutoConnectElement to its native type, you must <a href="https://en.cppreference.com/w/cpp/language/reinterpret_cast">re-interpret</a> that type with c++. Or, you can be coding the sketch more easily with using the <a href="apielements.html#ast62"><strong>as&lt;T></strong></a> function.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectAux</span>  <span style="color: #f8f8f2">customPage;</span>
-
-<span style="color: #f8f8f2">AutoConnectElementVT</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">elements</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">customPage.getElements();</span>
-<span style="color: #66d9ef">for</span> <span style="color: #f8f8f2">(AutoConnectElement</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">elm</span> <span style="color: #f8f8f2">:</span> <span style="color: #f8f8f2">elements)</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(elm.type()</span> <span style="color: #f92672">==</span> <span style="color: #f8f8f2">AC_Text)</span> <span style="color: #f8f8f2">{</span>
-<span style="background-color: #49483e">    <span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">text</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">customPage[elm.name].as</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">();</span>
-</span>    <span style="color: #f8f8f2">text.style</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;color:gray;&quot;</span><span style="color: #f8f8f2">;</span>
-    <span style="color: #75715e">// Or, it is also possible to write the code further reduced as follows.</span>
-    <span style="color: #75715e">// customPage[elm.name].as&lt;AutoConnectText&gt;().style = &quot;color:gray;&quot;;</span>
-  <span style="color: #f8f8f2">}</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<h2 id="autoconnectbutton">AutoConnectButton<a class="headerlink" href="#autoconnectbutton" title="Permanent link">&para;</a></h2>
-<p>AutoConnectButton generates an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">button</span> <span style="color: #a6e22e">type</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;button&quot;</span><span style="color: #f8f8f2">&gt;</span></code> tag and locates a clickable button to a custom Web page. Currently AutoConnectButton corresponds only to name, value, an <em>onclick</em> attribute of HTML button tag. An <em>onclick</em> attribute is generated from an <code>action</code> member variable of the AutoConnectButton, which is mostly used with a JavaScript to activate a script.</p>
-<p><i class="fa fa-eye"></i> <strong>Sample</strong><br>
-<small><strong><code>AutoConnectButton button("button", "OK", "myFunction()");</code></strong></small></p>
-<p><small>On the page:</small><br><img src="images/acbutton.png"></p>
-<h3 id="constructor_1"><i class="fa fa-edit"></i> Constructor<a class="headerlink" href="#constructor_1" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectButton(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">name,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">value,</span> <span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">action)</span>
-</pre></div>
-
-<h3 id="name_1"><i class="fa fa-caret-right"></i> name<a class="headerlink" href="#name_1" title="Permanent link">&para;</a></h3>
-<p>It is the <code>name</code> of the AutoConnectButton element and matches the name attribute of the button tag. It also becomes the parameter name of the query string when submitted.</p>
-<h3 id="value_1"><i class="fa fa-caret-right"></i> value<a class="headerlink" href="#value_1" title="Permanent link">&para;</a></h3>
-<p>It becomes a value of the <code>value</code> attribute of an HTML button tag.</p>
-<h3 id="action"><i class="fa fa-caret-right"></i> action<a class="headerlink" href="#action" title="Permanent link">&para;</a></h3>
-<p><strong>action</strong> is String data type and is an <em>onclick</em> attribute fire on a mouse click on the element. It is mostly used with a JavaScript to activate a script.<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup> For example, the following code defines a custom Web page that copies a content of <code>Text1</code> to <code>Text2</code> by clicking <code>Button</code>.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">scCopyText</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">R&quot;(</span>
-<span style="color: #e6db74">&lt;script&gt;</span>
-<span style="background-color: #49483e"><span style="color: #e6db74">function CopyText() {</span>
-</span><span style="background-color: #49483e"><span style="color: #e6db74">  document.getElementById(&quot;Text2&quot;).value = document.getElementById(&quot;Text1&quot;).value;</span>
-</span><span style="background-color: #49483e"><span style="color: #e6db74">}</span>
-</span><span style="color: #e6db74">&lt;/script&gt;</span>
-<span style="color: #e6db74">)&quot;</span><span style="color: #f8f8f2">;</span>
-<span style="color: #f8f8f2">ACInput(Text1,</span> <span style="color: #e6db74">&quot;Text1&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">ACInput(Text2,</span> <span style="color: #e6db74">&quot;Text2&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="background-color: #49483e"><span style="color: #f8f8f2">ACButton(Button,</span> <span style="color: #e6db74">&quot;COPY&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;CopyText()&quot;</span><span style="color: #f8f8f2">);</span>
-</span><span style="color: #f8f8f2">ACElement(TextCopy,</span> <span style="color: #f8f8f2">scCopyText);</span>
-</pre></div>
-
-<h2 id="autoconnectcheckbox">AutoConnectCheckbox<a class="headerlink" href="#autoconnectcheckbox" title="Permanent link">&para;</a></h2>
-<p>AutoConnectCheckbox generates an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">input</span> <span style="color: #a6e22e">type</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;checkbox&quot;</span><span style="color: #f8f8f2">&gt;</span></code> tag and a <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">label</span><span style="color: #f8f8f2">&gt;</span></code> tag. It places horizontally on a custom Web page by default.</p>
-<p><i class="fa fa-eye"></i> <strong>Sample</strong><br>
-<small><strong><code>AutoConnectCheckbox checkbox("checkbox", "uniqueapid", "Use APID unique", false);</code></strong></small></p>
-<p><small>On the page:</small><br><img src="images/accheckbox.png"></p>
-<h3 id="constructor_2"><i class="fa fa-edit"></i> Constructor<a class="headerlink" href="#constructor_2" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectCheckbox(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">name,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">value,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">label,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">checked)</span>
-</pre></div>
-
-<h3 id="name_2"><i class="fa fa-caret-right"></i> name<a class="headerlink" href="#name_2" title="Permanent link">&para;</a></h3>
-<p>It is the <code>name</code> of the AutoConnectCheckbox element and matches the name attribute of the input tag. It also becomes the parameter name of the query string when submitted.</p>
-<h3 id="value_2"><i class="fa fa-caret-right"></i> value<a class="headerlink" href="#value_2" title="Permanent link">&para;</a></h3>
-<p>It becomes a value of the <code>value</code> attribute of an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">input</span> <span style="color: #a6e22e">type</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;checkbox&quot;</span><span style="color: #f8f8f2">&gt;</span></code> tag.</p>
-<h3 id="label"><i class="fa fa-caret-right"></i> label<a class="headerlink" href="#label" title="Permanent link">&para;</a></h3>
-<p>A label is an optional string. A label is always arranged on the right side of the checkbox. Specification of a label will generate an HTML <code>&lt;label&gt;</code> tag with an <code>id</code> attribute. The checkbox and the label are connected by the id attribute. 
-Only <i class="far fa-square"></i> will be displayed if a label is not specified.</p>
-<h3 id="checked"><i class="fa fa-caret-right"></i> checked<a class="headerlink" href="#checked" title="Permanent link">&para;</a></h3>
-<p>A checked is a Boolean value and indicates the checked status of the checkbox. The value of the checked checkbox element is packed in the query string and sent.</p>
-<h2 id="autoconnectfile">AutoConnectFile<a class="headerlink" href="#autoconnectfile" title="Permanent link">&para;</a></h2>
-<p>AutoConnectFile generates asn HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">input</span> <span style="color: #a6e22e">type</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;file&quot;</span><span style="color: #f8f8f2">&gt;</span></code> tag and a <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">label</span><span style="color: #f8f8f2">&gt;</span></code> tag. AutoConnectFile enables file upload from the client through the web browser to ESP8266/ESP32 module. You can select the flash in the module, external SD device or any output destination as the storage of the uploaded file.</p>
-<p><i class="fa fa-eye"></i> <strong>Sample</strong><br>
-<small><strong><code>AutoConnectFile file("file", "", "Upload:", AC_File_FS)</code></strong></small></p>
-<p><small>On the page:</small><br><img src="images/acfile.png"></p>
-<h3 id="constructor_3"><i class="fa fa-edit"></i> Constructor<a class="headerlink" href="#constructor_3" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectFile(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">name,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">value,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">label,</span> <span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">ACFile_t</span> <span style="color: #f8f8f2">store)</span>
-</pre></div>
-
-<h3 id="name_3"><i class="fa fa-caret-right"></i> name<a class="headerlink" href="#name_3" title="Permanent link">&para;</a></h3>
-<p>It is the <code>name</code> of the AutoConnectFile element and matches the name attribute of the input tag. It also becomes the parameter name of the query string when submitted.</p>
-<h3 id="value_3"><i class="fa fa-caret-right"></i> value<a class="headerlink" href="#value_3" title="Permanent link">&para;</a></h3>
-<p>File name to be upload. The value contains the value entered by the client browser to the <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">input</span> <span style="color: #a6e22e">type</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;file&quot;</span><span style="color: #f8f8f2">&gt;</span></code> tag and is read-only. Even If you give a value to the constructor, it does not affect as an initial value like a default file name.</p>
-<h3 id="label_1"><i class="fa fa-caret-right"></i> label<a class="headerlink" href="#label_1" title="Permanent link">&para;</a></h3>
-<p>A <code>label</code> is an optional string. A label is always arranged on the left side of the input box. Specification of a label will generate an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">label</span><span style="color: #f8f8f2">&gt;</span></code> tag with an id attribute. The input box and the label are connected by the id attribute.</p>
-<h3 id="store"><i class="fa fa-caret-right"></i> store<a class="headerlink" href="#store" title="Permanent link">&para;</a></h3>
-<p>Specifies the destination to save the uploaded file. The destination can be specified the following values ​​in the <em>ACFile_t</em> enumeration type.</p>
-<ul>
-<li><strong><code>AC_File_FS</code></strong> : Save as the SPIFFS file in flash of ESP8266/ESP32 module.</li>
-<li><strong><code>AC_File_SD</code></strong> : Save to an external SD device connected to ESP8266/ESP32 module.</li>
-<li><strong><code>AC_File_Extern</code></strong> : Pass the content of the uploaded file to the uploader which is declared by the sketch individually. Its uploader must inherit <a href="acupload.html#to-upload-to-a-device-other-than-flash-or-sd"><strong>AutoConnectUploadHandler</strong></a> class and implements <em>_open</em>, <em>_write</em> and <em>_close</em> function.</li>
-</ul>
-<div class="admonition note">
-<p class="admonition-title">Built-in uploader is ready.</p>
-<p>AutoConnect already equips the built-in uploader for saving to the SPIFFS as AC_File_FS and the external SD as AC_File_SD. It is already implemented inside AutoConnect and will store uploaded file automatically.</p>
-</div>
-<h2 id="autoconnectinput">AutoConnectInput<a class="headerlink" href="#autoconnectinput" title="Permanent link">&para;</a></h2>
-<p>AutoConnectInput generates an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">input</span> <span style="color: #a6e22e">type</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;text&quot;</span><span style="color: #f8f8f2">&gt;</span></code> tag and a <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">label</span><span style="color: #f8f8f2">&gt;</span></code> tag. It can also have a placeholder. The value of the input box is passed to the destination in the query string and can be retrieved programmatically. You can also update from the sketches.</p>
-<p><i class="fa fa-eye"></i> <strong>Sample</strong><br>
-<small><strong><code>AutoConnectInput input("input", "", "Server", "MQTT broker server");</code></strong></small></p>
-<p><small>On the page:</small><br><img src="images/acinput.png"></p>
-<h3 id="constructor_4"><i class="fa fa-edit"></i> Constructor<a class="headerlink" href="#constructor_4" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectInput(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">name,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">value,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">label,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">pattern,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">placeholder)</span>
-</pre></div>
-
-<h3 id="name_4"><i class="fa fa-caret-right"></i> name<a class="headerlink" href="#name_4" title="Permanent link">&para;</a></h3>
-<p>It is the <code>name</code> of the AutoConnectInput element and matches the name attribute, the id attribute of the input tag. It also becomes the parameter name of the query string when submitted.</p>
-<h3 id="value_4"><i class="fa fa-caret-right"></i> value<a class="headerlink" href="#value_4" title="Permanent link">&para;</a></h3>
-<p>It becomes a string value of the <code>value</code> attribute of an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">input</span> <span style="color: #a6e22e">type</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;text&quot;</span><span style="color: #f8f8f2">&gt;</span></code> tag. The text entered from the custom Web page will be grouped in the query string of the form submission and the string set before accessing the page will be displayed as the initial value.</p>
-<h3 id="label_2"><i class="fa fa-caret-right"></i> label<a class="headerlink" href="#label_2" title="Permanent link">&para;</a></h3>
-<p>A <code>label</code> is an optional string. A label is always arranged on the left side of the input box. Specification of a label will generate an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">label</span><span style="color: #f8f8f2">&gt;</span></code> tag with an id attribute. The input box and the label are connected by the id attribute.</p>
-<h3 id="pattern"><i class="fa fa-caret-right"></i> pattern<a class="headerlink" href="#pattern" title="Permanent link">&para;</a></h3>
-<p>A <code>pattern</code> specifies a <a href="https://www.w3schools.com/js/js_regexp.asp">regular expression</a> that the AutoConnectInput element's value is checked against on form submission. If it is invalid, the background color will change, but it will be sent even if the data format does not match. To check whether the entered value matches the pattern, use the <a href="apielements.html#isvalid">isValid</a> function.</p>
-<ul>
-<li>The password that must contain 8 or more characters that are of at least one number, and one uppercase and lowercase letter:<br><code>(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}</code></li>
-<li>
-<p>Email address as <em>[email protected]</em>:<br><code>[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}</code></p>
-</li>
-<li>
-<p>IP address:<br><code>(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])</code></p>
-</li>
-<li>
-<p>Host name of Internet:<br><code>(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])</code></p>
-</li>
-<li>
-<p>Date (MM/DD/YYYY) as range 1900-2099:<br><code>(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](19|20)\d\d</code></p>
-</li>
-<li>
-<p>Twitter account:<br><code>^@?(\w){1,15}$</code></p>
-</li>
-</ul>
-<h3 id="placeholder"><i class="fa fa-caret-right"></i> placeholder<a class="headerlink" href="#placeholder" title="Permanent link">&para;</a></h3>
-<p>A placeholder is an option string. Specification of a placeholder will generate a <code>placeholder</code> attribute for the input tag.</p>
-<h2 id="autoconnectradio">AutoConnectRadio<a class="headerlink" href="#autoconnectradio" title="Permanent link">&para;</a></h2>
-<p>AutoConnectRadio generates few HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">input</span> <span style="color: #a6e22e">type</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;radio&quot;</span><span style="color: #f8f8f2">&gt;</span></code> tags as grouped and the same number of <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">label</span><span style="color: #f8f8f2">&gt;</span></code> tags. AutoConnectRadio can keep the value of a radio button as a collection. The grouped values will be placed in the custom Web page to select only one exclusively.</p>
-<p><i class="fa fa-eye"></i> <strong>Sample</strong><br>
-<small><strong><code>AutoConnectRadio radio("radio", { "30 sec.", "60 sec.", "180 sec." }, "Update period", AC_Vertical, 1);</code></strong></small></p>
-<p><small>On the page:</small><br><img src="images/acradio.png"></p>
-<h3 id="constructor_5"><i class="fa fa-edit"></i> Constructor<a class="headerlink" href="#constructor_5" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectRadio(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">name,</span> <span style="color: #f8f8f2">std</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">vector</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">String</span><span style="color: #f92672">&gt;</span> <span style="color: #66d9ef">const</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">values,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">label,</span> <span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">ACArrange_t</span> <span style="color: #f8f8f2">order,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">uint8_t</span> <span style="color: #f8f8f2">checked)</span>
-</pre></div>
-
-<h3 id="name_5"><i class="fa fa-caret-right"></i> name<a class="headerlink" href="#name_5" title="Permanent link">&para;</a></h3>
-<p>It is the <code>name</code> of the AutoConnectRadio element and matches the name attribute of the input tags. It also becomes the parameter name of the query string when submitted.</p>
-<h3 id="values"><i class="fa fa-caret-right"></i> values<a class="headerlink" href="#values" title="Permanent link">&para;</a></h3>
-<p>A <code>values</code> is an array of String type for the radio button options which as actually <a href="https://en.cppreference.com/w/cpp/container/vector">std::vector</a>. It is an initialization list can be used. The input tags will be generated from each entry in the values, the amount of which is the same as the number of items in <code>values</code>.</p>
-<h3 id="label_3"><i class="fa fa-caret-right"></i> label<a class="headerlink" href="#label_3" title="Permanent link">&para;</a></h3>
-<p>A label is an optional string. A label will be arranged in the left or top of the radio buttons according to the <strong>order</strong>. Specification of a label will generate an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">label</span><span style="color: #f8f8f2">&gt;</span></code> tag with an <code>id</code> attribute. The radio buttons and the label are connected by the id attribute.</p>
-<h3 id="order"><i class="fa fa-caret-right"></i> order<a class="headerlink" href="#order" title="Permanent link">&para;</a></h3>
-<p>A <code>order</code> specifies the direction to arrange the radio buttons. It is a value of type <code>ACArrange_t</code> and accepts one of the following:</p>
-<ul>
-<li><strong><code>AC_Horizontal</code></strong> : Horizontal arrangement.</li>
-<li><strong><code>AC_Vertical</code></strong> : Vertical arrangement.</li>
-</ul>
-<p>A label will place in the left or the top according to the <strong>order</strong>.</p>
-<h3 id="checked_1"><i class="fa fa-caret-right"></i> checked<a class="headerlink" href="#checked_1" title="Permanent link">&para;</a></h3>
-<p>A <code>checked</code> specifies the index number (1-based) of the <strong>values</strong> to be checked. If this parameter is not specified neither item is checked.</p>
-<h2 id="autoconnectselect">AutoConnectSelect<a class="headerlink" href="#autoconnectselect" title="Permanent link">&para;</a></h2>
-<p>AutoConnectSelect generates an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">select</span><span style="color: #f8f8f2">&gt;</span></code> tag (drop-down list) and few <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">option</span><span style="color: #f8f8f2">&gt;</span></code> tags.</p>
-<p><i class="fa fa-eye"></i> <strong>Sample</strong><br>
-<small><strong><code>AutoConnectSelect select("select", { String("Europe/London"), String("Europe/Berlin"), String("Europe/Helsinki"), String("Europe/Moscow"), String("Asia/Dubai") }, "Select TZ name");</code></strong></small></p>
-<p><small>On the page:</small><br><img src="images/acselect.png"></p>
-<h3 id="constructor_6"><i class="fa fa-edit"></i> Constructor<a class="headerlink" href="#constructor_6" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectSelect(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">name,</span> <span style="color: #f8f8f2">std</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">vector</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">String</span><span style="color: #f92672">&gt;</span> <span style="color: #66d9ef">const</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">options,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">label,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">uint8_t</span> <span style="color: #f8f8f2">selected)</span>
-</pre></div>
-
-<h3 id="name_6"><i class="fa fa-caret-right"></i> name<a class="headerlink" href="#name_6" title="Permanent link">&para;</a></h3>
-<p>It is the <code>name</code> of the AutoConnectSelect element and matches the name attribute of the select tags.</p>
-<h3 id="options"><i class="fa fa-caret-right"></i> options<a class="headerlink" href="#options" title="Permanent link">&para;</a></h3>
-<p>An <code>options</code> is an array of String type for the options which as actually <a href="https://en.cppreference.com/w/cpp/container/vector">std::vector</a> for an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">option</span><span style="color: #f8f8f2">&gt;</span></code> tag. It is an initialization list can be used. The option tags will be generated from each entry in the options, the amount of which is the same as the number of items in an <code>options</code>.</p>
-<h3 id="label_4"><i class="fa fa-caret-right"></i> label<a class="headerlink" href="#label_4" title="Permanent link">&para;</a></h3>
-<p>A <code>label</code> is an optional string. A label is always arranged on the left side of the drop-down list. Specification of a label will generate an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">label</span><span style="color: #f8f8f2">&gt;</span></code> tag with an id attribute. The select tag and the label are connected by the id attribute.</p>
-<h3 id="selected"><i class="fa fa-caret-right"></i> selected<a class="headerlink" href="#selected" title="Permanent link">&para;</a></h3>
-<p>A <code>selected</code> is an optional value. Specifies that an option should be pre-selected when the page loads.</p>
-<h2 id="autoconnectsubmit">AutoConnectSubmit<a class="headerlink" href="#autoconnectsubmit" title="Permanent link">&para;</a></h2>
-<p>AutoConnectSubmit generates an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">input</span> <span style="color: #a6e22e">type</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;button&quot;</span><span style="color: #f8f8f2">&gt;</span></code> tag attached <code class="codehilite">onclick</code> attribute. The native code of the <code class="codehilite">onclick</code> attribute is the submission of the form with the <strong>POST</strong> method.</p>
-<p><i class="fa fa-eye"></i> <strong>Sample</strong><br>
-<small><strong><code>AutoConnectSubmit submit("submit", "Save", "/mqtt_save");</code></strong></small></p>
-<p><small>On the page:</small><br><img src="images/acsubmit.png"></p>
-<h3 id="constructor_7"><i class="fa fa-edit"></i> Constructor<a class="headerlink" href="#constructor_7" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectSubmit(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">name,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">value,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">uri)</span>
-</pre></div>
-
-<h3 id="name_7"><i class="fa fa-caret-right"></i> name<a class="headerlink" href="#name_7" title="Permanent link">&para;</a></h3>
-<p>It is the <code>name</code> of the AutoConnectSubmit element and matches the name attribute of the input tag.</p>
-<h3 id="value_5"><i class="fa fa-caret-right"></i> value<a class="headerlink" href="#value_5" title="Permanent link">&para;</a></h3>
-<p>It becomes a string of the <code>value</code> attribute of an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">input</span> <span style="color: #a6e22e">type</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;button&quot;</span><span style="color: #f8f8f2">&gt;</span></code> tag. The <code>value</code> will be displayed as a label of the button.</p>
-<h3 id="uri"><i class="fa fa-caret-right"></i> uri<a class="headerlink" href="#uri" title="Permanent link">&para;</a></h3>
-<p>A <code>uri</code> specifies the URI to send form data when the button declared by AutoConnectSubmit is clicked.</p>
-<p>The query string of the form data sent with AutoConnectSubmit contains the URI of the page. Its parameter name is <code>_acuri</code>. In Sketch, you can know the called URI by referring to the <code>_acuri</code> parameter with the destination page handler. The actual query string is as follows:</p>
-<p>_acuri=<strong>CALLER_URI</strong></p>
-<h2 id="autoconnecttext">AutoConnectText<a class="headerlink" href="#autoconnecttext" title="Permanent link">&para;</a></h2>
-<p>AutoConnectText generates an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">div</span><span style="color: #f8f8f2">&gt;</span></code> tag. A <code class="codehilite">style</code> attribute will be attached if a <a href="#style">style</a> parameter is passed.</p>
-<p><i class="fa fa-eye"></i> <strong>Sample</strong><br>
-<small><strong><code>AutoConnectText text("text", "Publishing the WiFi signal strength to MQTT channel. RSSI value of ESP8266 to the channel created on ThingSpeak", "font-family:serif;color:#4682b4;");</code></strong></small></p>
-<p><small>On the page:</small><br><img src="images/actext.png"></p>
-<h3 id="constructor_8"><i class="fa fa-edit"></i> Constructor<a class="headerlink" href="#constructor_8" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectText(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">name,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">value,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">style,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">format)</span>
-</pre></div>
-
-<h3 id="name_8"><i class="fa fa-caret-right"></i> name<a class="headerlink" href="#name_8" title="Permanent link">&para;</a></h3>
-<p>A <code>name</code> does not exist in the generated HTML. It provides only a means of accessing elements with the sketches.</p>
-<h3 id="value_6"><i class="fa fa-caret-right"></i> value<a class="headerlink" href="#value_6" title="Permanent link">&para;</a></h3>
-<p>It becomes content and also can contain the native HTML code, but remember that your written code is enclosed by the div tag.</p>
-<h3 id="style"><i class="fa fa-caret-right"></i> style<a class="headerlink" href="#style" title="Permanent link">&para;</a></h3>
-<p>A <code>style</code> specifies the qualification style to give to the content and can use the style attribute format as it is.</p>
-<h3 id="format"><i class="fa fa-caret-right"></i> format<a class="headerlink" href="#format" title="Permanent link">&para;</a></h3>
-<p>A <code>format</code> is a pointer to a null-terminated multibyte string specifying how to interpret the value. It specifies the conversion format when outputting values. The format string conforms to C-style printf library functions, but depends on the espressif sdk implementation. The conversion specification is valid only in <strong>%s</strong> format. (Left and Right justification, width are also valid.)</p>
-<h2 id="how-to-coding-for-the-elements">How to coding for the elements<a class="headerlink" href="#how-to-coding-for-the-elements" title="Permanent link">&para;</a></h2>
-<h3 id="declaration-for-the-elements-in-sketches"><i class="fa fa-edit"></i> Declaration for the elements in Sketches<a class="headerlink" href="#declaration-for-the-elements-in-sketches" title="Permanent link">&para;</a></h3>
-<p>Variables of each AutoConnetElement can be declared with macros. By using the macros, you can treat element name that is String type as variable in sketches.<sup id="fnref:2"><a class="footnote-ref" href="#fn:2" rel="footnote">2</a></sup></p>
-<p>ACElement ( <em>name</em> <small>[</small> , <em>value</em> <small>]</small> )</p>
-<p>ACButton ( <em>name</em> <small>[</small> , <em>value</em> <small>]</small> <small>[</small> , <em>action</em> <small>]</small> )</p>
-<p>ACCheckbox ( <em>name</em> <small>[</small> , <em>value</em> <small>]</small> <small>[</small> , <em>label</em> <small>]</small> <small>[</small> , <strong>true</strong> | <strong>false</strong> <small>]</small> )</p>
-<p>ACFile ( <em>name</em> <small>[</small> , <em>value</em> <small>]</small> <small>[</small> , <em>label</em> <small>]</small> <small>[</small> , <strong>AC_File_FS</strong> | <strong>AC_File_SD</strong> | <strong>AC_File_Extern</strong> <small>]</small> )</p>
-<p>ACInput ( <em>name</em> <small>[</small> , <em>value</em> <small>]</small> <small>[</small> , <em>label</em> <small>]</small> <small>[</small> , <em>pattern</em> <small>]</small> <small>[</small> , <em>placeholder</em> <small>]</small> )</p>
-<p>ACRadio ( <em>name</em> <small>[</small> , <em>values</em> <small>]</small> <small>[</small> , <em>label</em> <small>]</small> <small>[</small> , <strong>AC_Horizontal</strong> | <strong>AC_Vertical</strong> <small>]</small> <small>[</small> , <em>checked</em> <small>]</small> )</p>
-<p>ACSelect ( <em>name</em> <small>[</small> , <em>options</em> <small>]</small> <small>[</small> , <em>label</em> <small>]</small> )</p>
-<p>ACSubmit ( <em>name</em> <small>[</small> , <em>value</em> <small>]</small> <small>[</small> , <em>uri</em> <small>]</small> )</p>
-<p>ACText ( <em>name</em> <small>[</small> , <em>value</em> <small>]</small> <small>[</small> , <em>style</em> <small>]</small> <small>[</small> , <em>format</em> <small>]</small> )</p>
-<div class="admonition memo">
-<p class="admonition-title">Declaration macro usage</p>
-<p>For example, <em>AutoConnectText</em> can be declared using macros.
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectText</span> <span style="color: #f8f8f2">caption(</span><span style="color: #e6db74">&quot;caption&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;hello, world&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;color:blue;&quot;</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-equals by using <em>ACText</em> macro.<br>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">ACText(caption,</span> <span style="color: #e6db74">&quot;hello, world&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;color:blue;&quot;</span><span style="color: #f8f8f2">)</span>
-</pre></div></p>
-</div>
-<h3 id="variant-for-autoconnectelements"><i class="fa fa-edit"></i> Variant for AutoConnectElements<a class="headerlink" href="#variant-for-autoconnectelements" title="Permanent link">&para;</a></h3>
-<p>Some AutoConnectAux APIs specify AutoConnectElements as an argument. There are also functions that return a pointer to AutoConnectElements. AutoConnectElement behaves as a variant type of each element class to make these interfaces a single. Use <a href="https://en.cppreference.com/w/cpp/language/reinterpret_cast">reinterpret_cast</a> to cast from a variant pointer to an Actual type pointer of AutoConnectElements.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectAux</span> <span style="color: #f8f8f2">aux;</span>
-<span style="color: #f8f8f2">ACText(Text1,</span> <span style="color: #e6db74">&quot;hello, world&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">aux.add(Text1);</span>
-<span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">text_p</span> <span style="color: #f92672">=</span> <span style="color: #66d9ef">reinterpret_cast</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">*&gt;</span><span style="color: #f8f8f2">(aux.getElement(</span><span style="color: #e6db74">&quot;Text1&quot;</span><span style="color: #f8f8f2">));</span>
-<span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">text</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">aux.getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;Text1&quot;</span><span style="color: #f8f8f2">);</span>
-</pre></div>
-
-<div class="footnote">
-<hr />
-<ol>
-<li id="fn:1">
-<p>JavaScript can be inserted into a custom Web page using AutoConnectElement.&#160;<a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p>
-</li>
-<li id="fn:2">
-<p>The square brackets in the syntax are optional parameters, the stroke is a selection parameter, the bold fonts are literal.&#160;<a class="footnote-backref" href="#fnref:2" rev="footnote" title="Jump back to footnote 2 in the text">&#8617;</a></p>
-</li>
-</ol>
-</div></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>Custom Web pages with AutoConnect</span></div></a><a href="acjson.html" title="Custom Web pages with JSON" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>Custom Web pages with JSON</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/achandling.html b/lib/AutoConnect-master/docs/achandling.html
deleted file mode 100644
index 74abeb56c8792ef8288831e315a1b5efb20418f3..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/achandling.html
+++ /dev/null
@@ -1,694 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/achandling.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>Handling the custom Web pages - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#page-container-component" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">Handling the custom Web pages</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--active md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6" checked><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">Handling the custom Web pages</label><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link md-nav__link--active">Handling the custom Web pages</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#page-container-component" title="Page, Container, Component" class="md-nav__link">Page, Container, Component</a></li><li class="md-nav__item"><a href="#handing-autoconnectelements-with-the-sketches" title="Handing AutoConnectElements with the sketches" class="md-nav__link">Handing AutoConnectElements with the sketches</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#add-autoconnectelements-to-the-autoconnectaux-object" title=" Add AutoConnectElements to the AutoConnectAux object" class="md-nav__link"> Add AutoConnectElements to the AutoConnectAux object</a></li><li class="md-nav__item"><a href="#get-autoconnectelement-from-the-autoconnectaux" title=" Get AutoConnectElement from the AutoConnectAux" class="md-nav__link"> Get AutoConnectElement from the AutoConnectAux</a></li><li class="md-nav__item"><a href="#enable-autoconnectelements-during-the-sketch-execution" title=" Enable AutoConnectElements during the sketch execution" class="md-nav__link"> Enable AutoConnectElements during the sketch execution</a></li></ul></nav></li><li class="md-nav__item"><a href="#loading-saving-autoconnectelements-with-json" title="Loading &amp; saving AutoConnectElements with JSON" class="md-nav__link">Loading &amp; saving AutoConnectElements with JSON</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#loading-autoconnectaux-autoconnectelements-with-json" title=" Loading AutoConnectAux &amp; AutoConnectElements with JSON" class="md-nav__link"> Loading AutoConnectAux &amp; AutoConnectElements with JSON</a></li><li class="md-nav__item"><a href="#saving-autoconnectelements-with-json" title=" Saving AutoConnectElements with JSON" class="md-nav__link"> Saving AutoConnectElements with JSON</a></li></ul></nav></li><li class="md-nav__item"><a href="#custom-field-data-handling" title="Custom field data handling" class="md-nav__link">Custom field data handling</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#where-to-pick-up-the-values" title=" Where to pick up the values" class="md-nav__link"> Where to pick up the values</a></li><li class="md-nav__item"><a href="#when-setting-the-initial-values" title=" When setting the initial values" class="md-nav__link"> When setting the initial values</a></li><li class="md-nav__item"><a href="#how-you-can-reach-the-values" title=" How you can reach the values" class="md-nav__link"> How you can reach the values</a></li><li class="md-nav__item"><a href="#overwrite-the-autoconnectelements" title=" Overwrite the AutoConnectElements" class="md-nav__link"> Overwrite the AutoConnectElements</a></li><li class="md-nav__item"><a href="#check-data-against-on-submission" title=" Check data against on submission" class="md-nav__link"> Check data against on submission</a></li><li class="md-nav__item"><a href="#validate-input-data" title=" Validate input data" class="md-nav__link"> Validate input data</a></li><li class="md-nav__item"><a href="#convert-data-to-actually-type" title=" Convert data to actually type" class="md-nav__link"> Convert data to actually type</a></li></ul></nav></li><li class="md-nav__item"><a href="#transitions-of-the-custom-web-pages" title="Transitions of the custom Web pages" class="md-nav__link">Transitions of the custom Web pages</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#scope-lifetime-of-autoconnectaux" title="Scope &amp; Lifetime of AutoConnectAux" class="md-nav__link">Scope &amp; Lifetime of AutoConnectAux</a></li><li class="md-nav__item"><a href="#the-uri-of-the-custom-web-pages" title="The URI of the custom Web pages" class="md-nav__link">The URI of the custom Web pages</a></li><li class="md-nav__item"><a href="#limitations" title="Limitations" class="md-nav__link">Limitations</a></li></ul></nav></li></ul></nav></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7"><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#page-container-component" title="Page, Container, Component" class="md-nav__link">Page, Container, Component</a></li><li class="md-nav__item"><a href="#handing-autoconnectelements-with-the-sketches" title="Handing AutoConnectElements with the sketches" class="md-nav__link">Handing AutoConnectElements with the sketches</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#add-autoconnectelements-to-the-autoconnectaux-object" title=" Add AutoConnectElements to the AutoConnectAux object" class="md-nav__link"> Add AutoConnectElements to the AutoConnectAux object</a></li><li class="md-nav__item"><a href="#get-autoconnectelement-from-the-autoconnectaux" title=" Get AutoConnectElement from the AutoConnectAux" class="md-nav__link"> Get AutoConnectElement from the AutoConnectAux</a></li><li class="md-nav__item"><a href="#enable-autoconnectelements-during-the-sketch-execution" title=" Enable AutoConnectElements during the sketch execution" class="md-nav__link"> Enable AutoConnectElements during the sketch execution</a></li></ul></nav></li><li class="md-nav__item"><a href="#loading-saving-autoconnectelements-with-json" title="Loading &amp; saving AutoConnectElements with JSON" class="md-nav__link">Loading &amp; saving AutoConnectElements with JSON</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#loading-autoconnectaux-autoconnectelements-with-json" title=" Loading AutoConnectAux &amp; AutoConnectElements with JSON" class="md-nav__link"> Loading AutoConnectAux &amp; AutoConnectElements with JSON</a></li><li class="md-nav__item"><a href="#saving-autoconnectelements-with-json" title=" Saving AutoConnectElements with JSON" class="md-nav__link"> Saving AutoConnectElements with JSON</a></li></ul></nav></li><li class="md-nav__item"><a href="#custom-field-data-handling" title="Custom field data handling" class="md-nav__link">Custom field data handling</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#where-to-pick-up-the-values" title=" Where to pick up the values" class="md-nav__link"> Where to pick up the values</a></li><li class="md-nav__item"><a href="#when-setting-the-initial-values" title=" When setting the initial values" class="md-nav__link"> When setting the initial values</a></li><li class="md-nav__item"><a href="#how-you-can-reach-the-values" title=" How you can reach the values" class="md-nav__link"> How you can reach the values</a></li><li class="md-nav__item"><a href="#overwrite-the-autoconnectelements" title=" Overwrite the AutoConnectElements" class="md-nav__link"> Overwrite the AutoConnectElements</a></li><li class="md-nav__item"><a href="#check-data-against-on-submission" title=" Check data against on submission" class="md-nav__link"> Check data against on submission</a></li><li class="md-nav__item"><a href="#validate-input-data" title=" Validate input data" class="md-nav__link"> Validate input data</a></li><li class="md-nav__item"><a href="#convert-data-to-actually-type" title=" Convert data to actually type" class="md-nav__link"> Convert data to actually type</a></li></ul></nav></li><li class="md-nav__item"><a href="#transitions-of-the-custom-web-pages" title="Transitions of the custom Web pages" class="md-nav__link">Transitions of the custom Web pages</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#scope-lifetime-of-autoconnectaux" title="Scope &amp; Lifetime of AutoConnectAux" class="md-nav__link">Scope &amp; Lifetime of AutoConnectAux</a></li><li class="md-nav__item"><a href="#the-uri-of-the-custom-web-pages" title="The URI of the custom Web pages" class="md-nav__link">The URI of the custom Web pages</a></li><li class="md-nav__item"><a href="#limitations" title="Limitations" class="md-nav__link">Limitations</a></li></ul></nav></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>Handling the custom Web pages</h1><h2 id="page-container-component">Page, Container, Component<a class="headerlink" href="#page-container-component" title="Permanent link">&para;</a></h2>
-<p>AutoConnectAux is the container for a custom Web page, AutoConnectElement is the component of a page. AutoConnectElements must be contained in AutoConnectAux object. (ie. they are the elements displayed on the custom Web page.) Then AutoConnect makes an AutoConnectAux to a page.</p>
-<p>AutoConnectElements declared in sketch must be programmed to add to AutoConnectAux one after another. Elements are automatically included in AutoConnectAux by AutoConnect if you load it from the JSON document. In either method, it is common to use the function of AutoConnectAux to access an element with a sketch.</p>
-<h2 id="handing-autoconnectelements-with-the-sketches">Handing AutoConnectElements with the sketches<a class="headerlink" href="#handing-autoconnectelements-with-the-sketches" title="Permanent link">&para;</a></h2>
-<p>The AutoConnectAux class has several functions to manipulate AutoConnectElements. The functions can add, delete, retrieve elements, and get and set values.</p>
-<h3 id="add-autoconnectelements-to-the-autoconnectaux-object"><i class="fa fa-edit"></i> Add AutoConnectElements to the AutoConnectAux object<a class="headerlink" href="#add-autoconnectelements-to-the-autoconnectaux-object" title="Permanent link">&para;</a></h3>
-<p>To add AutoConnectElment(s) to an AutoConnectAux object, use the add function.</p>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">add(AutoConenctElement</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">addon)</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">add(AutoConenctElementVT</span> <span style="color: #f8f8f2">addons)</span>
-</pre></div></p>
-<p>The add function adds the specified AutoConnectElement to AutoConnectAux. The AutoConnectElementVT type is the <a href="https://en.cppreference.com/w/cpp/container/vector"><em>std::vector</em></a> of the <a href="https://en.cppreference.com/w/cpp/utility/functional/reference_wrapper"><em>reference wrapper</em></a> to AutoConnectElements, and you can add these elements in bulk by using the <a href="https://en.cppreference.com/w/cpp/language/list_initialization"><em>list initialization</em></a> with the sketch.</p>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">typedef</span> <span style="color: #f8f8f2">std</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">vector</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">std</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">reference_wrapper</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectElement</span><span style="color: #f92672">&gt;&gt;</span> <span style="color: #f8f8f2">AutoConnectElementVT;</span>
-</pre></div>
-AutoConnectElements contained in AutoConnectAux object are uniquely identified by name. When adding an AutoConnectElement, if an element with the same name already exists in the AutoConnectAux, checking the type, and if it is the same, the value will be replaced. If another type of AutoConnectElement exists with the same name, that add operation will be invalid.<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup> In the following example, AutoConnectButton <code>button</code> addition will invalid because <code>hello</code> with the same name already exists as AutoConnectText.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectAux</span>  <span style="color: #f8f8f2">aux;</span>
-<span style="color: #f8f8f2">AutoConnectText</span> <span style="color: #a6e22e">text</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;hello&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;hello, world&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="background-color: #49483e"><span style="color: #f8f8f2">AutoConnectButton</span> <span style="color: #a6e22e">button</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;hello&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;hello, world&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;alert(&#39;Hello world!&#39;)&quot;)</span><span style="color: #f8f8f2">;</span>  <span style="color: #75715e">// This is invalid.</span>
-</span><span style="color: #f8f8f2">aux.add({</span> <span style="color: #f8f8f2">text,</span> <span style="color: #f8f8f2">button</span> <span style="color: #f8f8f2">});</span>
-</pre></div>
-
-<p>Similarly this, the uniqueness of the name is also necessary within the JSON document</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">{</span>
-  <span style="color: #f92672">&quot;name&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;aux&quot;</span><span style="color: #f8f8f2">,</span>
-  <span style="color: #f92672">&quot;uri&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;/aux&quot;</span><span style="color: #f8f8f2">,</span>
-  <span style="color: #f92672">&quot;menu&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #66d9ef">true</span><span style="color: #f8f8f2">,</span>
-  <span style="color: #f92672">&quot;element&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #f8f8f2">[</span>
-    <span style="color: #f8f8f2">{</span>
-      <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;hello&quot;</span><span style="color: #f8f8f2">,</span>
-      <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACText&quot;</span><span style="color: #f8f8f2">,</span>
-      <span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;hello, world&quot;</span>
-    <span style="color: #f8f8f2">},</span>
-    <span style="color: #f8f8f2">{</span>
-<span style="background-color: #49483e">      <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;hello&quot;</span><span style="color: #f8f8f2">,</span>
-</span>      <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACButton&quot;</span><span style="color: #f8f8f2">,</span>
-      <span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;hello, world&quot;</span><span style="color: #f8f8f2">,</span>
-      <span style="color: #f92672">&quot;action&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;alert(&#39;Hello world!&#39;)&quot;</span>
-    <span style="color: #f8f8f2">}</span>
-  <span style="color: #f8f8f2">]</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<div class="admonition note">
-<p class="admonition-title">Load all elements from JSON document</p>
-<p>If you load all AutoConnectElements from JSON document into AutoConnect, you do not need to sketch the population process of the AutoConnectElements. It is managed by the AutoConnect library automatically.</p>
-</div>
-<h3 id="get-autoconnectelement-from-the-autoconnectaux"><i class="fa fa-edit"></i> Get AutoConnectElement from the AutoConnectAux<a class="headerlink" href="#get-autoconnectelement-from-the-autoconnectaux" title="Permanent link">&para;</a></h3>
-<p>To retrieve an element from AutoConnectAux, use the getElement or getElements function. Normally, the getElement is needed when accessing the value of AutoConnectElement in the sketch.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectElement</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">getElement(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">name)</span>
-</pre></div>
-
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">T</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">AutoConenctAux</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">T</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">name)</span>
-</pre></div>
-
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectElementVT</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">getElements(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-
-<p>The <a href="apiaux.html#getelement"><strong>getElement</strong></a> function returns an AutoConnectElement with the specified name as a key. When you use this function, you need to know the type of AutoConnectElement in advance and specify its type &lt;T> to an argument of the getElement. A type of &lt;T> can be specified as follows.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectButton</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectButton</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">name)</span>
-<span style="color: #f8f8f2">AutoConnectCheckbox</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectCheckbox</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">name)</span>
-<span style="color: #f8f8f2">AutoConnectElement</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectElement</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">name)</span>
-<span style="color: #f8f8f2">AutoConnectFile</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectFile</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">name)</span>
-<span style="color: #f8f8f2">AutoConnectInput</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectInput</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">name)</span>
-<span style="color: #f8f8f2">AutoConnectRadio</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectRadio</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">name)</span>
-<span style="color: #f8f8f2">AutoConnectSelect</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectSelect</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">name)</span>
-<span style="color: #f8f8f2">AutoConnectSubmit</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectSubmit</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">name)</span>
-<span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">name)</span>
-</pre></div>
-
-<p>To retrieve an AutoConnectElement by specifying its type, use the following method.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectAux</span>  <span style="color: #f8f8f2">aux;</span>
-<span style="color: #f8f8f2">aux.load(</span><span style="color: #e6db74">&quot;SOME_JSON_DOCUMENT&quot;</span><span style="color: #f8f8f2">);</span>
-
-<span style="color: #75715e">// Retrieve the pointer of the AutoConnectText</span>
-<span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">text</span> <span style="color: #f92672">=</span> <span style="color: #66d9ef">reinterpret_cast</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">*&gt;</span><span style="color: #f8f8f2">(aux.getElement(</span><span style="color: #e6db74">&quot;TEXT_ELEMENT_NAME&quot;</span><span style="color: #f8f8f2">));</span>
-
-<span style="color: #75715e">// Retrieve the reference of the AutoConnectText</span>
-<span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">text</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">aux.getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;TEXT_ELEMENT_NAME&quot;</span><span style="color: #f8f8f2">);</span>
-</pre></div>
-
-<p>The AutoConnectElement type behaves as a variant of other element types. Therefore use cast or template to convert to actual type as above. In the sketch, you access the real type of AutoConnectElement after casting it and storing into the variable.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span> <span style="color: #f8f8f2">auxJson</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">String(</span><span style="color: #e6db74">&quot;{</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">title</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">:</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">Page 1 title</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">,</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">uri</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">:</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">/page1</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">,</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">menu</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">:true,</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">element</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">:[{</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">name</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">:</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">caption</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">,</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">type</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">:</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">ACText</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">,</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">value</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">:</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">hello, world</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">}]}&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">AutoConenct</span> <span style="color: #f8f8f2">portal;</span>
-<span style="color: #f8f8f2">portal.load(auxJson);</span>
-<span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">aux</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">portal.aux(</span><span style="color: #e6db74">&quot;/page1&quot;</span><span style="color: #f8f8f2">);</span>  <span style="color: #75715e">// Identify the AutoConnectAux instance with uri</span>
-<span style="color: #f8f8f2">AutoConenctText</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">text</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">aux</span><span style="color: #f92672">-&gt;</span><span style="color: #f8f8f2">getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;caption&quot;</span><span style="color: #f8f8f2">);</span>  <span style="color: #75715e">// Cast to real type and access members</span>
-<span style="color: #f8f8f2">Serial.println(text.value);</span>
-</pre></div>
-
-<p>You can also use the <a href="apiaux.html#operator">operator <strong><code>[]</code></strong> of AutoConnectAux</a> as another way to get the desired element. An operator <strong><code>[]</code></strong> is a shortcut for <a href="apiaux.html#getelement">getElement</a> function with the reference casting and makes simplify the sketch code and treats like an array with the elements placed on a custom Web page. Its argument is the name of the element to be acquired similarly to getElement function. In the sketch, by combining the <a href="apielements.html#ast62"><strong>AutoConnectElement::as&lt;T></strong></a> function with the operator <code>[]</code>, you can access the  AutoConnectElements reference according to its actual type. For example, the following sketch code returns the same as a reference of AutoConnectText element as the <code>caption</code>.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnect</span> <span style="color: #f8f8f2">portal;</span>
-<span style="color: #f8f8f2">portal.load(auxJson);</span>
-<span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">&amp;</span>  <span style="color: #f8f8f2">aux</span> <span style="color: #f92672">=</span> <span style="color: #f92672">*</span><span style="color: #f8f8f2">portal.aux(</span><span style="color: #e6db74">&quot;/page1&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="background-color: #49483e"><span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">text1</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">aux.getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectElement</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;caption&quot;</span><span style="color: #f8f8f2">);</span>
-</span><span style="background-color: #49483e"><span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">text2</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">aux[</span><span style="color: #e6db74">&quot;caption&quot;</span><span style="color: #f8f8f2">].as</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">();</span>
-</span></pre></div>
-
-<div class="admonition note">
-<p class="admonition-title">Need cast to convert to the actual type</p>
-<p>An operator <code>[]</code> returns a reference of an AutoConnectElement. It is necessary to convert the type according to the actual element type with <a href="apielements.html#ast62">AutoConnectElement::as&lt;T></a> function.
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectButton</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">AutoConnectElement</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">as</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectButton</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">()</span>
-<span style="color: #f8f8f2">AutoConnectCheckbox</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">AutoConnectElement</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">as</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectCheckbox</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">()</span>
-<span style="color: #f8f8f2">AutoConnectElement</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">AutoConnectElement</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">as</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectElement</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">()</span>
-<span style="color: #f8f8f2">AutoConnectFile</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">AutoConnectElement</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">as</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectFile</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">()</span>
-<span style="color: #f8f8f2">AutoConnectInput</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">AutoConnectElement</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">as</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectInput</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">()</span>
-<span style="color: #f8f8f2">AutoConnectRadio</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">AutoConnectElement</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">as</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectRadio</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">()</span>
-<span style="color: #f8f8f2">AutoConnectSelect</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">AutoConnectElement</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">as</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectSelect</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">()</span>
-<span style="color: #f8f8f2">AutoConnectSubmit</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">AutoConnectElement</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">as</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectSubmit</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">()</span>
-<span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">AutoConnectElement</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">as</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">()</span>
-</pre></div></p>
-</div>
-<p>To get all the AutoConnectElements in an AutoConnectAux object use the <a href="apiaux.html#getelements"><strong>getElements</strong></a> function. This function returns the vector of the reference wrapper as <strong>AutoConnectElementVT</strong> to all AutoConnectElements registered in the AutoConnectAux.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectElementVT</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">getElements(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-
-<h3 id="enable-autoconnectelements-during-the-sketch-execution"><i class="fa fa-edit"></i> Enable AutoConnectElements during the sketch execution<a class="headerlink" href="#enable-autoconnectelements-during-the-sketch-execution" title="Permanent link">&para;</a></h3>
-<p>AutoConnectElemets have an enable attribute to activate its own HTML generation. Sketches can change the HTMLization of their elements dynamically by setting or resetting the enable value. An element whose the enable attribute is true will generate itself HTML and place on the custom Web page.  And conversely, it will not generate the HTML when the value is false.</p>
-<p>For example, to enable the submit button only when the ESP module is connected to the access point in STA mode, you can sketch the following:</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WiFi.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WebServer.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;AutoConnect.h&gt;</span>
-
-<span style="color: #66d9ef">static</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span> <span style="color: #f8f8f2">AUX[]</span> <span style="color: #f8f8f2">PROGMEM</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">R&quot;(</span>
-<span style="color: #e6db74">{</span>
-<span style="color: #e6db74">  &quot;uri&quot; : &quot;/aux&quot;,</span>
-<span style="color: #e6db74">  &quot;title&quot; : &quot;Aux.&quot;,</span>
-<span style="color: #e6db74">  &quot;menu&quot; : true,</span>
-<span style="color: #e6db74">  &quot;element&quot; : [</span>
-<span style="color: #e6db74">    {</span>
-<span style="color: #e6db74">      &quot;name&quot;: &quot;input&quot;,</span>
-<span style="color: #e6db74">      &quot;type&quot;: &quot;ACInput&quot;,</span>
-<span style="color: #e6db74">      &quot;label&quot;: &quot;Input&quot;</span>
-<span style="color: #e6db74">    },</span>
-<span style="color: #e6db74">    {</span>
-<span style="color: #e6db74">      &quot;name&quot;: &quot;send&quot;,</span>
-<span style="color: #e6db74">      &quot;type&quot;: &quot;ACSubmit&quot;,</span>
-<span style="color: #e6db74">      &quot;value&quot;: &quot;SEND&quot;,</span>
-<span style="color: #e6db74">      &quot;uri&quot;: &quot;/send&quot;</span>
-<span style="color: #e6db74">    }</span>
-<span style="color: #e6db74">  ]</span>
-<span style="color: #e6db74">}</span>
-<span style="color: #e6db74">)&quot;</span><span style="color: #f8f8f2">;</span>
-
-<span style="color: #f8f8f2">AutoConnect</span>    <span style="color: #f8f8f2">portal;</span>
-<span style="color: #f8f8f2">AutoConnectAux</span> <span style="color: #f8f8f2">page;</span>
-
-<span style="color: #f8f8f2">String</span> <span style="color: #a6e22e">onPage</span><span style="color: #f8f8f2">(AutoConnectAux</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">aux,</span> <span style="color: #f8f8f2">PageArgument</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">args)</span> <span style="color: #f8f8f2">{</span>
-<span style="background-color: #49483e">  <span style="color: #f8f8f2">AutoConnectSubmit</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">send</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">aux[</span><span style="color: #e6db74">&quot;send&quot;</span><span style="color: #f8f8f2">].as</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectSubmit</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">();</span>
-</span><span style="background-color: #49483e">  <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(WiFi.isConnected())</span>
-</span><span style="background-color: #49483e">    <span style="color: #f8f8f2">send.enable</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">(WiFi.getMode()</span> <span style="color: #f92672">==</span> <span style="color: #f8f8f2">WIFI_STA);</span>
-</span><span style="background-color: #49483e">  <span style="color: #66d9ef">else</span>
-</span>    <span style="color: #f8f8f2">send.enable</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">false;</span>
-  <span style="color: #66d9ef">return</span> <span style="color: #f8f8f2">String();</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">page.load(AUX);</span>
-  <span style="color: #f8f8f2">page.on(onPage);</span>
-  <span style="color: #f8f8f2">portal.join(page);</span>
-  <span style="color: #f8f8f2">portal.begin();</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">portal.handleClient();</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<div class="admonition hint">
-<p class="admonition-title">Desirable to set or reset the enable attribute in the page handler</p>
-<p>The enable attribute can be set at any time during the sketch execution. The page handler with the <a href="apiaux.html#on">AC_EXIT_AHEAD</a> option is sure to handle it.</p>
-</div>
-<h2 id="loading-saving-autoconnectelements-with-json">Loading &amp; saving AutoConnectElements with JSON<a class="headerlink" href="#loading-saving-autoconnectelements-with-json" title="Permanent link">&para;</a></h2>
-<p>AutoConnect supports reading the custom Web page definitions written in JSON and also supports loading and saving of AutoConnectAux or AutoConnectElements. In both cases, the target object is a <a href="acjson.html">JSON document for AutoConnect</a>. However, it can not save all AutoConnectElements contained in the page as a custom Web page. (ie. AutoConnectAux)</p>
-<p><img src="images/ac_load_save.svg"></p>
-<h3 id="loading-autoconnectaux-autoconnectelements-with-json"><i class="fa fa-upload"></i> Loading AutoConnectAux &amp; AutoConnectElements with JSON<a class="headerlink" href="#loading-autoconnectaux-autoconnectelements-with-json" title="Permanent link">&para;</a></h3>
-<p>To load a JSON document as AutoConnectAux use the <a href="api.html#load"><strong>AutoConnect::load</strong></a> function and load the JSON document of each AutoConnectElement using the <a href="apiaux.html#loadelement"><strong>AutoConnectAux::loadElement</strong></a> function. Although the functions of both are similar, the structure of the target JSON document is different.</p>
-<p>The <a href="apiaux.html#load">AutoConnect::load</a> function loads the entire AutoConnectAux and creates both the AutoConnectAux instance and each AutoConnectElement instance. A single JSON document can contain multiple custom Web pages. If you write JSON of AutoConnectAux as an array, the load function generates all the pages contained in that array. Therefore, it is necessary to supply the JSON document of AutoConnectAux as an input of the load function and must contain the elements described section <a href="acjson.html#json-document-structure-for-autoconnectaux"><em>JSON document structure for AutoConnectAux</em></a>.</p>
-<p>The <a href="apiaux.html#loadelement">AutoConnectAux::loadElement</a> function loads the elements individually into an AutoConnectAux object. The structure of its supplying JSON document is not AutoConnectAux. It must be a <a href="acjson.html#json-object-for-autoconnectelements">JSON structure for AutoConnectElement</a>, but you can specify an array.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">// AutoConnectAux as a custom Web page.</span>
-<span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span> <span style="color: #f8f8f2">page[]</span> <span style="color: #f8f8f2">PROGMEM</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">R&quot;raw(</span>
-<span style="color: #e6db74">{</span>
-<span style="color: #e6db74">  &quot;title&quot;: &quot;Settings&quot;,</span>
-<span style="color: #e6db74">  &quot;uri&quot;: &quot;/settings&quot;,</span>
-<span style="color: #e6db74">  &quot;menu&quot;: true,</span>
-<span style="color: #e6db74">  &quot;element&quot;: [</span>
-<span style="color: #e6db74">    {</span>
-<span style="color: #e6db74">      &quot;name&quot;: &quot;server&quot;,</span>
-<span style="color: #e6db74">      &quot;type&quot;: &quot;ACInput&quot;,</span>
-<span style="color: #e6db74">      &quot;label&quot;: &quot;Server&quot;</span>
-<span style="color: #e6db74">    },</span>
-<span style="color: #e6db74">    {</span>
-<span style="color: #e6db74">      &quot;name&quot;: &quot;set&quot;,</span>
-<span style="color: #e6db74">      &quot;type&quot;: &quot;ACSubmit&quot;,</span>
-<span style="color: #e6db74">      &quot;value&quot;: &quot;SET&quot;,</span>
-<span style="color: #e6db74">      &quot;uri&quot; : &quot;/set&quot;</span>
-<span style="color: #e6db74">    }</span>
-<span style="color: #e6db74">  ]</span>
-<span style="color: #e6db74">}</span>
-<span style="color: #e6db74">)raw&quot;</span><span style="color: #f8f8f2">;</span>
-
-<span style="color: #75715e">// Additional AutoConnectElements.</span>
-<span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span> <span style="color: #f8f8f2">addons[]</span> <span style="color: #f8f8f2">PROGMEM</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">R&quot;raw(</span>
-<span style="color: #e6db74">[</span>
-<span style="color: #e6db74">  {</span>
-<span style="color: #e6db74">    &quot;name&quot;: &quot;notes&quot;,</span>
-<span style="color: #e6db74">    &quot;type&quot;: &quot;ACText&quot;,</span>
-<span style="color: #e6db74">    &quot;value&quot;: &quot;An update period as the below optionally.&quot;</span>
-<span style="color: #e6db74">  },</span>
-<span style="color: #e6db74">  {</span>
-<span style="color: #e6db74">    &quot;name&quot;: &quot;period&quot;,</span>
-<span style="color: #e6db74">    &quot;type&quot;: &quot;ACRadio&quot;,</span>
-<span style="color: #e6db74">    &quot;value&quot;: [</span>
-<span style="color: #e6db74">      &quot;30 sec.&quot;,</span>
-<span style="color: #e6db74">      &quot;60 sec.&quot;,</span>
-<span style="color: #e6db74">      &quot;180 sec.&quot;</span>
-<span style="color: #e6db74">    ],</span>
-<span style="color: #e6db74">    &quot;arrange&quot;: &quot;vertical&quot;,</span>
-<span style="color: #e6db74">    &quot;checked&quot;: 1</span>
-<span style="color: #e6db74">  }</span>
-<span style="color: #e6db74">]</span>
-<span style="color: #e6db74">)raw&quot;</span><span style="color: #f8f8f2">;</span>
-
-<span style="color: #f8f8f2">AutoConnect</span>     <span style="color: #f8f8f2">portal;</span>
-<span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">auxPage;</span>
-
-<span style="color: #75715e">// Load a custom Web page.</span>
-<span style="background-color: #49483e"><span style="color: #f8f8f2">portal.load(page);</span>
-</span>
-<span style="color: #75715e">// Get a &#39;/settings&#39; page</span>
-<span style="color: #f8f8f2">auxPage</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">portal.aux(</span><span style="color: #e6db74">&quot;/settings&quot;</span><span style="color: #f8f8f2">);</span>
-
-<span style="color: #75715e">// Also, load only AutoConnectRadio named the period.</span>
-<span style="background-color: #49483e"><span style="color: #f8f8f2">auxPage</span><span style="color: #f92672">-&gt;</span><span style="color: #f8f8f2">loadElement(addons,</span> <span style="color: #e6db74">&quot;period&quot;</span><span style="color: #f8f8f2">);</span>
-</span>
-<span style="color: #75715e">// Retrieve a server name from an AutoConnectText value.</span>
-<span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">serverName</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">auxPage</span><span style="color: #f92672">-&gt;</span><span style="color: #f8f8f2">getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;server&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">Serial.println(serverName.value);</span>
-</pre></div>
-
-<h3 id="saving-autoconnectelements-with-json"><i class="fa fa-download"></i> Saving AutoConnectElements with JSON<a class="headerlink" href="#saving-autoconnectelements-with-json" title="Permanent link">&para;</a></h3>
-<p>To save the AutoConnectAux or the AutoConnectElement as a JSON document, use the <a href="apiaux.html#saveelement">AutoConnectAux::saveElement</a> function. It serializes the contents of the object based on the type of the AutoConnectElement. You can persist a serialized AutoConnectElements as a JSON document to a stream.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">// Open a parameter file on the SPIFFS.</span>
-<span style="color: #f8f8f2">SPIFFS.begin();</span>
-<span style="color: #66d9ef">FILE</span> <span style="color: #f8f8f2">param</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">SPIFFS.open(</span><span style="color: #e6db74">&quot;/param&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;w&quot;</span><span style="color: #f8f8f2">);</span>
-
-<span style="color: #75715e">// Save elements as the parameters.</span>
-<span style="color: #f8f8f2">auxPage</span><span style="color: #f92672">-&gt;</span><span style="color: #f8f8f2">saveElement(param,</span> <span style="color: #f8f8f2">{</span> <span style="color: #e6db74">&quot;server&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;period&quot;</span> <span style="color: #f8f8f2">});</span>
-
-<span style="color: #75715e">// Close a parameter file.</span>
-<span style="color: #f8f8f2">param.close();</span>
-<span style="color: #f8f8f2">SPIFFS.end();</span>
-</pre></div>
-
-<p>The example above saves <code>server</code> and <code>period</code> elements from the AutoConnectAux object as mentioned above to the <code>/param</code> file on SPIFFS. Its JSON document of AutoConnectElements saved by its code looks like this:</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">[</span>
-  <span style="color: #f8f8f2">{</span>
-    <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;server&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACInput&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;An inputted server name&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;label&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Server&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;placeholder&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;&quot;</span>
-  <span style="color: #f8f8f2">},</span>
-  <span style="color: #f8f8f2">{</span>
-    <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;period&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACRadio&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #f8f8f2">[</span>
-      <span style="color: #e6db74">&quot;30 sec.&quot;</span><span style="color: #f8f8f2">,</span>
-      <span style="color: #e6db74">&quot;60 sec.&quot;</span><span style="color: #f8f8f2">,</span>
-      <span style="color: #e6db74">&quot;180 sec.&quot;</span>
-    <span style="color: #f8f8f2">],</span>
-    <span style="color: #f92672">&quot;arrange&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;vertical&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;checked&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #ae81ff">2</span>
-  <span style="color: #f8f8f2">}</span>
-<span style="color: #f8f8f2">]</span>
-</pre></div>
-
-<p>Above JSON document can be loaded as it is into a custom Web page using the loadElement function. The loadElement function also loads the value of the element, so the saved value can be restored on the custom Web page.</p>
-<h2 id="custom-field-data-handling">Custom field data handling<a class="headerlink" href="#custom-field-data-handling" title="Permanent link">&para;</a></h2>
-<p>A sketch can access variables of AutoConnectElements in the custom Web page. The value entered into the AutoConnectElements on the page is stored in the member variable of each element by AutoConnect whenever GET/POST transmission occurs. </p>
-<p>The following diagram shows the flow of the input values of a custom Web page into a sketch and is the basis for actions to manipulate the values of custom Web pages using sketches.</p>
-<p><img src="images/ac_param_flow.svg"></p>
-<h3 id="where-to-pick-up-the-values"><i class="fa fa-desktop"></i> Where to pick up the values<a class="headerlink" href="#where-to-pick-up-the-values" title="Permanent link">&para;</a></h3>
-<p>A sketch composed of handlers can receive the value of AutoConnectElements entered in a custom Web page after sending, but that handler is different from the page where the value was entered. It is necessary to be aware that can accept the entered values by the next page handler after the transition.</p>
-<p>Usually, two ways to retrieve entered values we have. One is to use the <a href="https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer#getting-information-about-request-arguments">ESP8266WebServer::arg</a> (or WebServer::arg for ESP32) function in the <a href="https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer#client-request-handlers"><code>on handler</code></a> attached by ESP8266WebServer (WebServer w/ESP32 also).</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WiFi.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WebServer.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;AutoConnect.h&gt;</span>
-
-<span style="color: #66d9ef">static</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span> <span style="color: #f8f8f2">addonJson[]</span> <span style="color: #f8f8f2">PROGMEM</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">R&quot;raw(</span>
-<span style="color: #e6db74">{</span>
-<span style="color: #e6db74">  &quot;title&quot;: &quot;Hello&quot;,</span>
-<span style="color: #e6db74">  &quot;uri&quot;: &quot;/hello&quot;,</span>
-<span style="color: #e6db74">  &quot;menu&quot;: true,</span>
-<span style="color: #e6db74">  &quot;element&quot;: [</span>
-<span style="color: #e6db74">    {</span>
-<span style="color: #e6db74">      &quot;name&quot;: &quot;feels&quot;,</span>
-<span style="color: #e6db74">      &quot;type&quot;: &quot;ACInput&quot;,</span>
-<span style="color: #e6db74">      &quot;label&quot;: &quot;What&#39;s up?&quot;</span>
-<span style="color: #e6db74">    },</span>
-<span style="color: #e6db74">    {</span>
-<span style="color: #e6db74">      &quot;name&quot;: &quot;send&quot;,</span>
-<span style="color: #e6db74">      &quot;type&quot;: &quot;ACSubmit&quot;,</span>
-<span style="color: #e6db74">      &quot;value&quot;: &quot;Just it!&quot;,</span>
-<span style="color: #e6db74">      &quot;uri&quot;: &quot;/feels&quot;</span>
-<span style="color: #e6db74">    }</span>
-<span style="color: #e6db74">  ]</span>
-<span style="color: #e6db74">}</span>
-<span style="color: #e6db74">)raw&quot;</span><span style="color: #f8f8f2">;</span>
-
-<span style="color: #f8f8f2">ESP8266WebServer</span> <span style="color: #f8f8f2">webServer;</span>
-<span style="color: #f8f8f2">AutoConnect</span> <span style="color: #a6e22e">portal</span><span style="color: #f8f8f2">(webServer);</span>
-
-<span style="color: #75715e">// Here, /feels handler</span>
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">feelsOn</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-
-  <span style="color: #75715e">// Retrieve the value of a input-box named &quot;feels&quot;</span>
-<span style="background-color: #49483e">  <span style="color: #f8f8f2">String</span> <span style="color: #f8f8f2">feel</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">webServer.arg(</span><span style="color: #e6db74">&quot;feels&quot;</span><span style="color: #f8f8f2">);</span>
-</span>
-  <span style="color: #75715e">// Echo back the value</span>
-  <span style="color: #f8f8f2">String</span> <span style="color: #f8f8f2">echo</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&lt;html&gt;&lt;p style=</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">color:blue;font-family:verdana;font-size:300%;</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">&gt;&quot;</span> <span style="color: #f92672">+</span> <span style="color: #f8f8f2">feel</span> <span style="color: #f92672">+</span> <span style="color: #f8f8f2">String(</span><span style="color: #e6db74">&quot; and a bold world!&lt;/p&gt;&lt;/html&gt;&quot;</span><span style="color: #f8f8f2">);</span>
-  <span style="color: #f8f8f2">webServer.send(</span><span style="color: #ae81ff">200</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;text/html&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">echo);</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">delay(</span><span style="color: #ae81ff">1000</span><span style="color: #f8f8f2">);</span>
-  <span style="color: #f8f8f2">webServer.on(</span><span style="color: #e6db74">&quot;/feels&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">feelsOn);</span>  <span style="color: #75715e">// Register /feels handler</span>
-  <span style="color: #f8f8f2">portal.load(addonJson);</span>           <span style="color: #75715e">// Load a custom Web page</span>
-  <span style="color: #f8f8f2">portal.begin();</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">portal.handleClient();</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<p>An above example is the most simple sketch of handling values entered into a custom Web page. This sketch obtains the string entered in the AutoConnectInput named <code>feels</code> with the <code>/feels</code> handler after page transition, and the AutoConnectInput is an <code>&lt;input type="text" name="feels"&gt;</code> element wrapped in the form as the actual HTML code. </p>
-<div class="admonition info">
-<p class="admonition-title">Should be accessed <code>/_ac</code> first</p>
-<p>When you actually try the above sketch, there is no a root handler. So the URL that should be accessed first is <code>/_ac</code> concatenated with the local IP address of the esp8266 module.</p>
-</div>
-<p>Another method is effective when custom Web pages have complicated page transitions. It is a way to straight access the AutoConnectElements member value. You can get the AutoConnectElement with the specified name using the <a href="#get-autoconnectelement-from-the-autoconnectaux">getElement</a> function. The following sketch executes the above example with AutoConnect only, without using the function of ESP8266WebServer.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WiFi.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WebServer.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;AutoConnect.h&gt;</span>
-
-<span style="color: #66d9ef">const</span> <span style="color: #66d9ef">static</span> <span style="color: #66d9ef">char</span> <span style="color: #f8f8f2">addonJson[]</span> <span style="color: #f8f8f2">PROGMEM</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">R&quot;raw(</span>
-<span style="color: #e6db74">[</span>
-<span style="color: #e6db74">  {</span>
-<span style="color: #e6db74">    &quot;title&quot;: &quot;Hello&quot;,</span>
-<span style="color: #e6db74">    &quot;uri&quot;: &quot;/hello&quot;,</span>
-<span style="color: #e6db74">    &quot;menu&quot;: true,</span>
-<span style="color: #e6db74">    &quot;element&quot;: [</span>
-<span style="color: #e6db74">      {</span>
-<span style="color: #e6db74">        &quot;name&quot;: &quot;feels&quot;,</span>
-<span style="color: #e6db74">        &quot;type&quot;: &quot;ACInput&quot;,</span>
-<span style="color: #e6db74">        &quot;label&quot;: &quot;What&#39;s up?&quot;</span>
-<span style="color: #e6db74">      },</span>
-<span style="color: #e6db74">      {</span>
-<span style="color: #e6db74">        &quot;name&quot;: &quot;send&quot;,</span>
-<span style="color: #e6db74">        &quot;type&quot;: &quot;ACSubmit&quot;,</span>
-<span style="color: #e6db74">        &quot;value&quot;: &quot;Just it!&quot;,</span>
-<span style="color: #e6db74">        &quot;uri&quot;: &quot;/feels&quot;</span>
-<span style="color: #e6db74">      }</span>
-<span style="color: #e6db74">    ]</span>
-<span style="color: #e6db74">  },</span>
-<span style="color: #e6db74">  {</span>
-<span style="color: #e6db74">    &quot;title&quot;: &quot;Hello&quot;,</span>
-<span style="color: #e6db74">    &quot;uri&quot;: &quot;/feels&quot;,</span>
-<span style="color: #e6db74">    &quot;menu&quot;: false,</span>
-<span style="color: #e6db74">    &quot;element&quot;: [</span>
-<span style="color: #e6db74">      {</span>
-<span style="color: #e6db74">        &quot;name&quot;: &quot;echo&quot;,</span>
-<span style="color: #e6db74">        &quot;type&quot;: &quot;ACText&quot;,</span>
-<span style="color: #e6db74">        &quot;style&quot;: &quot;color:blue;font-family:verdana;font-size:300%;&quot;</span>
-<span style="color: #e6db74">      }</span>
-<span style="color: #e6db74">    ]</span>
-<span style="color: #e6db74">  }</span>
-<span style="color: #e6db74">]</span>
-<span style="color: #e6db74">)raw&quot;</span><span style="color: #f8f8f2">;</span>
-
-<span style="color: #f8f8f2">AutoConnect</span> <span style="color: #f8f8f2">portal;</span>
-
-<span style="color: #75715e">// Here, /feels handler</span>
-<span style="color: #f8f8f2">String</span> <span style="color: #a6e22e">feelsOn</span><span style="color: #f8f8f2">(AutoConnectAux</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">aux,</span> <span style="color: #f8f8f2">PageArgument</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">args)</span> <span style="color: #f8f8f2">{</span>
-
-  <span style="color: #75715e">// Get the AutoConnectInput named &quot;feels&quot;.</span>
-  <span style="color: #75715e">// The where() function returns an uri string of the AutoConnectAux that triggered this handler.</span>
-<span style="background-color: #49483e">  <span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">hello</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">portal.aux(portal.where());</span>
-</span>  <span style="color: #f8f8f2">AutoConnectInput</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">feels</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">hello</span><span style="color: #f92672">-&gt;</span><span style="color: #f8f8f2">getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectInput</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;feels&quot;</span><span style="color: #f8f8f2">);</span>
-
-<span style="background-color: #49483e">  <span style="color: #75715e">// Get the AutoConnectText named &quot;echo&quot;.</span>
-</span>  <span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&amp;</span>  <span style="color: #f8f8f2">echo</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">aux.getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;echo&quot;</span><span style="color: #f8f8f2">);</span>
-
-  <span style="color: #75715e">// Echo back from input-box to /feels page.</span>
-  <span style="color: #f8f8f2">echo.value</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">feels.value</span> <span style="color: #f92672">+</span>  <span style="color: #f8f8f2">String(</span><span style="color: #e6db74">&quot; and a bold world!&quot;</span><span style="color: #f8f8f2">);</span>
-  <span style="color: #66d9ef">return</span> <span style="color: #f8f8f2">String(</span><span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">delay(</span><span style="color: #ae81ff">1000</span><span style="color: #f8f8f2">);</span>
-  <span style="color: #f8f8f2">portal.load(addonJson);</span>                       <span style="color: #75715e">// Load custom Web pages</span>
-  <span style="color: #f8f8f2">portal.on(</span><span style="color: #e6db74">&quot;/feels&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">feelsOn,</span> <span style="color: #f8f8f2">AC_EXIT_AHEAD);</span>  <span style="color: #75715e">// Register /feels handler</span>
-  <span style="color: #f8f8f2">portal.begin();</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">portal.handleClient();</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<p>The above example handles in the handler for the values of a custom Web page. An <a href="api.html#on">AutoConnect::on</a> function registers a handler for the AutoConnectAux page of the specified uri. The argument of the custom Web page handler is an AutoConnectAux of the page itself and the <a href="https://github.com/Hieromon/PageBuilder#arguments-of-invoked-user-function">PageArgument</a> object.</p>
-<p>To retrieve the values entered in a custom Web page you need to access the AutoConnectElement of the page that caused the request to this page and to do this, you use the <a href="api.html#where">AutoConnect::where</a> function. The <code>AutoConnect::where</code> function returns an uri string of the AutoConnectAux object of the custom Web page that caused the HTTP request.</p>
-<div class="admonition note">
-<p class="admonition-title">The where() function is available for only AutoConnectAux.</p>
-<p>The <code>AutoConnect::where</code> function is available only for the AutoConnectAux object. It is invalid for HTTP requests from individual pages registered with the <strong>on</strong> handler of ESP8266WebServer/WebServer for ESP32. In other words, the <code>AutoConnect::where</code> function only returns the last AutoConnecAux page called.</p>
-</div>
-<h3 id="when-setting-the-initial-values"><i class="fa fa-desktop"></i> When setting the initial values<a class="headerlink" href="#when-setting-the-initial-values" title="Permanent link">&para;</a></h3>
-<p>An AutoConnectAux page is dynamically created by AutoConnect when its uri is requested. The initial value of AutoConnectElements can be set before its page request. It is also possible during <code>loop()</code>. To set the initial value when the page is accessed it needs by the handler of its page.</p>
-<p>The <a href="api.html#on"><strong>AutoConnect::on</strong></a> and <a href="apiaux.html#on"><strong>AutoConnectAux::on</strong></a> functions register a handler for a custom Web page and also specify when to call that handler. The behavior of the two <code>on</code> functions is the same, only the class and arguments are different.</p>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">AutoConnect</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">on(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">uri,</span> <span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">AuxHandlerFunctionT</span> <span style="color: #f8f8f2">handler,</span> <span style="color: #f8f8f2">AutoConnectExitOrder_t</span> <span style="color: #f8f8f2">order)</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">on(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">AuxHandlerFunctionT</span> <span style="color: #f8f8f2">handler,</span> <span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">AutoConnectExitOrder_t</span> <span style="color: #f8f8f2">order)</span>
-</pre></div></p>
-<p>Parameter <code>uri</code> specifies an URI of the custom Web page, but an AutoConnectAux object with its URI must be registered with AutoConnect via the <a href="api.html#join">AutoConnect::join</a> function beforehand.</p>
-<div class="admonition note">
-<p class="admonition-title">AutoConnect::on/AutoConnectAux::on is not ESP8266WebServer::on</p>
-<p>The <code>on</code> function for AutoConnect is different from the <code>on</code> function of Arduino core ESP8266WebServer (WebServer for ESP32). You can share the same handler via wrapper, but access to AutoConnectElements is <strong>valid only for handlers registered with <code>on</code> function for AutoConnect</strong>.</p>
-</div>
-<p><code>AuxHandlerFunctionT</code> type is a handler declaration using with <a href="https://en.cppreference.com/w/cpp/utility/functional/function">std::function</a>.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">String</span> <span style="color: #f8f8f2">handler(AutoConnectAux</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">aux,</span> <span style="color: #f8f8f2">PageArgument</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">args)</span>
-</pre></div>
-
-<p>The handler of the custom Web page has two arguments by a reference of AutoConnectAux and a reference of PageArgument, it returns String. AutoConnect appends the string returned from the handler to the generated HTML. This allows you to add an HTML part before displaying the page.</p>
-<dl>
-<dt><code>AutoConnectExitOrder_t</code> specifies when the handler is called with the following enumeration value.</dt>
-<dd>
-<ul>
-<li><strong>AC_EXIT_AHEAD</strong> : Called before AutoConnect generates the HTML of the page. You set the value of AutoConnectElements in the handler then its value will be displayed on the page.</li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li><strong>AC_EXIT_LATER</strong> : Called after AutoConnect generates the HTML of the page. You can append to HTML generated by AutoConnect.</li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li><strong>AC_EXIT_BOTH</strong> : Called even before generating HTML and after generated.</li>
-</ul>
-</dd>
-</dl>
-<p>The following example is a part of sketch contained the handlers. </p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">// AutoConnect object declarations</span>
-<span style="color: #f8f8f2">ACInput(input1);</span>
-<span style="color: #f8f8f2">AutoConnectAux</span> <span style="color: #a6e22e">aux</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;/aux&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">{</span> <span style="color: #f8f8f2">input1</span> <span style="color: #f8f8f2">});</span>
-<span style="color: #f8f8f2">AutoConnect</span> <span style="color: #f8f8f2">portal;</span>
-<span style="color: #75715e">// Pre-declare handlers</span>
-<span style="color: #f8f8f2">String</span> <span style="color: #a6e22e">initialize</span><span style="color: #f8f8f2">(AutoConnectAux</span><span style="color: #f92672">&amp;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">PageArgument</span><span style="color: #f92672">&amp;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">String</span> <span style="color: #a6e22e">append</span><span style="color: #f8f8f2">(AutoConnectAux</span><span style="color: #f92672">&amp;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">PageArgument</span><span style="color: #f92672">&amp;</span><span style="color: #f8f8f2">);</span>
-
-<span style="color: #75715e">// Register handlers and launch the portal.</span>
-<span style="color: #f8f8f2">aux.on(initialize,</span> <span style="color: #f8f8f2">AC_AHEAD);</span>
-<span style="color: #f8f8f2">aux.on(append,</span> <span style="color: #f8f8f2">AC_LATER);</span>
-<span style="color: #f8f8f2">portal.join(aux);</span>
-<span style="color: #f8f8f2">portal.begin();</span>
-
-<span style="color: #75715e">// Some code here...</span>
-
-<span style="color: #75715e">// The handler called before HTML generating</span>
-<span style="color: #f8f8f2">String</span> <span style="color: #a6e22e">initialize</span><span style="color: #f8f8f2">(AutoConnectAux</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">aux,</span> <span style="color: #f8f8f2">PageArgument</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">args)</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">AutoConnectInput</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">input1</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">aux.getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectInput</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;input1&quot;</span><span style="color: #f8f8f2">);</span>
-  <span style="color: #75715e">// Set initial value for the input box in a custom Web page.</span>
-  <span style="color: #f8f8f2">input1.value</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;Initial value&quot;</span><span style="color: #f8f8f2">;</span>
-  <span style="color: #75715e">// Nothing appendix for a generated HTML.</span>
-  <span style="color: #66d9ef">return</span> <span style="color: #f8f8f2">String();</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #75715e">// The handler called after HTML generated</span>
-<span style="color: #f8f8f2">String</span> <span style="color: #a6e22e">append</span><span style="color: #f8f8f2">(AutoConnectAux</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">aux,</span> <span style="color: #f8f8f2">PageArgument</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">args)</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #75715e">// Append an HTML</span>
-  <span style="color: #66d9ef">return</span> <span style="color: #f8f8f2">String(</span><span style="color: #e6db74">&quot;&lt;p&gt;This text has been added.&lt;/p&gt;&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<h3 id="how-you-can-reach-the-values"><i class="fa fa-wrench"></i> How you can reach the values<a class="headerlink" href="#how-you-can-reach-the-values" title="Permanent link">&para;</a></h3>
-<p>AutoConnectSubmit uses the POST method to send HTTP requests. A value of AutoConnectInput sent to the ESP8266 or ESP32 with POST is stored in the request body of the HTTP request:
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span>POST /feels HTTP/1.1
-Host: ESP8266_IP_ADDRESS
-name1=value1&amp;name2=value2&amp;name3=value3
-</pre></div>
-ESP8266WebServer class will parse the query string and rebuilds its arguments when the above request arrives. A custom page handler registered with the <a href="https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer#client-request-handlers">ESP8266WebServer::on</a> function can access the value of AutoConnectElements with <a href="https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer#getting-information-about-request-arguments">ESP8266WebServe::arg</a> function. It reaches the values of AutoConnectElements without the intermediation of AutoConnect. Therefore, its handler will not be AutoConnectAux and can send a response to the client directly. The following example is part of a server sketch which has two web pages. The <code>/hello</code> page is a custom Web page of AutoConnectAux which has an input box named "input1". Another <code>/echo</code> page is a page handler for ESP8266WebServer, which uses the <a href="https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer#sending-responses-to-the-client">ESP8266WebServer::send</a> function to echo back the value of an input1 as an http response.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">ESP8266WebServer</span> <span style="color: #f8f8f2">server;</span>
-<span style="color: #f8f8f2">AutoConnect</span>      <span style="color: #a6e22e">portal</span><span style="color: #f8f8f2">(server);</span>
-<span style="background-color: #49483e"><span style="color: #f8f8f2">ACInput(input1,</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;INPUT&quot;</span><span style="color: #f8f8f2">);</span>
-</span><span style="color: #f8f8f2">ACSubmit(send,</span> <span style="color: #e6db74">&quot;HELLO&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;/echo&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">AutoConnectAux</span>  <span style="color: #a6e22e">aux</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;/hello&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">{</span> <span style="color: #f8f8f2">input1,</span> <span style="color: #f8f8f2">send</span> <span style="color: #f8f8f2">});</span>
-
-<span style="color: #f8f8f2">server.on(</span><span style="color: #e6db74">&quot;/echo&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">[]()</span> <span style="color: #f8f8f2">{</span>
-<span style="background-color: #49483e">  <span style="color: #f8f8f2">String</span> <span style="color: #f8f8f2">echo</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">server.arg(</span><span style="color: #e6db74">&quot;input1&quot;</span><span style="color: #f8f8f2">);</span>
-</span>  <span style="color: #f8f8f2">Serial.println(echo);</span>
-  <span style="color: #f8f8f2">server.send(</span><span style="color: #ae81ff">200</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;text/plain&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">echo);</span>
-<span style="color: #f8f8f2">});</span>
-
-<span style="color: #f8f8f2">portal.join(aux);</span>
-<span style="color: #f8f8f2">portal.begin();</span>
-</pre></div>
-
-<p>Also, you can choose another way to access arguments without going through the ESP8266WebServer class. The <a href="https://github.com/Hieromon/PageBuilder#arguments-of-invoked-user-function">PageArgument</a> object of the custom Web page handler argument is a copy of the arg object of the ESP8266WebServer class. Either of these methods is a simple and easy way to access parameters in custom Web page handlers. However, if you need to access from outside of the handler to the value of AutoConnectElements, you need to accomplish it using with the <a href="#get-autoconnectelement-from-the-autoconnectaux">AutoConnectAux::getElement</a> function. The following sketch code replaces the above example with JSON and PageArgument, and its behaves is equivalent basically to the above sketch.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">static</span> <span style="color: #66d9ef">char</span> <span style="color: #f8f8f2">auxPage[]</span> <span style="color: #f8f8f2">PROGMEM</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">R&quot;raw(</span>
-<span style="color: #e6db74">[</span>
-<span style="color: #e6db74">  { &quot;title&quot;:&quot;Hello&quot;, &quot;uri&quot;:&quot;/hello&quot;, &quot;menu&quot;:true, &quot;element&quot;:[</span>
-<span style="color: #e6db74">    { &quot;name&quot;:&quot;input1&quot;, &quot;type&quot;: &quot;ACInput&quot;, &quot;label&quot;: &quot;INPUT&quot; },</span>
-<span style="color: #e6db74">    { &quot;name&quot;:&quot;send&quot;, &quot;type&quot;:&quot;ACSubmit&quot;, &quot;value&quot;:&quot;HELLO&quot;, &quot;uri&quot;:&quot;/echo&quot; }]</span>
-<span style="color: #e6db74">  },</span>
-<span style="color: #e6db74">  { &quot;title&quot;:&quot;Echo&quot;, &quot;uri&quot;:&quot;/echo&quot;, &quot;menu&quot;:false, &quot;element&quot;:[</span>
-<span style="color: #e6db74">    { &quot;name&quot;:&quot;echo&quot;, &quot;type&quot;:&quot;ACText&quot; }]</span>
-<span style="color: #e6db74">  }</span>
-<span style="color: #e6db74">]</span>
-<span style="color: #e6db74">)raw&quot;</span><span style="color: #f8f8f2">;</span>
-
-<span style="color: #f8f8f2">AutoConnect</span> <span style="color: #f8f8f2">portal;</span>
-
-<span style="color: #f8f8f2">portal.load(auxPage);</span>
-<span style="color: #f8f8f2">portal.on(</span><span style="color: #e6db74">&quot;/echo&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">[](AutoConnectAux</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">aux,</span> <span style="color: #f8f8f2">PageArgument</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">args)</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">ac_echo</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">aux.getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;echo&quot;</span><span style="color: #f8f8f2">);</span>
-  <span style="color: #f8f8f2">ac_echo.value</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">args.arg(</span><span style="color: #e6db74">&quot;input1&quot;</span><span style="color: #f8f8f2">);</span>
-  <span style="color: #66d9ef">return</span> <span style="color: #a6e22e">String</span><span style="color: #f8f8f2">();</span>  
-<span style="color: #f8f8f2">});</span>
-
-<span style="color: #f8f8f2">portal.begin();</span>
-</pre></div>
-
-<h3 id="overwrite-the-autoconnectelements"><i class="fa fa-wpforms"></i> Overwrite the AutoConnectElements<a class="headerlink" href="#overwrite-the-autoconnectelements" title="Permanent link">&para;</a></h3>
-<p>Sketches can update the attributes of AutoConnectElements with two approaches. A one is to assign directly to the attributes of a member variable of its element. The other is to overwrite them with loading the element by <a href="apiaux.html#loadelement">AutoConnectAux::loadElement</a>. </p>
-<p>The elements for attributes described in the JSON document for AutoConnectElements overwrites the member variables of the target AutoConnectElements. However, AutoConnectAux::loadElement keeps the member variables unchanged if there is no element in the JSON document. This overwriting behavior is the same for the <a href="api.html#load">AutoConnect::load</a> function.</p>
-<p>For example, the combination of the sketch and JSON document as follows updates only the style while keeping Caption (ie. "Hello, world") as AutoConnectText value.</p>
-<p><i class="fab fa-js-square"></i> External JSON document for the below sketch to modify the text style.
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">{</span>
-  <span style="color: #f92672">&quot;name&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Caption&quot;</span><span style="color: #f8f8f2">,</span>
-  <span style="color: #f92672">&quot;type&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACText&quot;</span><span style="color: #f8f8f2">,</span>
-<span style="background-color: #49483e">  <span style="color: #f92672">&quot;style&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;text-align:center;font-size:24px;font-family:&#39;Impact&#39;,&#39;Futura&#39;,sans-serif;color:tomato;&quot;</span>
-</span><span style="color: #f8f8f2">}</span>
-</pre></div></p>
-<p><i class="fa fa-arrow-down"></i><br>
-<i class="fa fa-code"></i> The sketch (a part of code), load above JSON.
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="background-color: #49483e"><span style="color: #f8f8f2">ACText(Caption,</span> <span style="color: #e6db74">&quot;Hello, world&quot;</span><span style="color: #f8f8f2">);</span>
-</span><span style="color: #f8f8f2">AutoConnectAux</span> <span style="color: #a6e22e">helloPage</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;/hello&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;Hello&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">true,</span> <span style="color: #f8f8f2">{</span> <span style="color: #f8f8f2">Caption</span> <span style="color: #f8f8f2">});</span>
-<span style="color: #f8f8f2">AutoConnect</span> <span style="color: #f8f8f2">portal;</span>
-
-<span style="color: #f8f8f2">String</span> <span style="color: #a6e22e">onHello</span><span style="color: #f8f8f2">(AutoConnectAux</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">aux,</span> <span style="color: #f8f8f2">PageArgument</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">args)</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">aux.loadElement(JSON);</span>
-  <span style="color: #66d9ef">return</span> <span style="color: #f8f8f2">String();</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">helloPage.on(onHello);</span>
-  <span style="color: #f8f8f2">portal.join(helloPage);</span>
-  <span style="color: #f8f8f2">portal.begin();</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">portal.handleClient();</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-<i class="fa fa-arrow-down"></i><br>
-<i class="fa fa-eye"></i> It's shown as like:<span style="margin-left:14px;width:272px;height:118px;border:1px solid lightgray;"><img align="top" width="270" height="116" src="images/acow.png"></span></p>
-<h3 id="check-data-against-on-submission"><i class="far fa-check-square"></i> Check data against on submission<a class="headerlink" href="#check-data-against-on-submission" title="Permanent link">&para;</a></h3>
-<p>By giving a <a href="apielements.html#pattern">pattern</a> to <a href="apielements.html#autoconnectinput">AutoConnectInput</a>, you can find errors in data styles while typing in custom Web pages. The pattern is specified by <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions">regular expression</a>.<sup id="fnref:2"><a class="footnote-ref" href="#fn:2" rel="footnote">2</a></sup> If the value during input of AutoConnectInput does not match the regular expression specified in the pattern, its background color changes to pink. The following example shows the behavior when checking the IP address in the AutoConnectInput field.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">{</span>
-  <span style="color: #f92672">&quot;title&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Page-1&quot;</span><span style="color: #f8f8f2">,</span>
-  <span style="color: #f92672">&quot;uri&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;/page1&quot;</span><span style="color: #f8f8f2">,</span>
-  <span style="color: #f92672">&quot;menu&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #66d9ef">true</span><span style="color: #f8f8f2">,</span>
-  <span style="color: #f92672">&quot;element&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #f8f8f2">[</span>
-    <span style="color: #f8f8f2">{</span>
-      <span style="color: #f92672">&quot;name&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Server&quot;</span><span style="color: #f8f8f2">,</span>
-      <span style="color: #f92672">&quot;type&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACInput&quot;</span><span style="color: #f8f8f2">,</span>
-      <span style="color: #f92672">&quot;label&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Server address&quot;</span><span style="color: #f8f8f2">,</span>
-<span style="background-color: #49483e">      <span style="color: #f92672">&quot;pattern&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$&quot;</span>
-</span>    <span style="color: #f8f8f2">}</span>
-  <span style="color: #f8f8f2">]</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<div>
-  <span style="display:block;margin-left:136px;"><img width="32px" height="32xp" src="images/arrow_down.png"></span>
-  <span style="display:block;width:306px;height:136px;border:1px solid lightgrey;"><img data-gifffer="images/aux_pattern.gif" data-gifffer-height="134" data-gifffer-width="304" /></span>
-</div>
-
-<p>If you are not familiar with regular expressions, you may feel that description very strange. And matter of fact, it is a strange description for those unfamiliar with formal languages. If your regular expression can not interpret the intended syntax and semantics, you can use an online tester. The <a href="https://regex101.com/">regex101</a> is an exceptional online site for testing and debugging regular expressions.</p>
-<h3 id="validate-input-data"><img src="images/regexp.png" align="top"> Validate input data<a class="headerlink" href="#validate-input-data" title="Permanent link">&para;</a></h3>
-<p>The <a href="apielements.html#pattern">pattern</a> attribute of <a href="apielements.html#autoconnectinput">AutoConnectInput</a> only determines the data consistency on the web browser based on the given regular expression. In order to guarantee the validity of input data, it is necessary to verify it before actually using it.</p>
-<p>You can validate input data from <a href="apielements.html#autoconnectinput">AutoConnectInput</a> using the <a href="apielements.html#isvalid">isValid</a> function before actually processing it.  The <a href="apielements.html#isvalid">isValid</a> function determines whether the <a href="apielements.html#value_3">value</a> currently stored in <a href="apielements.html#autoconnectinput">AutoConnectInput</a> matches the <a href="apielements.html#pattern">pattern</a>. </p>
-<h3 id="convert-data-to-actually-type"><i class="fa fa-exchange"></i> Convert data to actually type<a class="headerlink" href="#convert-data-to-actually-type" title="Permanent link">&para;</a></h3>
-<p>The values in the AutoConnectElements field of the custom Web page are all typed as String. A sketch needs to be converted to an actual data type if the data type required for sketch processing is not a String type. For the typical data type conversion method, refer to section <a href="datatips.html#convert-autoconnectelements-value-to-actual-data-type"><em>Tips for data conversion</em></a>.</p>
-<h2 id="transitions-of-the-custom-web-pages">Transitions of the custom Web pages<a class="headerlink" href="#transitions-of-the-custom-web-pages" title="Permanent link">&para;</a></h2>
-<h3 id="scope-lifetime-of-autoconnectaux">Scope &amp; Lifetime of AutoConnectAux<a class="headerlink" href="#scope-lifetime-of-autoconnectaux" title="Permanent link">&para;</a></h3>
-<p>AutoConnectAux and AutoConnectElements must live while the custom Web pages are available. The implementation of the custom Web page inherits from requestHandler driven from ESP8266WebServer (WebServer for ESP32), so the instance of AutoConnectAux and AutoConnectElements must exist for the duration of effect of handleClient. The following example is incorrect for manipulating custom Web pages. Its AutoConnectAux instance will be destructed at the exit of the setup().</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WiFi.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WebServer.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;AutoConnect.h&gt;</span>
-
-<span style="color: #66d9ef">static</span> <span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">auxPage[]</span> <span style="color: #f8f8f2">PROGMEM</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">R&quot;raw(</span>
-<span style="color: #e6db74">{</span>
-<span style="color: #e6db74">  &quot;title&quot;: &quot;Page-1&quot;,</span>
-<span style="color: #e6db74">  &quot;uri&quot;: &quot;/page1&quot;,</span>
-<span style="color: #e6db74">  &quot;menu&quot;: true,</span>
-<span style="color: #e6db74">  &quot;element&quot;: [</span>
-<span style="color: #e6db74">    { &quot;name&quot;:&quot;Server&quot;, &quot;type&quot;:&quot;ACText&quot;, &quot;label&quot;:&quot;Server address&quot; }</span>
-<span style="color: #e6db74">  ]</span>
-<span style="color: #e6db74">}</span>
-<span style="color: #e6db74">)raw&quot;</span><span style="color: #f8f8f2">;</span>
-
-<span style="color: #f8f8f2">AutoConnect</span>  <span style="color: #f8f8f2">portal;</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #75715e">// This declaration is wrong.</span>
-<span style="background-color: #49483e">  <span style="color: #f8f8f2">AutoConnectAux</span> <span style="color: #f8f8f2">aux;</span>
-</span>  <span style="color: #f8f8f2">aux.load(auxPage);</span>
-  <span style="color: #f8f8f2">portal.join(aux);</span>
-  <span style="color: #f8f8f2">portal.begin();</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">portal.handleClient();</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<h3 id="the-uri-of-the-custom-web-pages">The URI of the custom Web pages<a class="headerlink" href="#the-uri-of-the-custom-web-pages" title="Permanent link">&para;</a></h3>
-<p>The transition of the custom Web page follows the URI of the page, but the ESP8266WebServer class does not know the URI of an AutoConnectAux page. (Registering a custom Web page does not use the <em>ESP8266WebServer::on</em>/<em>WebServer::on</em> function.) Therefore ESP8266WebServer class does not detect its URI access. If you want to detect an http request to AutoConnectAux's custom Web page, you need to register its URI with the <a href="apiaux.html#on">AutoConnectAux::on</a> function.</p>
-<p>In addition to this, there are restrictions in the handler for the custom Web page as shown in the following section.</p>
-<h3 id="limitations">Limitations<a class="headerlink" href="#limitations" title="Permanent link">&para;</a></h3>
-<p>The custom Web pages handler has the following limitations.</p>
-<ul>
-<li>
-<p>Do not send HTTP responses from the handler.</p>
-<p>If the handler returns its own response, the custom Web page will be lost.</p>
-</li>
-<li>
-<p>Use AutoConnectSubmit whenever possible.</p>
-<p>AutoConnect will hold the values of a custom Web Page is sent by AutoConnectSubmit.</p>
-</li>
-<li>
-<p>Can not handle the custom Web pages during a connection is not established yet.</p>
-<p>During the connection attempt, the web browser of the client will send a probe for a captive portal. Its request will cause unintended custom Web page transitions.</p>
-</li>
-<li>
-<p>Can not place URI of the custom Web pages to AUTOCONNECT_URI.</p>
-<p>AutoConnect will not work if you place a custom Web page to <a href="api.html#defined-macros">AUTOCONNECT_URI</a>.</p>
-</li>
-<li>
-<p>Can not use the element named <strong>SUBMIT</strong>.</p>
-<p>You can not use 'SUBMIT' as the element name of AutoConnectElements in a custom Web page that declares the AutoConnectSubmit element. (Case sensitive ignored) AutoConnect does not rely on the <code>input type=submit</code> element for the form submission and uses <a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit">HTML form element submit</a> function instead. So, the submit function will fail if there is an element named 'submit' in the form.</p>
-</li>
-</ul>
-<div class="admonition caution">
-<p class="admonition-title">Do not handle for the same page</p>
-<p>Do not duplicate AutoConnect::on with ESP8266WebServer::on (also WebServer::on) for the same custom web page.</p>
-</div>
-<script>
-  window.onload = function() {
-    Gifffer();
-  };
-</script>
-
-<div class="footnote">
-<hr />
-<ol>
-<li id="fn:1">
-<p>The valid scope of the name is within an AutoConnectAux.&#160;<a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p>
-</li>
-<li id="fn:2">
-<p>Regular expression specification as a pattern of AutoConnectInput is <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions">JavaScript compliant</a>.&#160;<a class="footnote-backref" href="#fnref:2" rev="footnote" title="Jump back to footnote 2 in the text">&#8617;</a></p>
-</li>
-</ol>
-</div></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="acjson.html" title="Custom Web pages with JSON" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>Custom Web pages with JSON</span></div></a><a href="api.html" title="AutoConnect API" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>AutoConnect API</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/acintro.html b/lib/AutoConnect-master/docs/acintro.html
deleted file mode 100644
index 7292a638d88864e560f583aae2638a2130ef4344..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/acintro.html
+++ /dev/null
@@ -1,181 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/acintro.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>Custom Web pages with AutoConnect - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#what-it-is" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">Custom Web pages with AutoConnect</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--active md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6" checked><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">Custom Web pages with AutoConnect</label><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link md-nav__link--active">Custom Web pages with AutoConnect</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#what-it-is" title="What it is" class="md-nav__link">What it is</a></li><li class="md-nav__item"><a href="#how-it-works" title="How it works" class="md-nav__link">How it works</a></li><li class="md-nav__item"><a href="#custom-web-pages-in-autoconnect-menu" title="Custom Web pages in AutoConnect menu" class="md-nav__link">Custom Web pages in AutoConnect menu</a></li><li class="md-nav__item"><a href="#multiple-custom-web-pages" title="Multiple custom Web pages" class="md-nav__link">Multiple custom Web pages</a></li><li class="md-nav__item"><a href="#basic-steps-to-use-custom-web-pages" title="Basic steps to use custom Web pages" class="md-nav__link">Basic steps to use custom Web pages</a></li><li class="md-nav__item"><a href="#write-the-custom-web-page-with-json" title="Write the custom Web page with JSON" class="md-nav__link">Write the custom Web page with JSON</a></li><li class="md-nav__item"><a href="#passing-parameters-with-sketches-and-custom-web-pages" title="Passing parameters with sketches and custom Web pages" class="md-nav__link">Passing parameters with sketches and custom Web pages</a></li></ul></nav></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7"><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#what-it-is" title="What it is" class="md-nav__link">What it is</a></li><li class="md-nav__item"><a href="#how-it-works" title="How it works" class="md-nav__link">How it works</a></li><li class="md-nav__item"><a href="#custom-web-pages-in-autoconnect-menu" title="Custom Web pages in AutoConnect menu" class="md-nav__link">Custom Web pages in AutoConnect menu</a></li><li class="md-nav__item"><a href="#multiple-custom-web-pages" title="Multiple custom Web pages" class="md-nav__link">Multiple custom Web pages</a></li><li class="md-nav__item"><a href="#basic-steps-to-use-custom-web-pages" title="Basic steps to use custom Web pages" class="md-nav__link">Basic steps to use custom Web pages</a></li><li class="md-nav__item"><a href="#write-the-custom-web-page-with-json" title="Write the custom Web page with JSON" class="md-nav__link">Write the custom Web page with JSON</a></li><li class="md-nav__item"><a href="#passing-parameters-with-sketches-and-custom-web-pages" title="Passing parameters with sketches and custom Web pages" class="md-nav__link">Passing parameters with sketches and custom Web pages</a></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>Custom Web pages with AutoConnect</h1><h2 id="what-it-is">What it is<a class="headerlink" href="#what-it-is" title="Permanent link">&para;</a></h2>
-<p><span style="margin-left:20px;margin-bottom:10px;float:right;width:280px;height:497px;border:1px solid lightgray;"><img data-gifffer="images/aux_ov.gif" data-gifffer-width="278" data-gifffer-height="495" /></span>
-AutoConnect can handle custom Web pages prepared by user sketches individually. Custom Web pages can be integrated into the AutoConnect menu and executed as menu items and can have input-output parameters and handle them.</p>
-<p>For example, you can program some sketches that publish messages by entering the URI or unique ID of the MQTT broker on a custom page. You do not need to code the processing to handle the web page. It retrieves the input parameters and passes to the MQTT broker connection API is only.</p>
-<h2 id="how-it-works">How it works<a class="headerlink" href="#how-it-works" title="Permanent link">&para;</a></h2>
-<p>AutoConnect creates the custom Web pages dynamically at runtime. Sketch describes the custom Web pages using classes and APIs necessary for dynamic creation which are <a href="apiaux.html#autoconnectaux"><strong>AutoConnectAux</strong></a> and the variant of <a href="acelements.html"><strong>AutoConnectElements</strong></a>. AutoConnectAux is an object dependent on AutoConnect, which provides an easy way to incorporate custom Web pages into AutoConnect like the one on the right figure. The elements make up a custom Web page are provided as an AutoConnectElement class.</p>
-<p>Furthermore, an input box, a check box, a submit button, etc. are implemented by classes derived from AutoConnectElement.
-<p align="center"><img align="center" width="560px" src="images/ac_objects.svg"></p>
-AutoConnectAux is a container for AutoConnectElements. To make a custom Web page, create elements that make up the page and put it in the AutoConnectAux object. Joining its AutoConnectAux object to AutoConnect will integrate the custom Web page into the AutoConnect menu.</p>
-<p><img src="images/ac_declaration.svg"></p>
-<p>The above figure shows a code sequence that declares AutoConnectElements and put in the AutoConnectAux container and integrates those into AutoConnect. It declares two text elements named <em>header</em> and <em>caption</em>, adds them to the AutoConnectAux object as <em>aux</em>, binds to an AutoConnect object named <em>portal</em>. This sequence is the basic procedure for creating custom Web pages with the sketch. The further explanation is available in section <a href="acelements.html">AutoConnectElements</a> also.</p>
-<h2 id="custom-web-pages-in-autoconnect-menu">Custom Web pages in AutoConnect menu<a class="headerlink" href="#custom-web-pages-in-autoconnect-menu" title="Permanent link">&para;</a></h2>
-<ul class="horizontal-list">
-    <li><img style="margin:0 20px 0 -20px;float:left;width:300px;" src="images/ac_auxmenu.png">
-    AutoConnect integrates custom Web page objects into menus as AutoConnectAux. The AutoConnectAux object contains URI and title as member variables and has an indicator to display in the AutoConnect menu.<br>You give the title and URI of the custom Web page to the AutoConnectAux object with Sketch. Then the title of the custom Web page would be displayed in the AutoConnect menu as the left figure.<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup> It is a hyperlink to a custom Web page which will be displayed tapped it.</li>
-</ul>
-
-<h2 id="multiple-custom-web-pages">Multiple custom Web pages<a class="headerlink" href="#multiple-custom-web-pages" title="Permanent link">&para;</a></h2>
-<p>You can create multiple custom Web pages and specify pages that can be called from the menu. The following sketch shows a code sequence for integrating three custom Web pages into one and embedding them in a menu.</p>
-<p><img align="center" width="520px" src="images/ac_auxjoin_multi.svg"></p>
-<ul class="horizontal-list">
-    <li><p style="margin:0 20px 0 -20px"><span style="margin-left:20px;float:right;width:280px;height:497px;border:1px solid lightgrey;"><img data-gifffer="images/aux_menu.gif" data-gifffer-width="278" data-gifffer-height="495" /></span>In the above code, the third parameter of <i>aux2</i> is <b>false</b>. The third parameter of the AutoConnectAux constructor is an indicator for whether it's shown to the AutoConnect menu. Right animation is an execution result of the above code. You will see that the menu applies only two items for three custom Web pages. The sketch of this animation is written to transition to <i>aux2</i> by the utility of the <a href="acelements.html#autoconnectsubmit"><b>AutoConnectSubmit</b></a> element owned by <i>aux1</i>.<sup id="fnref:2"><a class="footnote-ref" href="#fn:2" rel="footnote">2</a></sup><br>The <i>aux2</i> page transitions only from the <i>aux1</i> page. As shown in mqttRSSI in the library example, its page replies the saving result for the parameters entered on the previous page. It can not be invoked directly from the menu and want to hide them with AutoConnect menu items. The utility of the third parameter of the AutoConnectAux constructor is that.</p></li>
-</ul>
-
-<h2 id="basic-steps-to-use-custom-web-pages">Basic steps to use custom Web pages<a class="headerlink" href="#basic-steps-to-use-custom-web-pages" title="Permanent link">&para;</a></h2>
-<p>So, the basic procedure for handling of the custom Web pages is as follows:</p>
-<ol>
-<li>Create or define <a href="apiaux.html#autoconnectaux">AutoConnectAux</a>.</li>
-<li>Create or define <a href="acelements.html">AutoConnectElement(s)</a>.</li>
-<li>Add <a href="acelements.html">AutoConnectElement(s)</a> to AutoConnectAux.</li>
-<li>Create more AutoConnectAux containing <a href="acelements.html">AutoConnectElement(s)</a>, if necessary.</li>
-<li><a href="api.html#on">Register</a> the request handlers for the custom Web pages.</li>
-<li><a href="api.html#join">Join</a> prepared AutoConnectAux(s) to AutoConnect.</li>
-<li>Invoke <a href="api.html#begin">AutoConnect::begin()</a>.</li>
-<li>Perform <a href="api.html#handleclient">AutoConnect::handleClient()</a>.</li>
-</ol>
-<h2 id="write-the-custom-web-page-with-json">Write the custom Web page with JSON<a class="headerlink" href="#write-the-custom-web-page-with-json" title="Permanent link">&para;</a></h2>
-<p>You can write the custom Web page in JSON without using sketch codes.<sup id="fnref:3"><a class="footnote-ref" href="#fn:3" rel="footnote">3</a></sup> It is possible to describe the entire page in JSON and can be described for each element also. The JSON document can be saved in SPIFFS or SD and read using AutoConnect's <a href="api.html#load"><strong>load</strong></a> function. you can reduce the steps of the basic procedure with this approach, but this way consumes a lot of memory. 
-The following JSON code and sketch will execute the custom Web page as an example in the above figure. That is, the sketch of this code and footnote<sup id="fnref:2"><a class="footnote-ref" href="#fn:2" rel="footnote">2</a></sup> is equivalent.</p>
-<p><strong>custom_page.json</strong>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">[</span>
-  <span style="color: #f8f8f2">{</span>
-    <span style="color: #f92672">&quot;title&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;MQTT Setting&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;uri&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;/mqtt_setting&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;menu&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #66d9ef">true</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;element&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #f8f8f2">[</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;header&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACText&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;MQTT broker settings&quot;</span>
-      <span style="color: #f8f8f2">},</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;caption1&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACText&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Publishing the WiFi...&quot;</span>
-      <span style="color: #f8f8f2">},</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;save&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACSubmit&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;SAVE&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;uri&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;/mqtt_save&quot;</span>
-      <span style="color: #f8f8f2">}</span>
-    <span style="color: #f8f8f2">]</span>
-  <span style="color: #f8f8f2">},</span>
-  <span style="color: #f8f8f2">{</span>
-    <span style="color: #f92672">&quot;title&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;MQTT Setting&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;uri&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;/mqtt_save&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;menu&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #66d9ef">false</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;element&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #f8f8f2">[</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;caption2&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACText&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Save parameters&quot;</span>
-      <span style="color: #f8f8f2">},</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;start&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACSubmit&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;START&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;uri&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;/mqtt_start&quot;</span>
-      <span style="color: #f8f8f2">}</span>
-    <span style="color: #f8f8f2">]</span>
-  <span style="color: #f8f8f2">},</span>
-  <span style="color: #f8f8f2">{</span>
-    <span style="color: #f92672">&quot;title&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;MQTT Start&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;uri&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;/mqtt_start&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;menu&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #66d9ef">true</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;element&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #f8f8f2">[]</span>
-  <span style="color: #f8f8f2">}</span>
-<span style="color: #f8f8f2">]</span>
-</pre></div></p>
-<p><strong>The sketch</strong>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WiFi.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WebServer.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;FS.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;AutoConnect.h&gt;</span>
-
-<span style="color: #f8f8f2">AutoConnect</span>  <span style="color: #f8f8f2">portal;</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">SPIFFS.begin();</span>
-
-<span style="background-color: #49483e">  <span style="color: #f8f8f2">File</span> <span style="color: #f8f8f2">page</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">SPIFFS.open(</span><span style="color: #e6db74">&quot;/custom_page.json&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;r&quot;</span><span style="color: #f8f8f2">);</span>
-</span><span style="background-color: #49483e">  <span style="color: #f8f8f2">portal.load(page);</span>
-</span>
-  <span style="color: #f8f8f2">page.close();</span>
-  <span style="color: #f8f8f2">SPIFFS.end();</span>
-
-  <span style="color: #f8f8f2">portal.begin();</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">portal.handleClient();</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div></p>
-<h2 id="passing-parameters-with-sketches-and-custom-web-pages">Passing parameters with sketches and custom Web pages<a class="headerlink" href="#passing-parameters-with-sketches-and-custom-web-pages" title="Permanent link">&para;</a></h2>
-<p>A sketch can access variables of <a href="acelements.html">AutoConnectElements</a> on the custom Web page. The value entered into the AutoConnectElements is stored to the <a href="acelements.html#form-and-autoconnectelements">member variables</a> of the element by AutoConnect whenever GET / POST transmission occurs. Your sketches can get these values with the request handler which will be registered by <a href="api.html#on">AutoConnect::on</a> function. And if you assign a value to an element before a request to the page occurs, its value will appear as the initial value when the page is displayed. The details are explained in section <a href="achandling.html#custom-field-data-handling"><em>Custom field data handling</em></a>.</p>
-<script>
-  window.onload = function() {
-    Gifffer();
-  };
-</script>
-
-<div class="footnote">
-<hr />
-<ol>
-<li id="fn:1">
-<p>There is no overlay in the actual menu.&#160;<a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p>
-</li>
-<li id="fn:2">
-<p>The sketch is actually this:
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WiFi.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WebServer.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;AutoConnect.h&gt;</span>
-
-<span style="color: #f8f8f2">AutoConnect</span>     <span style="color: #f8f8f2">portal;</span>
-
-<span style="color: #f8f8f2">ACText(header,</span> <span style="color: #e6db74">&quot;MQTT broker settings&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">ACText(caption1,</span> <span style="color: #e6db74">&quot;Publishing the WiFi...&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">ACSubmit(save,</span> <span style="color: #e6db74">&quot;SAVE&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;/mqtt_save&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">AutoConnectAux</span>  <span style="color: #a6e22e">aux1</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;/mqtt_setting&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;MQTT Setting&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">{</span> <span style="color: #f8f8f2">header,</span> <span style="color: #f8f8f2">caption1,</span> <span style="color: #f8f8f2">save</span> <span style="color: #f8f8f2">});</span>
-
-<span style="color: #f8f8f2">ACText(caption2,</span> <span style="color: #e6db74">&quot;Save parameters&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">ACSubmit(start,</span> <span style="color: #e6db74">&quot;START&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;/mqtt_start&quot;</span><span style="color: #f8f8f2">);</span> 
-<span style="color: #f8f8f2">AutoConnectAux</span>  <span style="color: #a6e22e">aux2</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;/mqtt_save&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;MQTT Setting&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">false,</span> <span style="color: #f8f8f2">{</span> <span style="color: #f8f8f2">caption2,</span> <span style="color: #f8f8f2">start</span> <span style="color: #f8f8f2">});</span>
-
-<span style="color: #f8f8f2">AutoConnectAux</span>  <span style="color: #a6e22e">aux3</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;/mqtt_start&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;MQTT Start&quot;</span><span style="color: #f8f8f2">);</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">portal.join({</span> <span style="color: #f8f8f2">aux1,</span> <span style="color: #f8f8f2">aux2,</span> <span style="color: #f8f8f2">aux3</span> <span style="color: #f8f8f2">});</span>
-  <span style="color: #f8f8f2">portal.begin();</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">portal.handleClient();</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>&#160;<a class="footnote-backref" href="#fnref:2" rev="footnote" title="Jump back to footnote 2 in the text">&#8617;</a></p>
-</li>
-<li id="fn:3">
-<p>Installation of the <a href="https://github.com/bblanchon/ArduinoJson">ArduinoJson</a> as the latest release of version 5 series is required.&#160;<a class="footnote-backref" href="#fnref:3" rev="footnote" title="Jump back to footnote 3 in the text">&#8617;</a></p>
-</li>
-</ol>
-</div></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="advancedusage.html" title="Advanced usage" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>Advanced usage</span></div></a><a href="acelements.html" title="AutoConnectElements" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>AutoConnectElements</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/acjson.html b/lib/AutoConnect-master/docs/acjson.html
deleted file mode 100644
index ba08bb8fd0c832315796133c7c0ab740092e887b..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/acjson.html
+++ /dev/null
@@ -1,397 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/acjson.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>Custom Web pages with JSON - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#json-objects-elements-for-the-custom-web-page" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">Custom Web pages with JSON</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--active md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6" checked><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">Custom Web pages with JSON</label><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link md-nav__link--active">Custom Web pages with JSON</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#json-objects-elements-for-the-custom-web-page" title="JSON objects &amp; elements for the custom Web page" class="md-nav__link">JSON objects &amp; elements for the custom Web page</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#json-document-structure-for-autoconnectaux" title=" JSON document structure for AutoConnectAux" class="md-nav__link"> JSON document structure for AutoConnectAux</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#title" title=" title" class="md-nav__link"> title</a></li><li class="md-nav__item"><a href="#uri" title=" uri" class="md-nav__link"> uri</a></li><li class="md-nav__item"><a href="#menu" title=" menu" class="md-nav__link"> menu</a></li><li class="md-nav__item"><a href="#element" title=" element" class="md-nav__link"> element</a></li></ul></nav></li><li class="md-nav__item"><a href="#multiple-custom-web-pages-declaration-in-json-document" title=" Multiple custom Web pages declaration in JSON document" class="md-nav__link"> Multiple custom Web pages declaration in JSON document</a></li><li class="md-nav__item"><a href="#json-object-for-autoconnectelements" title=" JSON object for AutoConnectElements" class="md-nav__link"> JSON object for AutoConnectElements</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#name" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#type" title=" type" class="md-nav__link"> type</a></li><li class="md-nav__item"><a href="#key_according_to_type" title=" key_according_to_type" class="md-nav__link"> key_according_to_type</a></li><li class="md-nav__item"><a href="#acbutton" title=" ACButton" class="md-nav__link"> ACButton</a></li><li class="md-nav__item"><a href="#accheckbox" title=" ACCheckbox" class="md-nav__link"> ACCheckbox</a></li><li class="md-nav__item"><a href="#acelement" title=" ACElement" class="md-nav__link"> ACElement</a></li><li class="md-nav__item"><a href="#acfile" title=" ACFile" class="md-nav__link"> ACFile</a></li><li class="md-nav__item"><a href="#acinput" title=" ACInput" class="md-nav__link"> ACInput</a></li><li class="md-nav__item"><a href="#acradio" title=" ACRadio" class="md-nav__link"> ACRadio</a></li><li class="md-nav__item"><a href="#acselect" title=" ACSelect" class="md-nav__link"> ACSelect</a></li><li class="md-nav__item"><a href="#acsubmit" title=" ACSubmit" class="md-nav__link"> ACSubmit</a></li><li class="md-nav__item"><a href="#actext" title=" ACText" class="md-nav__link"> ACText</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="#loading-json-document" title="Loading JSON document" class="md-nav__link">Loading JSON document</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#loading-from-the-streamed-file" title=" Loading from the streamed file" class="md-nav__link"> Loading from the streamed file</a></li><li class="md-nav__item"><a href="#adjust-the-json-document-buffer-size" title=" Adjust the JSON document buffer size" class="md-nav__link"> Adjust the JSON document buffer size</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#autoconnect_jsonbuffer_size" title="AUTOCONNECT_JSONBUFFER_SIZE" class="md-nav__link">AUTOCONNECT_JSONBUFFER_SIZE</a></li><li class="md-nav__item"><a href="#autoconnect_jsondocument_size" title="AUTOCONNECT_JSONDOCUMENT_SIZE" class="md-nav__link">AUTOCONNECT_JSONDOCUMENT_SIZE</a></li><li class="md-nav__item"><a href="#autoconnect_jsonpsram_size" title="AUTOCONNECT_JSONPSRAM_SIZE" class="md-nav__link">AUTOCONNECT_JSONPSRAM_SIZE</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="#saving-json-document" title="Saving JSON document" class="md-nav__link">Saving JSON document</a></li></ul></nav></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7"><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#json-objects-elements-for-the-custom-web-page" title="JSON objects &amp; elements for the custom Web page" class="md-nav__link">JSON objects &amp; elements for the custom Web page</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#json-document-structure-for-autoconnectaux" title=" JSON document structure for AutoConnectAux" class="md-nav__link"> JSON document structure for AutoConnectAux</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#title" title=" title" class="md-nav__link"> title</a></li><li class="md-nav__item"><a href="#uri" title=" uri" class="md-nav__link"> uri</a></li><li class="md-nav__item"><a href="#menu" title=" menu" class="md-nav__link"> menu</a></li><li class="md-nav__item"><a href="#element" title=" element" class="md-nav__link"> element</a></li></ul></nav></li><li class="md-nav__item"><a href="#multiple-custom-web-pages-declaration-in-json-document" title=" Multiple custom Web pages declaration in JSON document" class="md-nav__link"> Multiple custom Web pages declaration in JSON document</a></li><li class="md-nav__item"><a href="#json-object-for-autoconnectelements" title=" JSON object for AutoConnectElements" class="md-nav__link"> JSON object for AutoConnectElements</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#name" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#type" title=" type" class="md-nav__link"> type</a></li><li class="md-nav__item"><a href="#key_according_to_type" title=" key_according_to_type" class="md-nav__link"> key_according_to_type</a></li><li class="md-nav__item"><a href="#acbutton" title=" ACButton" class="md-nav__link"> ACButton</a></li><li class="md-nav__item"><a href="#accheckbox" title=" ACCheckbox" class="md-nav__link"> ACCheckbox</a></li><li class="md-nav__item"><a href="#acelement" title=" ACElement" class="md-nav__link"> ACElement</a></li><li class="md-nav__item"><a href="#acfile" title=" ACFile" class="md-nav__link"> ACFile</a></li><li class="md-nav__item"><a href="#acinput" title=" ACInput" class="md-nav__link"> ACInput</a></li><li class="md-nav__item"><a href="#acradio" title=" ACRadio" class="md-nav__link"> ACRadio</a></li><li class="md-nav__item"><a href="#acselect" title=" ACSelect" class="md-nav__link"> ACSelect</a></li><li class="md-nav__item"><a href="#acsubmit" title=" ACSubmit" class="md-nav__link"> ACSubmit</a></li><li class="md-nav__item"><a href="#actext" title=" ACText" class="md-nav__link"> ACText</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="#loading-json-document" title="Loading JSON document" class="md-nav__link">Loading JSON document</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#loading-from-the-streamed-file" title=" Loading from the streamed file" class="md-nav__link"> Loading from the streamed file</a></li><li class="md-nav__item"><a href="#adjust-the-json-document-buffer-size" title=" Adjust the JSON document buffer size" class="md-nav__link"> Adjust the JSON document buffer size</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#autoconnect_jsonbuffer_size" title="AUTOCONNECT_JSONBUFFER_SIZE" class="md-nav__link">AUTOCONNECT_JSONBUFFER_SIZE</a></li><li class="md-nav__item"><a href="#autoconnect_jsondocument_size" title="AUTOCONNECT_JSONDOCUMENT_SIZE" class="md-nav__link">AUTOCONNECT_JSONDOCUMENT_SIZE</a></li><li class="md-nav__item"><a href="#autoconnect_jsonpsram_size" title="AUTOCONNECT_JSONPSRAM_SIZE" class="md-nav__link">AUTOCONNECT_JSONPSRAM_SIZE</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="#saving-json-document" title="Saving JSON document" class="md-nav__link">Saving JSON document</a></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>Custom Web pages with JSON</h1><p>You can embed custom Web pages written in <a href="https://www.json.org/index.html"><strong>JSON</strong></a> into AutoConnect without AutoConnectAux &amp; AutoConnectElements declaration. Custom Web page declaration by JSON can  embed in the sketch as a fixed string or can store in the external file such as SPIFFS for stream loading. Also, you can also load and save AutoConnectElements objects individually.<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup></p>
-<p>By providing the following JSON document to AutoConnect, you can include the custom Web page like the below:</p>
-<div style="float:left;width:50%;height:470px;overflow:auto"><img src="images/ac_json.png"></div>
-
-<p><img style="margin-left:30px;width:40%;height:470px;" src="images/ac_mqtt_setting.png"></p>
-<p>A JSON document for AutoConnect can contain the custom Web page multiple. You can further reduce the sketch process by loading multiple pages of JSON document at once.</p>
-<div class="admonition caution">
-<p class="admonition-title">Need ArduinoJson v5</p>
-<p>To process the AutoConnectAux &amp; AutoConnectElements written in the JSON is you need to install the <a href="https://arduinojson.org/v5/doc/installation/">ArduinoJson version 5</a> library.</p>
-</div>
-<h2 id="json-objects-elements-for-the-custom-web-page">JSON objects &amp; elements for the custom Web page<a class="headerlink" href="#json-objects-elements-for-the-custom-web-page" title="Permanent link">&para;</a></h2>
-<h3 id="json-document-structure-for-autoconnectaux"><i class="fa fa-caret-right"></i> JSON document structure for AutoConnectAux<a class="headerlink" href="#json-document-structure-for-autoconnectaux" title="Permanent link">&para;</a></h3>
-<p>AutoConnectAux will configure custom Web pages with JSON objects. The elements that make up the object are as follows:</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span>{
-  &quot;title&quot; : title,
-  &quot;uri&quot; : uri,
-  &quot;menu&quot; : true | false,
-  &quot;element&quot; : element_array
-}
-</pre></div>
-
-<h4 id="title"><i class="fa fa-key"></i> <strong>title</strong><a class="headerlink" href="#title" title="Permanent link">&para;</a></h4>
-<dl>
-<dd>A title of the custom Web page. This is string value. String specified <em>title</em> will be displayed in the AutoConnection menu.</dd>
-</dl>
-<h4 id="uri"><i class="fa fa-key"></i> <strong>uri</strong><a class="headerlink" href="#uri" title="Permanent link">&para;</a></h4>
-<dl>
-<dd>String of URI path that specifies where to place the custom Web page. It needs to be a location from the root path including '<strong>/</strong>'.</dd>
-</dl>
-<h4 id="menu"><i class="fa fa-key"></i> <strong>menu</strong><a class="headerlink" href="#menu" title="Permanent link">&para;</a></h4>
-<dl>
-<dd>This is a Boolean value indicating whether to include the custom Web page in the AutoConnect menu. If the page only responds to another page and you want to prevent the direct use from the menu, you can exclude from the AutoConnect menu. If this key is false, it will not appear in the menu.</dd>
-</dl>
-<h4 id="element"><i class="fa fa-key"></i> <strong>element</strong><a class="headerlink" href="#element" title="Permanent link">&para;</a></h4>
-<dl>
-<dd>Describe an array of JSON objects as <em>element_array</em>. It is a JSON object array of the <a href="#json-object-for-autoconnectelements">AutoConnectElements</a> that make up the custom Web page.</dd>
-</dl>
-<div class="admonition note">
-<p class="admonition-title">Order of elements on a custom Web page</p>
-<p>The order in which AutoConnectElements are placed on a custom Web page is the order in the JSON document.</p>
-</div>
-<h3 id="multiple-custom-web-pages-declaration-in-json-document"><i class="fa fa-copy"></i> Multiple custom Web pages declaration in JSON document<a class="headerlink" href="#multiple-custom-web-pages-declaration-in-json-document" title="Permanent link">&para;</a></h3>
-<p>You can put declarations of multiple custom Web pages in one JSON document. In that case, declare an array of each custom Web page with JSON. The following JSON document contains three custom Web pages:</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">[</span>
-  <span style="color: #f8f8f2">{</span>
-    <span style="color: #f92672">&quot;title&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Page 1 title&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;uri&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;/page1&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;menu&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #66d9ef">true</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;element&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #f8f8f2">[</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;caption&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACText&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;value&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;hello, world&quot;</span>
-      <span style="color: #f8f8f2">},</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;send&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACSubmit&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;uri&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;/page2&quot;</span>
-      <span style="color: #f8f8f2">}</span>
-    <span style="color: #f8f8f2">]</span>
-  <span style="color: #f8f8f2">},</span>
-  <span style="color: #f8f8f2">{</span>
-    <span style="color: #f92672">&quot;title&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Page 1 title&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;uri&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;/page2&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;menu&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #66d9ef">false</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;element&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #f8f8f2">[</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;responds&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACText&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;value&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Good day&quot;</span>
-      <span style="color: #f8f8f2">},</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;send&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACSubmit&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;uri&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;/page3&quot;</span>
-      <span style="color: #f8f8f2">}</span>
-    <span style="color: #f8f8f2">]</span>
-  <span style="color: #f8f8f2">},</span>
-  <span style="color: #f8f8f2">{</span>
-    <span style="color: #f92672">&quot;title&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Page 3 title&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;uri&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;/page3&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;menu&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #66d9ef">true</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;element&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #f8f8f2">[</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;responds&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACText&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;value&quot;</span> <span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;bye&quot;</span>
-      <span style="color: #f8f8f2">}</span>
-    <span style="color: #f8f8f2">]</span>
-  <span style="color: #f8f8f2">}</span>
-<span style="color: #f8f8f2">]</span>
-</pre></div>
-
-<h3 id="json-object-for-autoconnectelements"><i class="fa fa-caret-right"></i> JSON object for AutoConnectElements<a class="headerlink" href="#json-object-for-autoconnectelements" title="Permanent link">&para;</a></h3>
-<p>JSON description for AutoConnectElements describes as an array in the <em>element</em> with arguments of <a href="acelements.html#constructor">each constructor</a>.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span>{
-  &quot;name&quot; : name,
-  &quot;type&quot; : type,
-  key_according_to_type : the_value | array_of_value,
-  [ key_according_to_type : the_value | array_of_value ]
-}
-</pre></div>
-
-<h4 id="name"><i class="fa fa-key"></i> <strong>name</strong><a class="headerlink" href="#name" title="Permanent link">&para;</a></h4>
-<dl>
-<dd>A string of the name for the element.</dd>
-</dl>
-<h4 id="type"><i class="fa fa-key"></i> <strong>type</strong><a class="headerlink" href="#type" title="Permanent link">&para;</a></h4>
-<dl>
-<dd>A string of the type for the element. For this type, specify the following string corresponding to each element.</dd>
-<dd>
-<ul>
-<li>AutoConnectButton: <a href="#acbutton"><strong>ACButton</strong></a></li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li>AutoConnectCheckbox: <a href="#accheckbox"><strong>ACCheckbox</strong> </a></li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li>AutoConnectElement: <a href="#acelement"><strong>ACElement</strong></a></li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li>AutoConnectFile: <a href="#acfile"><strong>ACFile</strong></a></li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li>AutoConnectInput: <a href="#acinput"><strong>ACInput</strong></a></li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li>AutoConnectRadio: <a href="#acradio"><strong>ACRadio</strong></a></li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li>AutoConnectSelect: <a href="#acselect"><strong>ACSelect</strong></a></li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li>AutoConnectSubmit: <a href="#acsubmit"><strong>ACSubmit</strong></a></li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li>AutoConnectText: <a href="#actext"><strong>ACText</strong></a></li>
-</ul>
-</dd>
-</dl>
-<h4 id="key_according_to_type"><i class="fa fa-key"></i> <strong><i>key_according_to_type</i></strong><a class="headerlink" href="#key_according_to_type" title="Permanent link">&para;</a></h4>
-<p>This is different for each AutoConnectElements, and the key that can be specified by the type of AutoConnectElements is determined.</p>
-<h4 id="acbutton"><i class="fa fa-caret-right"></i> ACButton<a class="headerlink" href="#acbutton" title="Permanent link">&para;</a></h4>
-<dl>
-<dd>
-<ul>
-<li><strong>value</strong> : Specifies the button label. This value also applies to the <code>value</code> attribute of an HTML <code>button</code> tag.</li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li><strong>action</strong> : Specifies an action to be fire on a mouse click on the button. It is mostly used with a JavaScript to activate a script, or it directly describes a JavaScript.</li>
-</ul>
-</dd>
-</dl>
-<h4 id="accheckbox"><i class="fa fa-caret-right"></i> ACCheckbox<a class="headerlink" href="#accheckbox" title="Permanent link">&para;</a></h4>
-<dl>
-<dd>
-<ul>
-<li><strong>value</strong> : Specifies the value to be supplied to the checkbox. It will be packed in the query string as <code>name=value</code> when the checkbox is ticked.</li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li><strong>label</strong> : Specifies a label of the checkbox. Its placement is always to the right of the checkbox.</li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li><strong>checked</strong> : Specifies checking status as a <strong>boolean</strong> value. The value of the checked checkbox element is packed in the query string and sent.</li>
-</ul>
-</dd>
-</dl>
-<h4 id="acelement"><i class="fa fa-caret-right"></i> ACElement<a class="headerlink" href="#acelement" title="Permanent link">&para;</a></h4>
-<dl>
-<dd>
-<ul>
-<li><strong>value</strong> : Specifies the source code of generating HTML. The value is native HTML code and is output as HTML as it is.</li>
-</ul>
-</dd>
-</dl>
-<h4 id="acfile"><i class="fa fa-caret-right"></i> ACFile<a class="headerlink" href="#acfile" title="Permanent link">&para;</a></h4>
-<dl>
-<dd>
-<ul>
-<li><strong>value</strong> : The file name of the upload file will be stored. The <code>value</code> is read-only and will be ignored if specified.</li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li><strong>label</strong> : Specifies a label of the file selection box. Its placement is always to the left of the file selection box.</li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li><strong>store</strong> : Specifies the destination to save the uploaded file. Its value accepts one of the following:<p>
-<b>fs</b>&nbsp;: Save as the SPIFFS file in flash of ESP8266/ESP32 module.<br>
-<b>sd</b>&nbsp;: Save to an external SD device connected to ESP8266/ESP32 module.<br>
-<b>extern</b>&nbsp;: Pass the content of the uploaded file to the uploader which is declared by the sketch individually. Its uploader must inherit <a href="acupload.html#to-upload-to-a-device-other-than-flash-or-sd"><strong>AutoConnectUploadHandler</strong></a> class and implements <em>_open</em>, <em>_write</em> and <em>_close</em> function.</p></li>
-</ul>
-</dd>
-</dl>
-<h4 id="acinput"><i class="fa fa-caret-right"></i> ACInput<a class="headerlink" href="#acinput" title="Permanent link">&para;</a></h4>
-<dl>
-<dd>
-<ul>
-<li><strong>value</strong> : Specifies the initial text string of the input box. If this value is omitted, placeholder is displayed as the initial string.</li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li><strong>label</strong> : Specifies a label of the input box. Its placement is always to the left of the input box.</li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li><strong>placeholder</strong> : Specifies short hint of the input box.</li>
-</ul>
-</dd>
-</dl>
-<h4 id="acradio"><i class="fa fa-caret-right"></i> ACRadio<a class="headerlink" href="#acradio" title="Permanent link">&para;</a></h4>
-<dl>
-<dd>
-<ul>
-<li><strong>value</strong> : Specifies the collection of radio buttons as an array element.</li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li><strong>label</strong> : Specifies a label of the collection of radio buttons, not for each button. The arrangement will be the top or left side according to the <code>arrange</code>.</li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li><strong>arrange</strong> : Specifies the orientation of the radio buttons. Its value accepts one of the following:<p>
-<b>horizontal</b>&nbsp;: Horizontal arrangement.<br>
-<b>vertical</b>&nbsp;: Vertical arrangement.</p></li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li><strong>checked</strong> : Specifies the index number (1-based) of the radio buttons collection to be checked.</li>
-</ul>
-</dd>
-</dl>
-<h4 id="acselect"><i class="fa fa-caret-right"></i> ACSelect<a class="headerlink" href="#acselect" title="Permanent link">&para;</a></h4>
-<dl>
-<dd>
-<ul>
-<li><strong>label</strong> : Specifies a label of the drop-down list. Its placement is always to the left of the drop-down list.</li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li><strong>option</strong> : Specifies the initial value collection of the drop-down list as an array element.</li>
-</ul>
-</dd>
-</dl>
-<h4 id="acsubmit"><i class="fa fa-caret-right"></i> ACSubmit<a class="headerlink" href="#acsubmit" title="Permanent link">&para;</a></h4>
-<dl>
-<dd>
-<ul>
-<li><strong>value</strong> : Specifies a label of the submit button.</li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li><strong>uri</strong> : Specifies the URI to send form data when the button is clicked.</li>
-</ul>
-</dd>
-</dl>
-<h4 id="actext"><i class="fa fa-caret-right"></i> ACText<a class="headerlink" href="#actext" title="Permanent link">&para;</a></h4>
-<dl>
-<dd>
-<ul>
-<li><strong>value</strong> : Specifies a content and also can contain the native HTML code, but remember that your written code is enclosed by the div tag.</li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li><strong>style</strong> : Specifies the qualification style to give to the content and can use the style attribute format as it is.</li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li><strong>format</strong> : Specifies how to interpret the value. It specifies the conversion format when outputting values. The format string conforms to the C-style printf library functions, but depends on the espressif sdk implementation. The conversion specification is valid only for <strong>%s</strong> format. (Left and Right justification, width are also valid.)</li>
-</ul>
-</dd>
-</dl>
-<div class="admonition caution">
-<p class="admonition-title">AutoConnect's JSON parsing process is not perfect</p>
-<p>It is based on analysis by ArduinoJson, but the semantic analysis is simplified to save memory. Consequently, it is not an error that a custom Web page JSON document to have unnecessary keys. It will be ignored.</p>
-</div>
-<h2 id="loading-json-document">Loading JSON document<a class="headerlink" href="#loading-json-document" title="Permanent link">&para;</a></h2>
-<h3 id="loading-from-the-streamed-file"><i class="fa fa-caret-right"></i> Loading from the streamed file<a class="headerlink" href="#loading-from-the-streamed-file" title="Permanent link">&para;</a></h3>
-<p>AutoConnect supports loading of JSON document from the following instances:</p>
-<ul>
-<li>String</li>
-<li>PROGMEM</li>
-<li>Stream</li>
-</ul>
-<p>To load custom Web pages JSON document into AutoConnect, use the <a href="api.html#load">load</a> function of the AutoConnect class. Its JSON document can read must be completed as a description interpretable by the ArduinoJson library. It cannot import custom Web pages if there are syntax errors for the JSON. If you can not see the custom Web page prepared by JSON, you can check the syntax with <a href="https://arduinojson.org/v5/assistant/">ArduinoJson Assistant</a>. It is useful for pre-checking.</p>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">AutoConnect</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">load(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">aux)</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">AutoConnect</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">load(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">__FlashStringHelper</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">aux)</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">AutoConnect</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">load(Stream</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">aux)</span>
-</pre></div>
-An example of using each function is as follows.
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnect</span>  <span style="color: #f8f8f2">portal;</span>
-
-<span style="color: #75715e">// Loading from String</span>
-<span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span> <span style="color: #f8f8f2">aux</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">String(</span><span style="color: #e6db74">&quot;{</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">title</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">:</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">Page 1 title</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">,</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">uri</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">:</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">/page1</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">,</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">menu</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">:true,</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">element</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">:[{</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">name</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">:</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">caption</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">,</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">type</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">:</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">ACText</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">,</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">value</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">:</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">hello, world</span><span style="color: #ae81ff">\&quot;</span><span style="color: #e6db74">}]}&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">portal.load(aux);</span>
-
-<span style="color: #75715e">// Loading from PROGMEM</span>
-<span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span> <span style="color: #f8f8f2">aux[]</span> <span style="color: #f8f8f2">PROGMEM</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">R&quot;raw(</span>
-<span style="color: #e6db74">{</span>
-<span style="color: #e6db74">  &quot;title&quot; : &quot;Page 1 title&quot;,</span>
-<span style="color: #e6db74">  &quot;uri&quot; : &quot;/page1&quot;,</span>
-<span style="color: #e6db74">  &quot;menu&quot; : true,</span>
-<span style="color: #e6db74">  &quot;element&quot; : [</span>
-<span style="color: #e6db74">    {</span>
-<span style="color: #e6db74">      &quot;name&quot; : &quot;caption&quot;,</span>
-<span style="color: #e6db74">      &quot;type&quot; : &quot;ACText&quot;,</span>
-<span style="color: #e6db74">      &quot;value&quot; : &quot;hello, world&quot;</span>
-<span style="color: #e6db74">    }</span>
-<span style="color: #e6db74">  ]</span>
-<span style="color: #e6db74">}</span>
-<span style="color: #e6db74">)raw&quot;</span><span style="color: #f8f8f2">;</span>
-<span style="color: #f8f8f2">portal.load(aux);</span>
-
-<span style="color: #75715e">// Loading from Stream assumes &quot;aux.json&quot; file should be store in SPIFFS.</span>
-<span style="color: #f8f8f2">File</span> <span style="color: #f8f8f2">aux</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">SPIFFS.open(</span><span style="color: #e6db74">&quot;aux.json&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;r&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">portal.load(aux);</span>
-<span style="color: #f8f8f2">aux.close();</span>
-</pre></div></p>
-<p>AutoConnect passes the given JSON document directly to the <a href="https://arduinojson.org/v5/api/jsonbuffer/parseobject/"><strong>parseObject()</strong></a> function of the ArduinoJson library for parsing. Therefore, the constraint of the parseObject() function is applied as it is in the parsing of the JSON document for the AutoConnect. That is, if the JSON string is read-only, duplicating the input string occurs and consumes more memory.</p>
-<h3 id="adjust-the-json-document-buffer-size"><i class="fa fa-caret-right"></i> Adjust the JSON document buffer size<a class="headerlink" href="#adjust-the-json-document-buffer-size" title="Permanent link">&para;</a></h3>
-<p>AutoConnect uses ArduinoJson library's dynamic buffer to parse JSON documents. Its dynamic buffer allocation scheme depends on the version 5 or version 6 of ArduinoJson library. Either version must have enough buffer to parse the custom web page's JSON document successfully. AutoConnect has the following three constants internally to complete the parsing as much as possible in both ArduinoJson version. These constants are macro defined in <a href="https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h">AutoConnectDefs.h</a>.</p>
-<p>If memory insufficiency occurs during JSON document parsing, you can adjust these constants to avoid insufficiency by using the <a href="https://arduinojson.org/v6/assistant/">JsonAssistant</a> with deriving the required buffer size in advance.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#define AUTOCONNECT_JSONBUFFER_SIZE     256</span>
-<span style="color: #75715e">#define AUTOCONNECT_JSONDOCUMENT_SIZE   (8 * 1024)</span>
-<span style="color: #75715e">#define AUTOCONNECT_JSONPSRAM_SIZE      (16* 1024)</span>
-</pre></div>
-
-<h4 id="autoconnect_jsonbuffer_size">AUTOCONNECT_JSONBUFFER_SIZE<a class="headerlink" href="#autoconnect_jsonbuffer_size" title="Permanent link">&para;</a></h4>
-<p>This is a unit size constant of <a href="https://arduinojson.org/v5/faq/what-are-the-differences-between-staticjsonbuffer-and-dynamicjsonbuffer/">DynamicJsonBuffer</a> and works when the library used is ArduinoJson version 5. A buffer size of the JSON document increases with this unit. This value relates to the impact of the fragmented heap area. If it is too large, may occur run-out of memory.</p>
-<h4 id="autoconnect_jsondocument_size">AUTOCONNECT_JSONDOCUMENT_SIZE<a class="headerlink" href="#autoconnect_jsondocument_size" title="Permanent link">&para;</a></h4>
-<p>This is a size of <a href="https://arduinojson.org/v6/api/dynamicjsondocument/">DynamicJsonDocument</a> for ArduinoJson version 6. This buffer is not automatically expanding, and the size determines the limit.</p>
-<h4 id="autoconnect_jsonpsram_size">AUTOCONNECT_JSONPSRAM_SIZE<a class="headerlink" href="#autoconnect_jsonpsram_size" title="Permanent link">&para;</a></h4>
-<p>For ESP32 module equips with PSRAM, you can allocate the JSON document buffer to PSRAM. Buffer allocation to PSRAM will enable when <strong>PSRAM:Enabled</strong> option selected in the Arduino IDE's Board Manager menu. It is available since ArduinoJson 6.10.0.</p>
-<h2 id="saving-json-document">Saving JSON document<a class="headerlink" href="#saving-json-document" title="Permanent link">&para;</a></h2>
-<p>The sketch can persist AutoConnectElements as a JSON document and also uses <a href="achandling.html#saving-autoconnectelements-with-json">this function</a> to save the values ​​entered on the custom Web page. And you can reload the saved JSON document into AutoConnectElements as the field in a custom Web page using the <a href="achandling.html#loading-autoconnectaux-autoconnectelements-with-json">load function</a>. </p>
-<div class="footnote">
-<hr />
-<ol>
-<li id="fn:1">
-<p>Loading and saving AutoConnect parameters adopt this method.&#160;<a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p>
-</li>
-</ol>
-</div></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="acelements.html" title="AutoConnectElements" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>AutoConnectElements</span></div></a><a href="achandling.html" title="Handling the custom Web pages" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>Handling the custom Web pages</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/acupload.html b/lib/AutoConnect-master/docs/acupload.html
deleted file mode 100644
index 0559d66ac01bfe153e70a647f643e9286b9119b3..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/acupload.html
+++ /dev/null
@@ -1,366 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/acupload.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>File upload handler - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#uploading-file-from-web-browser" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">File upload handler</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7"><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--active md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9" checked><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">File upload handler</label><a href="acupload.html" title="File upload handler" class="md-nav__link md-nav__link--active">File upload handler</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#uploading-file-from-web-browser" title="Uploading file from Web Browser" class="md-nav__link">Uploading file from Web Browser</a></li><li class="md-nav__item"><a href="#basic-steps-of-the-file-upload-sketch" title="Basic steps of the file upload sketch" class="md-nav__link">Basic steps of the file upload sketch</a></li><li class="md-nav__item"><a href="#where-will-the-file-upload" title="Where will the file upload" class="md-nav__link">Where will the file upload</a></li><li class="md-nav__item"><a href="#when-it-will-be-uploaded" title="When it will be uploaded" class="md-nav__link">When it will be uploaded</a></li><li class="md-nav__item"><a href="#the-file-name-for-the-uploaded-file" title="The file name for the uploaded file" class="md-nav__link">The file name for the uploaded file</a></li><li class="md-nav__item"><a href="#upload-to-a-device-other-than-flash-or-sd" title="Upload to a device other than Flash or SD" class="md-nav__link">Upload to a device other than Flash or SD</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#upload-handler-base-class" title=" Upload handler base class" class="md-nav__link"> Upload handler base class</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#member-functions" title=" Member functions" class="md-nav__link"> Member functions</a></li></ul></nav></li><li class="md-nav__item"><a href="#register-custom-upload-handler" title=" Register custom upload handler" class="md-nav__link"> Register custom upload handler</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#uploading-file-from-web-browser" title="Uploading file from Web Browser" class="md-nav__link">Uploading file from Web Browser</a></li><li class="md-nav__item"><a href="#basic-steps-of-the-file-upload-sketch" title="Basic steps of the file upload sketch" class="md-nav__link">Basic steps of the file upload sketch</a></li><li class="md-nav__item"><a href="#where-will-the-file-upload" title="Where will the file upload" class="md-nav__link">Where will the file upload</a></li><li class="md-nav__item"><a href="#when-it-will-be-uploaded" title="When it will be uploaded" class="md-nav__link">When it will be uploaded</a></li><li class="md-nav__item"><a href="#the-file-name-for-the-uploaded-file" title="The file name for the uploaded file" class="md-nav__link">The file name for the uploaded file</a></li><li class="md-nav__item"><a href="#upload-to-a-device-other-than-flash-or-sd" title="Upload to a device other than Flash or SD" class="md-nav__link">Upload to a device other than Flash or SD</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#upload-handler-base-class" title=" Upload handler base class" class="md-nav__link"> Upload handler base class</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#member-functions" title=" Member functions" class="md-nav__link"> Member functions</a></li></ul></nav></li><li class="md-nav__item"><a href="#register-custom-upload-handler" title=" Register custom upload handler" class="md-nav__link"> Register custom upload handler</a></li></ul></nav></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>File upload handler</h1><h2 id="uploading-file-from-web-browser">Uploading file from Web Browser<a class="headerlink" href="#uploading-file-from-web-browser" title="Permanent link">&para;</a></h2>
-<p>If you have to write some data individually to the ESP8266/ESP32 module for the sketch behavior, the <a href="acelements.html#autoconnectfile">AutoConnectFile</a> element will assist with your wants implementation. The AutoConnectFile element produces an HTML <code>&lt;input type="file"&gt;</code> tag and can save uploaded file to the flash or external SD of the ESP8266/ESP32 module. The handler for saving is built into AutoConnect. You can use it to inject any sketch data such as the initial values for the custom Web page into the ESP module via OTA without using the sketch data upload tool of Arduino-IDE.
-<p style="display:block;margin-left:auto;margin-right:auto;width:603px;height:368px;border:1px solid lightgray;"><img data-gifffer="images/upload.gif" data-gifffer-width="601" data-gifffer-height="366""/></p></p>
-<h2 id="basic-steps-of-the-file-upload-sketch">Basic steps of the file upload sketch<a class="headerlink" href="#basic-steps-of-the-file-upload-sketch" title="Permanent link">&para;</a></h2>
-<p>Here is the basic procedure of the sketch which can upload files from the client browser using AutoConnectFile:<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup></p>
-<ol>
-<li>Place AutoConnectFile on a custom Web page by writing JSON or constructor code directly with the sketch.</li>
-<li>Place other AutoConnectElements as needed.</li>
-<li>Place AutoConnectSubmit on the same custom Web page.</li>
-<li>Perform the following process in the on-handler of submitting destination:<ul>
-<li>Retrieve the <a href="apielements.html#autoconnectfile">AutoConnectFile instance</a> from the custom Web page where you placed the AutoConnectFile element using the <a href="apiaux.html#getelement">AutoConnectAux::getElement</a> function or the <a href="apiaux.html#operator">operator []</a>.</li>
-<li>Start access to the device specified as the upload destination. In usually, it depends on the file system's begin function. For example, if you specified Flash's SPIFFS as the upload destination, invokes <em>SPIFFS.begin()</em>.</li>
-<li>The <a href="acelements.html#value_3">value member</a> of AutoConnectFile contains the file name of the upload file. Use its file name to access the uploaded file on the device.</li>
-<li>Invokes the end function associated with the begin to close the device. It is the <em>SPIFFS.end()*</em> if the flash on the ESP module has been begun for SPIFFS.</li>
-</ul>
-</li>
-</ol>
-<p>The following sketch is an example that implements the above basic steps. The <em>postUpload</em> function is the on-handler and retrieves the AutoConnectFile as named <code>upload_file</code>. You should note that this handler is <strong>not</strong> for a custom Web page placed with its AutoConnectFile element. The uploaded file should be processed by the handler for the transition destination page from the AutoConnectFile element placed page. AutoConnect built-in upload handler will save the uploaded file to the specified device before invoking the <em>postUpload</em> function.</p>
-<p>However, If you use uploaded files in different situations, it may be more appropriate to place the actual handling process outside the handler. It applies for the parameter file, etc. The important thing is that you do not have to sketch file reception and storing logic by using the AutoConnectFile element and the upload handler built into the AutoConnect.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WiFi.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WebServer.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;FS.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;AutoConnect.h&gt;</span>
-
-<span style="color: #75715e">// Upload request custom Web page</span>
-<span style="color: #66d9ef">static</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span> <span style="color: #f8f8f2">PAGE_UPLOAD[]</span> <span style="color: #f8f8f2">PROGMEM</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">R&quot;(</span>
-<span style="color: #e6db74">{</span>
-<span style="color: #e6db74">  &quot;uri&quot;: &quot;/&quot;,</span>
-<span style="color: #e6db74">  &quot;title&quot;: &quot;Upload&quot;,</span>
-<span style="color: #e6db74">  &quot;menu&quot;: true,</span>
-<span style="color: #e6db74">  &quot;element&quot;: [</span>
-<span style="color: #e6db74">    { &quot;name&quot;:&quot;caption&quot;, &quot;type&quot;:&quot;ACText&quot;, &quot;value&quot;:&quot;&lt;h2&gt;File uploading platform&lt;h2&gt;&quot; },</span>
-<span style="background-color: #49483e"><span style="color: #e6db74">    { &quot;name&quot;:&quot;upload_file&quot;, &quot;type&quot;:&quot;ACFile&quot;, &quot;label&quot;:&quot;Select file: &quot;, &quot;store&quot;:&quot;fs&quot; },</span>
-</span><span style="color: #e6db74">    { &quot;name&quot;:&quot;upload&quot;, &quot;type&quot;:&quot;ACSubmit&quot;, &quot;value&quot;:&quot;UPLOAD&quot;, &quot;uri&quot;:&quot;/upload&quot; }</span>
-<span style="color: #e6db74">  ]</span>
-<span style="color: #e6db74">}</span>
-<span style="color: #e6db74">)&quot;</span><span style="color: #f8f8f2">;</span>
-
-<span style="color: #75715e">// Upload result display</span>
-<span style="color: #66d9ef">static</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span> <span style="color: #f8f8f2">PAGE_BROWSE[]</span> <span style="color: #f8f8f2">PROGMEM</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">R&quot;(</span>
-<span style="color: #e6db74">{</span>
-<span style="color: #e6db74">  &quot;uri&quot;: &quot;/upload&quot;,</span>
-<span style="color: #e6db74">  &quot;title&quot;: &quot;Upload&quot;,</span>
-<span style="color: #e6db74">  &quot;menu&quot;: false,</span>
-<span style="color: #e6db74">  &quot;element&quot;: [</span>
-<span style="color: #e6db74">    { &quot;name&quot;:&quot;caption&quot;, &quot;type&quot;:&quot;ACText&quot;, &quot;value&quot;:&quot;&lt;h2&gt;Uploading ended&lt;h2&gt;&quot; },</span>
-<span style="color: #e6db74">    { &quot;name&quot;:&quot;filename&quot;, &quot;type&quot;:&quot;ACText&quot; },</span>
-<span style="color: #e6db74">    { &quot;name&quot;:&quot;size&quot;, &quot;type&quot;:&quot;ACText&quot;, &quot;format&quot;:&quot;%s bytes uploaded&quot; },</span>
-<span style="color: #e6db74">    { &quot;name&quot;:&quot;content_type&quot;, &quot;type&quot;:&quot;ACText&quot;, &quot;format&quot;:&quot;Content: %s&quot; }</span>
-<span style="color: #e6db74">  ]</span>
-<span style="color: #e6db74">}</span>
-<span style="color: #e6db74">)&quot;</span><span style="color: #f8f8f2">;</span>
-
-<span style="color: #f8f8f2">ESP8266WebServer</span> <span style="color: #f8f8f2">server;</span>
-<span style="color: #f8f8f2">AutoConnect</span> <span style="color: #a6e22e">portal</span><span style="color: #f8f8f2">(server);</span>
-<span style="color: #75715e">// Declare AutoConnectAux separately as a custom web page to access</span>
-<span style="color: #75715e">// easily for each page in the post-upload handler.</span>
-<span style="color: #f8f8f2">AutoConnectAux</span> <span style="color: #f8f8f2">auxUpload;</span>
-<span style="color: #f8f8f2">AutoConnectAux</span> <span style="color: #f8f8f2">auxBrowse;</span>
-
-<span style="color: #75715e">/**</span>
-<span style="color: #75715e"> * Post uploading, AutoConnectFile&#39;s built-in upload handler reads the</span>
-<span style="color: #75715e"> * file saved in SPIFFS and displays the file contents on /upload custom</span>
-<span style="color: #75715e"> * web page. However, only files with mime type uploaded as text are</span>
-<span style="color: #75715e"> * displayed. A custom web page handler is called after upload.</span>
-<span style="color: #75715e"> * @param  aux  AutoConnectAux(/upload)</span>
-<span style="color: #75715e"> * @param  args PageArgument</span>
-<span style="color: #75715e"> * @return Uploaded text content</span>
-<span style="color: #75715e"> */</span>
-<span style="color: #f8f8f2">String</span> <span style="color: #a6e22e">postUpload</span><span style="color: #f8f8f2">(AutoConnectAux</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">aux,</span> <span style="color: #f8f8f2">PageArgument</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">args)</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">String</span>  <span style="color: #f8f8f2">content;</span>
-<span style="background-color: #49483e">  <span style="color: #f8f8f2">AutoConnectFile</span><span style="color: #f92672">&amp;</span>  <span style="color: #f8f8f2">upload</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">auxUpload[</span><span style="color: #e6db74">&quot;upload_file&quot;</span><span style="color: #f8f8f2">].as</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectFile</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">();</span>
-</span>  <span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&amp;</span>  <span style="color: #f8f8f2">aux_filename</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">aux[</span><span style="color: #e6db74">&quot;filename&quot;</span><span style="color: #f8f8f2">].as</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">();</span>
-  <span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&amp;</span>  <span style="color: #f8f8f2">aux_size</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">aux[</span><span style="color: #e6db74">&quot;size&quot;</span><span style="color: #f8f8f2">].as</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">();</span>
-  <span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&amp;</span>  <span style="color: #f8f8f2">aux_contentType</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">aux[</span><span style="color: #e6db74">&quot;content_type&quot;</span><span style="color: #f8f8f2">].as</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">();</span>
-  <span style="color: #75715e">// Assignment operator can be used for the element attribute.</span>
-  <span style="color: #f8f8f2">aux_filename.value</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">upload.value;</span>
-  <span style="color: #f8f8f2">aux_size.value</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">String(upload.size);</span>
-  <span style="color: #f8f8f2">aux_contentType.value</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">upload.mimeType;</span>
-  <span style="color: #75715e">// The file saved by the AutoConnect upload handler is read from</span>
-  <span style="color: #75715e">// the EEPROM and echoed to a custom web page.</span>
-  <span style="color: #f8f8f2">SPIFFS.begin();</span>
-<span style="background-color: #49483e">  <span style="color: #f8f8f2">File</span> <span style="color: #f8f8f2">uploadFile</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">SPIFFS.open(String(</span><span style="color: #e6db74">&quot;/&quot;</span> <span style="color: #f92672">+</span> <span style="color: #f8f8f2">upload.value).c_str(),</span> <span style="color: #e6db74">&quot;r&quot;</span><span style="color: #f8f8f2">);</span>
-</span>  <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(uploadFile)</span> <span style="color: #f8f8f2">{</span>
-    <span style="color: #66d9ef">while</span> <span style="color: #f8f8f2">(uploadFile.available())</span> <span style="color: #f8f8f2">{</span>
-<span style="background-color: #49483e">      <span style="color: #66d9ef">char</span> <span style="color: #f8f8f2">c</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">uploadFile.read();</span>
-</span>      <span style="color: #f8f8f2">Serial.print(c);</span>
-    <span style="color: #f8f8f2">}</span>
-<span style="background-color: #49483e">    <span style="color: #f8f8f2">uploadFile.close();</span>
-</span>  <span style="color: #f8f8f2">}</span>
-  <span style="color: #66d9ef">else</span>
-    <span style="color: #f8f8f2">content</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;Not saved&quot;</span><span style="color: #f8f8f2">;</span>
-  <span style="color: #f8f8f2">SPIFFS.end();</span>
-  <span style="color: #66d9ef">return</span> <span style="color: #f8f8f2">String();</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">delay(</span><span style="color: #ae81ff">1000</span><span style="color: #f8f8f2">);</span>
-  <span style="color: #f8f8f2">Serial.begin(</span><span style="color: #ae81ff">115200</span><span style="color: #f8f8f2">);</span>
-  <span style="color: #f8f8f2">Serial.println();</span>
-
-  <span style="color: #f8f8f2">auxUpload.load(PAGE_UPLOAD);</span>
-  <span style="color: #f8f8f2">auxBrowse.load(PAGE_BROWSE);</span>
-  <span style="color: #f8f8f2">portal.join({</span> <span style="color: #f8f8f2">auxUpload,</span> <span style="color: #f8f8f2">auxBrowse</span> <span style="color: #f8f8f2">});</span>
-<span style="background-color: #49483e">  <span style="color: #f8f8f2">auxBrowse.on(postUpload);</span>
-</span>  <span style="color: #f8f8f2">portal.begin();</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">portal.handleClient();</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<h2 id="where-will-the-file-upload">Where will the file upload<a class="headerlink" href="#where-will-the-file-upload" title="Permanent link">&para;</a></h2>
-<p>The AutoConnect built-in upload handler can save the upload file to three locations:</p>
-<ol>
-<li>Flash memory embedded in the ESP8266/ESP32 module</li>
-<li>SD device externally connected to the ESP8266/ESP32 module</li>
-<li>Other character devices</li>
-</ol>
-<p>You can specify the device type to save with the <a href="acelements.html#store"><strong>store</strong></a> attribute of AutoConenctFile, and it accepts the following values:</p>
-<ul>
-<li>Flash : <code>AC_File_FS</code> for the API parameter or <code>fs</code> for the JSON document</li>
-<li>SD : <code>AC_File_SD</code> for the API parameter or <code>sd</code> for the JSON document</li>
-<li>Other : <code>AC_File_Extern</code> for the API parameter or <code>extern</code> for the JSON document</li>
-</ul>
-<p>The substance of AC_File_FS (fs) is a SPIFFS file system implemented by the ESP8266/ESP32 core, and then AutoConnect uses the Global Instance <strong>SPIFFS</strong> to access SPIFFS.</p>
-<p>Also, the substance of AC_File_SD (sd) is a FAT file of Arduino SD library ported to the ESP8266/ESP32 core, and then AutoConnect uses the Global Instance <strong>SD</strong> to access SD. When saving to an external SD device, there are additional required parameters for the connection interface and is defined as the macro in AutoConnectDefs.h.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#define AUTOCONNECT_SD_CS       SS</span>
-<span style="color: #75715e">#define AUTOCONNECT_SD_SPEED    4000000</span>
-</pre></div>
-
-<p><code>AUTOCONNECT_SD_CS</code> defines which GPIO for the CS (Chip Select, or SS as Slave Select) pin. This definition is derived from pins_arduino.h, which is included in the Arduino core distribution. If you want to assign the CS pin to another GPIO, you need to change the macro definition of AutoConnectDefs.h.</p>
-<p><code>AUTOCONNECT_SD_SPEED</code> defines SPI clock speed depending on the connected device.</p>
-<div class="admonition info">
-<p class="admonition-title">Involves both the begin() and the end()</p>
-<p>The built-in uploader executes the begin and end functions regardless of the sketch whence the file system of the device will terminate with the uploader termination. Therefore, to use the device in the sketch after uploading, you need to <strong>restart it with the begin</strong> function.</p>
-</div>
-<h2 id="when-it-will-be-uploaded">When it will be uploaded<a class="headerlink" href="#when-it-will-be-uploaded" title="Permanent link">&para;</a></h2>
-<p>Upload handler will be launched by ESP8266WebServer/WebServer(as ESP32) library which is triggered by receiving an HTTP stream of POST BODY including file content. Its launching occurs before invoking the page handler.</p>
-<p>The following diagram illustrates the file uploading sequence:</p>
-<p><img src="images/ac_upload_flow.svg"></p>
-<p>At the time of the page handler behaves, the uploaded file already saved to the device, and the <a href="acelements.html#name_3">member variables</a> of AutoConnectFile reflects the file name and transfer size.</p>
-<h2 id="the-file-name-for-the-uploaded-file">The file name for the uploaded file<a class="headerlink" href="#the-file-name-for-the-uploaded-file" title="Permanent link">&para;</a></h2>
-<p>AutoConnetFile saves the uploaded file with the file name you selected by <code>&lt;input type="file"&gt;</code> tag on the browser. The file name used for uploading is stored in the AutoConnetFile's value member, which you can access after uploading. (i.e. In the handler of the destination page by the AutoConnectSubmit element.) You can not save it with a different name. It can be renamed after upload if you need to change the name.</p>
-<h2 id="upload-to-a-device-other-than-flash-or-sd">Upload to a device other than Flash or SD<a class="headerlink" href="#upload-to-a-device-other-than-flash-or-sd" title="Permanent link">&para;</a></h2>
-<p>You can output the file to any device using a custom uploader by specifying <a href="acjson.html#acfile"><strong>extern</strong></a> with the <a href="acjson.html#acfile"><strong>store</strong></a> attribute of <a href="acjson.html#acfile">AutoConnectFile</a> (or specifying <a href="acelements.html#store"><strong>AC_File_Extern</strong></a> for the <a href="apielements.html#store"><strong>store</strong></a> member variable) and can customize the uploader according to the need to upload files to other than Flash or SD. Implements your own uploader with inheriting the <a href="#upload-handler-base-class"><strong>AutoConnectUploadHandler</strong></a> class which is the base class of the upload handler.</p>
-<div class="admonition note">
-<p class="admonition-title">It's not so difficult</p>
-<p>Implementing the custom uploader requires a little knowledge of the c++ language. If you are less attuned to programming c++, you may find it difficult. But don't worry. You can make it in various situations by just modifying the sketch skeleton that appears at the end of this page.</p>
-</div>
-<h3 id="upload-handler-base-class"><i class="fa fa-code"></i> Upload handler base class<a class="headerlink" href="#upload-handler-base-class" title="Permanent link">&para;</a></h3>
-<p>AutoConnectUploadHandler is a base class of upload handler and It has one public member function and three protected functions. </p>
-<h4 id="constructor"><i class="fa fa-caret-right"></i> Constructor<a class="headerlink" href="#constructor" title="Permanent link">&para;</a></h4>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectUploadHandler()</span>
-</pre></div>
-
-<h4 id="member-functions"><i class="fa fa-caret-right"></i> Member functions<a class="headerlink" href="#member-functions" title="Permanent link">&para;</a></h4>
-<p>The <strong>upload</strong> public function is an entry point, the ESP8266WebServer (WebServer as ESP32) library will invoke the upload with each time of uploading content divided into chunks. </p>
-<p>Also, the <strong>_open</strong>, <strong>_write</strong> and <strong>_close</strong> protected functions are actually responsible for saving files and are declared as pure virtual functions. A custom uploader class that inherits from the AutoConnectUploadHandler class need to implement these functions.</p>
-<p>The actual upload process is handled by the three private functions above, and then upload only invokes three functions according to the upload situation. In usually, there is no need to override the upload function in an inherited class.</p>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">public</span> <span style="color: #66d9ef">virtual</span> <span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">upload(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">requestUri,</span> <span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">HTTPUpload</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">upload)</span>
-</pre></div>
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">requestUri</span><span class="apidesc">URI of upload request source.</span></dd>
-    <dd><span class="apidef">upload</span><span class="apidesc">A data structure of the upload file as <b>HTTPUpload</b>. It is defined in the ESP8266WebServer (WebServer as ESP32) library as follows:</p>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">typedef</span> <span style="color: #66d9ef">struct</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">HTTPUploadStatus</span> <span style="color: #f8f8f2">status;</span>
-  <span style="color: #f8f8f2">String</span>  <span style="color: #f8f8f2">filename;</span>
-  <span style="color: #f8f8f2">String</span>  <span style="color: #f8f8f2">name;</span>
-  <span style="color: #f8f8f2">String</span>  <span style="color: #f8f8f2">type;</span>
-  <span style="color: #66d9ef">size_t</span>  <span style="color: #f8f8f2">totalSize;</span>
-  <span style="color: #66d9ef">size_t</span>  <span style="color: #f8f8f2">currentSize;</span>
-  <span style="color: #66d9ef">size_t</span>  <span style="color: #f8f8f2">contentLength;</span>
-  <span style="color: #66d9ef">uint8_t</span> <span style="color: #f8f8f2">buf[HTTP_UPLOAD_BUFLEN];</span>
-<span style="color: #f8f8f2">}</span> <span style="color: #f8f8f2">HTTPUpload;</span>
-</pre></div>
-    </span></dd>
-</dl></p>
-<p>The upload handler needs to implement processing based on the enumeration value of HTTPUpload.status as <strong>HTTPUploadStatus</strong> enum type. HTTPUploadStatus enumeration is as follows:</p>
-<ul>
-<li><strong><code>UPLOAD_FILE_START</code></strong> : Invokes to the _open.</li>
-<li><strong><code>UPLOAD_FILE_WRITE</code></strong> : Invokes to the _write.</li>
-<li><strong><code>UPLOAD_FILE_END</code></strong> : Invokes to the _close.</li>
-<li><strong><code>UPLOAD_FILE_ABORTED</code></strong> : Invokes to the _close.</li>
-</ul>
-<p>The _open function will be invoked when HTTPUploadStatus is <strong>UPLOAD_FILE_START</strong>. Usually, the implementation of an inherited class will open the file.</p>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">protected</span> <span style="color: #66d9ef">virtual</span> <span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">_open(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">filename,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">mode)</span> <span style="color: #f92672">=</span> <span style="color: #ae81ff">0</span>
-</pre></div>
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">filename</span><span class="apidesc">Uploading file name.</span></dd>
-    <dd><span class="apidef">mode</span><span class="apidesc">An indicator for the file access mode, a "w" for writing.</span></dd>
-    <dt><strong>Return value</strong></dt>
-    <dd><span class="apidef">true</span><span class="apidesc">File open successful.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">Failed to open.</span></dd>
-</dl></p>
-<p>The _write function will be invoked when HTTPUploadStatus is <strong>UPLOAD_FILE_WRITE</strong>. The content of the upload file is divided and the _write will be invoked in multiple times. Usually, the implementation of an inherited class will write data.</p>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">protected</span> <span style="color: #66d9ef">virtual</span> <span style="color: #66d9ef">size_t</span> <span style="color: #f8f8f2">_write(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">uint8_t</span> <span style="color: #f92672">*</span><span style="color: #f8f8f2">buf,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">size_t</span> <span style="color: #f8f8f2">size))</span><span style="color: #f92672">=</span> <span style="color: #ae81ff">0</span>
-</pre></div>
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">buf</span><span class="apidesc">File content block.</span></dd>
-    <dd><span class="apidef">size</span><span class="apidesc">File block size to write.</span></dd>
-    <dt><strong>Return value</strong></dt>
-    <dd>Size written.</dd>
-</dl></p>
-<p>The _close function will be invoked when HTTPUploadStatus is <strong>UPLOAD_FILE_END</strong> or <strong>UPLOAD_FILE_ABORTED</strong>. Usually, the implementation of an inherited class will close the file.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">protected</span> <span style="color: #66d9ef">virtual</span> <span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">_close(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span> <span style="color: #f92672">=</span> <span style="color: #ae81ff">0</span>
-</pre></div>
-
-<p>For reference, the following AutoConnectUploadFS class is an implementation of AutoConnect built-in uploader and inherits from AutoConnectUploadHandler.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">class</span> <span style="color: #a6e22e">AutoConnectUploadFS</span> <span style="color: #f92672">:</span> <span style="color: #66d9ef">public</span> <span style="color: #f8f8f2">AutoConnectUploadHandler</span> <span style="color: #f8f8f2">{</span>
- <span style="color: #66d9ef">public</span><span style="color: #f92672">:</span>
-  <span style="color: #66d9ef">explicit</span> <span style="color: #f8f8f2">AutoConnectUploadFS(SPIFFST</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">media)</span> <span style="color: #f92672">:</span> <span style="color: #f8f8f2">_media(</span><span style="color: #f92672">&amp;</span><span style="color: #f8f8f2">media)</span> <span style="color: #f8f8f2">{}</span>
-  <span style="color: #f92672">~</span><span style="color: #f8f8f2">AutoConnectUploadFS()</span> <span style="color: #f8f8f2">{</span> <span style="color: #f8f8f2">_close();</span> <span style="color: #f8f8f2">}</span>
-
- <span style="color: #66d9ef">protected</span><span style="color: #f92672">:</span>
-  <span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">_open(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">filename,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">mode)</span> <span style="color: #66d9ef">override</span> <span style="color: #f8f8f2">{</span>
-    <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(_media</span><span style="color: #f92672">-&gt;</span><span style="color: #f8f8f2">begin())</span> <span style="color: #f8f8f2">{</span>
-      <span style="color: #f8f8f2">_file</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">_media</span><span style="color: #f92672">-&gt;</span><span style="color: #f8f8f2">open(filename,</span> <span style="color: #f8f8f2">mode);</span>
-      <span style="color: #66d9ef">return</span> <span style="color: #f8f8f2">_file</span> <span style="color: #f92672">!=</span> <span style="color: #f8f8f2">false;</span>      
-    <span style="color: #f8f8f2">}</span>
-    <span style="color: #66d9ef">return</span> <span style="color: #f8f8f2">false;</span>
-  <span style="color: #f8f8f2">}</span>
-
-  <span style="color: #66d9ef">size_t</span> <span style="color: #f8f8f2">_write(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">uint8_t</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">buf,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">size_t</span> <span style="color: #f8f8f2">size)</span> <span style="color: #66d9ef">override</span> <span style="color: #f8f8f2">{</span>
-    <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(_file)</span>
-      <span style="color: #66d9ef">return</span> <span style="color: #f8f8f2">_file.write(buf,</span> <span style="color: #f8f8f2">size);</span>
-    <span style="color: #66d9ef">else</span>
-      <span style="color: #66d9ef">return</span> <span style="color: #f92672">-</span><span style="color: #ae81ff">1</span><span style="color: #f8f8f2">;</span>
-  <span style="color: #f8f8f2">}</span>
-
-  <span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">_close(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span> <span style="color: #66d9ef">override</span> <span style="color: #f8f8f2">{</span>
-    <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(_file)</span>
-      <span style="color: #f8f8f2">_file.close();</span>
-    <span style="color: #f8f8f2">_media</span><span style="color: #f92672">-&gt;</span><span style="color: #f8f8f2">end();</span>
-  <span style="color: #f8f8f2">}</span>
-
- <span style="color: #66d9ef">private</span><span style="color: #f92672">:</span>
-  <span style="color: #f8f8f2">SPIFFST</span><span style="color: #f92672">*</span>  <span style="color: #f8f8f2">_media;</span>
-  <span style="color: #f8f8f2">SPIFileT</span>  <span style="color: #f8f8f2">_file;</span> 
-<span style="color: #f8f8f2">};</span>
-</pre></div>
-
-<h3 id="register-custom-upload-handler"><i class="fa fa-code"></i> Register custom upload handler<a class="headerlink" href="#register-custom-upload-handler" title="Permanent link">&para;</a></h3>
-<p>In order to upload a file by the custom uploader, it is necessary to register it to the custom Web page beforehand. To register a custom uploader, specify the custom uploader class name in the template argument of the  <a href="apiaux.html#onupload">AutoConnectAux::onUpload</a> function and invokes it.</p>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">onUpload</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">T</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(T</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">uploadClass)</span>
-</pre></div>
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">T</span><span class="apidesc">Specifies a class name of the custom uploader. This class name is a class that you implemented by inheriting AutoConnectUploadHandler for custom upload.</span></dd>
-    <dd><span class="apidef">uploadClass</span><span class="apidesc">Specifies the custom upload class instance.</span></dd>
-</dl></p>
-<p>The rough structure of the sketches that completed these implementations will be as follows:</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WiFi.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WebServer.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;AutoConnect.h&gt;</span>
-
-<span style="color: #66d9ef">static</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span> <span style="color: #f8f8f2">PAGE_UPLOAD[]</span> <span style="color: #f8f8f2">PROGMEM</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">R&quot;(</span>
-<span style="color: #e6db74">{</span>
-<span style="color: #e6db74">  &quot;uri&quot;: &quot;/&quot;,</span>
-<span style="color: #e6db74">  &quot;title&quot;: &quot;Upload&quot;,</span>
-<span style="color: #e6db74">  &quot;menu&quot;: true,</span>
-<span style="color: #e6db74">  &quot;element&quot;: [</span>
-<span style="color: #e6db74">    { &quot;name&quot;:&quot;caption&quot;, &quot;type&quot;:&quot;ACText&quot;, &quot;value&quot;:&quot;&lt;h2&gt;File uploading platform&lt;h2&gt;&quot; },</span>
-<span style="color: #e6db74">    { &quot;name&quot;:&quot;upload_file&quot;, &quot;type&quot;:&quot;ACFile&quot;, &quot;label&quot;:&quot;Select file: &quot;, &quot;store&quot;:&quot;extern&quot; },</span>
-<span style="color: #e6db74">    { &quot;name&quot;:&quot;upload&quot;, &quot;type&quot;:&quot;ACSubmit&quot;, &quot;value&quot;:&quot;UPLOAD&quot;, &quot;uri&quot;:&quot;/upload&quot; }</span>
-<span style="color: #e6db74">  ]</span>
-<span style="color: #e6db74">}</span>
-<span style="color: #e6db74">)&quot;</span><span style="color: #f8f8f2">;</span>
-
-<span style="color: #66d9ef">static</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span> <span style="color: #f8f8f2">PAGE_RECEIVED[]</span> <span style="color: #f8f8f2">PROGMEM</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">R&quot;(</span>
-<span style="color: #e6db74">{</span>
-<span style="color: #e6db74">  &quot;uri&quot;: &quot;/upload&quot;,</span>
-<span style="color: #e6db74">  &quot;title&quot;: &quot;Upload ended&quot;,</span>
-<span style="color: #e6db74">  &quot;menu&quot;: false,</span>
-<span style="color: #e6db74">  &quot;element&quot;: [</span>
-<span style="color: #e6db74">    { &quot;name&quot;:&quot;caption&quot;, &quot;type&quot;:&quot;ACText&quot;, &quot;value&quot;:&quot;&lt;h2&gt;File uploading ended&lt;h2&gt;&quot; }</span>
-<span style="color: #e6db74">  ]</span>
-<span style="color: #e6db74">}</span>
-<span style="color: #e6db74">)&quot;</span><span style="color: #f8f8f2">;</span>
-
-<span style="color: #75715e">// Custom upload handler class</span>
-<span style="color: #66d9ef">class</span> <span style="color: #a6e22e">CustomUploader</span> <span style="color: #f92672">:</span> <span style="color: #66d9ef">public</span> <span style="color: #f8f8f2">AutoConnectUploadHandler</span> <span style="color: #f8f8f2">{</span>
-<span style="color: #66d9ef">public</span><span style="color: #f92672">:</span>
-  <span style="color: #f8f8f2">CustomUploader()</span> <span style="color: #f8f8f2">{}</span>
-  <span style="color: #f92672">~</span><span style="color: #f8f8f2">CustomUploader()</span> <span style="color: #f8f8f2">{}</span>
-
-<span style="color: #66d9ef">protected</span><span style="color: #f92672">:</span>
-  <span style="color: #66d9ef">bool</span>   <span style="color: #f8f8f2">_open(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">filename,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">mode)</span> <span style="color: #66d9ef">override</span><span style="color: #f8f8f2">;</span>
-  <span style="color: #66d9ef">size_t</span> <span style="color: #a6e22e">_write</span><span style="color: #f8f8f2">(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">uint8_t</span> <span style="color: #f92672">*</span><span style="color: #f8f8f2">buf,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">size_t</span> <span style="color: #f8f8f2">size)</span> <span style="color: #66d9ef">override</span><span style="color: #f8f8f2">;</span>
-  <span style="color: #66d9ef">void</span>   <span style="color: #a6e22e">_close</span><span style="color: #f8f8f2">(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span> <span style="color: #66d9ef">override</span><span style="color: #f8f8f2">;</span>
-<span style="color: #f8f8f2">};</span>
-
-<span style="color: #75715e">// _open for custom open</span>
-<span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">CustomUploader</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">_open(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">filename,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">mode)</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #75715e">// Here, an implementation for the open file.</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #75715e">// _open for custom write</span>
-<span style="color: #66d9ef">size_t</span> <span style="color: #f8f8f2">CustomUploader</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">_write(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">uint8_t</span> <span style="color: #f92672">*</span><span style="color: #f8f8f2">buf,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">size_t</span> <span style="color: #f8f8f2">size)</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #75715e">// Here, an implementation for the writing the file data.</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #75715e">// _open for custom close</span>
-<span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">CustomUploader</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">_close(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #75715e">// Here, an implementation for the close file.</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #f8f8f2">AutoConnect</span>     <span style="color: #f8f8f2">portal;</span>
-<span style="color: #f8f8f2">AutoConnectAux</span>  <span style="color: #f8f8f2">uploadPage;</span>
-<span style="color: #f8f8f2">AutoConnectAux</span>  <span style="color: #f8f8f2">receivePage;</span>
-<span style="color: #f8f8f2">CustomUploader</span>  <span style="color: #f8f8f2">uploader;</span>   <span style="color: #75715e">// Declare the custom uploader</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">uploadPage.load(PAGE_UPLOAD);</span>
-  <span style="color: #f8f8f2">receivePage.load(PAGE_RECEIVED);</span>
-  <span style="color: #f8f8f2">portal.join({</span> <span style="color: #f8f8f2">uploadPage,</span> <span style="color: #f8f8f2">receivePage</span> <span style="color: #f8f8f2">});</span>
-  <span style="color: #f8f8f2">receivePage.onUpload</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">CustomUploader</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(uploader);</span>  <span style="color: #75715e">// Register the custom uploader</span>
-  <span style="color: #f8f8f2">portal.begin();</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">portal.handleClient();</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<div class="admonition note">
-<p class="admonition-title">Don't forget to specify the store</p>
-<p>When using a custom uploader, remember to specify the <strong>extern</strong> for the store attribute of AutoConnectFile.</p>
-</div>
-<script>
-  window.onload = function() {
-    Gifffer();
-  };
-</script>
-
-<div class="footnote">
-<hr />
-<ol>
-<li id="fn:1">
-<p>The AutoConnectFile element can be used with other AutoConnectElements on the same page.&#160;<a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p>
-</li>
-</ol>
-</div></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="credit.html" title="Saved credentail access" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>Saved credentail access</span></div></a><a href="colorized.html" title="Custom colorized" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>Custom colorized</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/advancedusage.html b/lib/AutoConnect-master/docs/advancedusage.html
deleted file mode 100644
index 84663e022d3c73cf62579c6b0836d95d1c031ba9..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/advancedusage.html
+++ /dev/null
@@ -1,442 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/advancedusage.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>Advanced usage - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#advanced-usage" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">Advanced usage</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">Advanced usage</label><a href="advancedusage.html" title="Advanced usage" class="md-nav__link md-nav__link--active">Advanced usage</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#advanced-usage" title="Advanced usage" class="md-nav__link">Advanced usage</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#404-handler" title=" 404 handler" class="md-nav__link"> 404 handler</a></li><li class="md-nav__item"><a href="#access-to-saved-credentials" title=" Access to saved credentials" class="md-nav__link"> Access to saved credentials</a></li><li class="md-nav__item"><a href="#automatic-reconnect" title=" Automatic reconnect" class="md-nav__link"> Automatic reconnect</a></li><li class="md-nav__item"><a href="#auto-save-credential" title=" Auto save Credential" class="md-nav__link"> Auto save Credential</a></li><li class="md-nav__item"><a href="#captive-portal-start-detection" title=" Captive portal start detection" class="md-nav__link"> Captive portal start detection</a></li><li class="md-nav__item"><a href="#captive-portal-timeout-control" title=" Captive portal timeout control" class="md-nav__link"> Captive portal timeout control</a></li><li class="md-nav__item"><a href="#casts-the-html-pages-to-be-add-on-into-the-menu" title=" Casts the HTML pages to be add-on into the menu" class="md-nav__link"> Casts the HTML pages to be add-on into the menu</a></li><li class="md-nav__item"><a href="#change-menu-title" title=" Change menu title" class="md-nav__link"> Change menu title</a></li><li class="md-nav__item"><a href="#change-the-menu-labels" title=" Change the menu labels" class="md-nav__link"> Change the menu labels</a></li><li class="md-nav__item"><a href="#combination-with-mdns" title=" Combination with mDNS" class="md-nav__link"> Combination with mDNS</a></li><li class="md-nav__item"><a href="#debug-print" title=" Debug print" class="md-nav__link"> Debug print</a></li><li class="md-nav__item"><a href="#disable-the-captive-portal" title=" Disable the captive portal" class="md-nav__link"> Disable the captive portal</a></li><li class="md-nav__item"><a href="#make-ssid-of-softap-unique" title=" Make SSID of SoftAP unique" class="md-nav__link"> Make SSID of SoftAP unique</a></li><li class="md-nav__item"><a href="#move-the-saving-area-of-eeprom-for-the-credentials" title=" Move the saving area of EEPROM for the credentials" class="md-nav__link"> Move the saving area of EEPROM for the credentials</a></li><li class="md-nav__item"><a href="#on-demand-start-the-captive-portal" title=" On-demand start the captive portal" class="md-nav__link"> On-demand start the captive portal</a></li><li class="md-nav__item"><a href="#refers-the-hosted-esp8266webserverwebserver" title=" Refers the hosted ESP8266WebServer/WebServer" class="md-nav__link"> Refers the hosted ESP8266WebServer/WebServer</a></li><li class="md-nav__item"><a href="#usage-for-automatically-instantiated-esp8266webserverwebserver" title=" Usage for automatically instantiated ESP8266WebServer/WebServer" class="md-nav__link"> Usage for automatically instantiated ESP8266WebServer/WebServer</a></li><li class="md-nav__item"><a href="#use-with-the-pagebuilder-library" title=" Use with the PageBuilder library" class="md-nav__link"> Use with the PageBuilder library</a></li></ul></nav></li><li class="md-nav__item"><a href="#configuration-functions" title="Configuration functions" class="md-nav__link">Configuration functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#configuration-for-soft-ap-and-captive-portal" title=" Configuration for Soft AP and captive portal" class="md-nav__link"> Configuration for Soft AP and captive portal</a></li><li class="md-nav__item"><a href="#assign-user-sketchs-home-path" title=" Assign user sketch's home path" class="md-nav__link"> Assign user sketch's home path</a></li><li class="md-nav__item"><a href="#change-ssid-and-password-for-softap" title=" Change SSID and Password for SoftAP" class="md-nav__link"> Change SSID and Password for SoftAP</a></li><li class="md-nav__item"><a href="#relocate-the-autoconnect-home-path" title=" Relocate the AutoConnect home path" class="md-nav__link"> Relocate the AutoConnect home path</a></li><li class="md-nav__item"><a href="#static-ip-assignment-2" title=" Static IP assignment 2" class="md-nav__link"> Static IP assignment 2</a></li><li class="md-nav__item"><a href="#station-host-name" title=" Station host name" class="md-nav__link"> Station host name</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7"><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#advanced-usage" title="Advanced usage" class="md-nav__link">Advanced usage</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#404-handler" title=" 404 handler" class="md-nav__link"> 404 handler</a></li><li class="md-nav__item"><a href="#access-to-saved-credentials" title=" Access to saved credentials" class="md-nav__link"> Access to saved credentials</a></li><li class="md-nav__item"><a href="#automatic-reconnect" title=" Automatic reconnect" class="md-nav__link"> Automatic reconnect</a></li><li class="md-nav__item"><a href="#auto-save-credential" title=" Auto save Credential" class="md-nav__link"> Auto save Credential</a></li><li class="md-nav__item"><a href="#captive-portal-start-detection" title=" Captive portal start detection" class="md-nav__link"> Captive portal start detection</a></li><li class="md-nav__item"><a href="#captive-portal-timeout-control" title=" Captive portal timeout control" class="md-nav__link"> Captive portal timeout control</a></li><li class="md-nav__item"><a href="#casts-the-html-pages-to-be-add-on-into-the-menu" title=" Casts the HTML pages to be add-on into the menu" class="md-nav__link"> Casts the HTML pages to be add-on into the menu</a></li><li class="md-nav__item"><a href="#change-menu-title" title=" Change menu title" class="md-nav__link"> Change menu title</a></li><li class="md-nav__item"><a href="#change-the-menu-labels" title=" Change the menu labels" class="md-nav__link"> Change the menu labels</a></li><li class="md-nav__item"><a href="#combination-with-mdns" title=" Combination with mDNS" class="md-nav__link"> Combination with mDNS</a></li><li class="md-nav__item"><a href="#debug-print" title=" Debug print" class="md-nav__link"> Debug print</a></li><li class="md-nav__item"><a href="#disable-the-captive-portal" title=" Disable the captive portal" class="md-nav__link"> Disable the captive portal</a></li><li class="md-nav__item"><a href="#make-ssid-of-softap-unique" title=" Make SSID of SoftAP unique" class="md-nav__link"> Make SSID of SoftAP unique</a></li><li class="md-nav__item"><a href="#move-the-saving-area-of-eeprom-for-the-credentials" title=" Move the saving area of EEPROM for the credentials" class="md-nav__link"> Move the saving area of EEPROM for the credentials</a></li><li class="md-nav__item"><a href="#on-demand-start-the-captive-portal" title=" On-demand start the captive portal" class="md-nav__link"> On-demand start the captive portal</a></li><li class="md-nav__item"><a href="#refers-the-hosted-esp8266webserverwebserver" title=" Refers the hosted ESP8266WebServer/WebServer" class="md-nav__link"> Refers the hosted ESP8266WebServer/WebServer</a></li><li class="md-nav__item"><a href="#usage-for-automatically-instantiated-esp8266webserverwebserver" title=" Usage for automatically instantiated ESP8266WebServer/WebServer" class="md-nav__link"> Usage for automatically instantiated ESP8266WebServer/WebServer</a></li><li class="md-nav__item"><a href="#use-with-the-pagebuilder-library" title=" Use with the PageBuilder library" class="md-nav__link"> Use with the PageBuilder library</a></li></ul></nav></li><li class="md-nav__item"><a href="#configuration-functions" title="Configuration functions" class="md-nav__link">Configuration functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#configuration-for-soft-ap-and-captive-portal" title=" Configuration for Soft AP and captive portal" class="md-nav__link"> Configuration for Soft AP and captive portal</a></li><li class="md-nav__item"><a href="#assign-user-sketchs-home-path" title=" Assign user sketch's home path" class="md-nav__link"> Assign user sketch's home path</a></li><li class="md-nav__item"><a href="#change-ssid-and-password-for-softap" title=" Change SSID and Password for SoftAP" class="md-nav__link"> Change SSID and Password for SoftAP</a></li><li class="md-nav__item"><a href="#relocate-the-autoconnect-home-path" title=" Relocate the AutoConnect home path" class="md-nav__link"> Relocate the AutoConnect home path</a></li><li class="md-nav__item"><a href="#static-ip-assignment-2" title=" Static IP assignment 2" class="md-nav__link"> Static IP assignment 2</a></li><li class="md-nav__item"><a href="#station-host-name" title=" Station host name" class="md-nav__link"> Station host name</a></li></ul></nav></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>Advanced usage</h1><h2 id="advanced-usage">Advanced usage<a class="headerlink" href="#advanced-usage" title="Permanent link">&para;</a></h2>
-<h3 id="404-handler"><i class="fa fa-caret-right"></i> 404 handler<a class="headerlink" href="#404-handler" title="Permanent link">&para;</a></h3>
-<p>Registering the "not found" handler is a different way than ESP8266WebServer (WebServer as ESP32). The <em>onNotFound</em> of ESP8266WebServer/WebServer does not work with AutoConnect. AutoConnect overrides <em>ESP8266WebServer::onNotFound</em>/<em>WebServer::onNotFound</em> to handle a captive portal. To register "not found" handler, use <a href="api.html#onnotfound"><em>AutoConnect::onNotFound</em></a>.</p>
-<h3 id="access-to-saved-credentials"><i class="fa fa-caret-right"></i> Access to saved credentials<a class="headerlink" href="#access-to-saved-credentials" title="Permanent link">&para;</a></h3>
-<p>AutoConnect stores the established WiFi connection in the EEPROM of the ESP8266/ESP32 module and equips the class to access it from the sketch. You can read, write or erase the credentials using this class individually. It's <a href="credit.html#autoconnectcredential">AutoConnectCredential</a> class which provides the access method to the saved credentials in EEPROM. Refer to section <a href="credit.html">Saved credentail access</a> for details.</p>
-<h3 id="automatic-reconnect"><i class="fa fa-caret-right"></i> Automatic reconnect<a class="headerlink" href="#automatic-reconnect" title="Permanent link">&para;</a></h3>
-<p>When the captive portal is started, SoftAP starts and the STA is disconnected. The current SSID setting memorized in ESP8266 will be lost but then the reconnect behavior of ESP32 is somewhat different from this.</p>
-<p>The <a href="https://github.com/espressif/arduino-esp32/blob/a0f0bd930cfd2d607bf3d3288f46e2d265dd2e11/libraries/WiFi/src/WiFiSTA.h#L46"><em>WiFiSTAClass::disconnect</em></a> function implemented in the arduino-esp32 has extended parameters than the ESP8266's arduino-core. The second parameter of WiFi.disconnect on the arduino-esp32 core that does not exist in the <a href="https://github.com/esp8266/Arduino/blob/7e1bdb225da8ab337373517e6a86a99432921a86/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp#L296">ESP8266WiFiSTAClass</a> has the effect of deleting the currently connected WiFi configuration and its default value is "false". On the ESP32 platform, even if WiFi.disconnect is executed, WiFi.begin() without the parameters in the next turn will try to connect to that AP. That is, automatic reconnection is implemented in arduino-esp32 already. Although this behavior appears seemingly competent, it is rather a disadvantage in scenes where you want to change the access point each time. When explicitly disconnecting WiFi from the Disconnect menu, AutoConnect will erase the AP connection settings saved by arduino-esp32 core. AutoConnect's automatic reconnection is a mechanism independent from the automatic reconnection of the arduino-esp32 core.</p>
-<p>If the <a href="apiconfig.html#autoreconnect"><strong>autoReconnect</strong></a> option of the <a href="apiconfig.html">AutoConnectConfig</a> class is enabled, it automatically attempts to reconnect to the disconnected past access point. When the autoReconnect option is specified, AutoConnect will not start SoftAP immediately if the first WiFi.begin fails. It will scan WiFi signal and the same connection information as the detected BSSID is stored in EEPROM as AutoConnect's credentials, explicitly apply it with WiFi.begin and rerun.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnect</span>       <span style="color: #f8f8f2">Portal;</span>
-<span style="color: #f8f8f2">AutoConnectConfig</span> <span style="color: #f8f8f2">Config;</span>
-<span style="background-color: #49483e"><span style="color: #f8f8f2">Config.autoReconnect</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">true;</span>
-</span><span style="color: #f8f8f2">Portal.config(Config);</span>
-<span style="color: #f8f8f2">Portal.begin();</span>
-</pre></div>
-
-<p>An autoReconnect option is available to <em>AutoConnect::begin</em> without SSID and pass passphrase.</p>
-<div class="admonition caution">
-<p class="admonition-title">An autoReconnect will work if SSID detection succeeded</p>
-<p>An autoReconnect will not effect if the SSID which stored credential to be connected is a hidden access point.</p>
-</div>
-<h3 id="auto-save-credential"><i class="fa fa-caret-right"></i> Auto save Credential<a class="headerlink" href="#auto-save-credential" title="Permanent link">&para;</a></h3>
-<p>By default, AutoConnect saves the credentials of the established connection in EEPROM. You can disable it with the <a href="apiconfig.html#autosave"><strong>autoSave</strong></a> parameter specified by <a href="apiconfig.html">AutoConnectConfig</a>.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnect</span>       <span style="color: #f8f8f2">Portal;</span>
-<span style="color: #f8f8f2">AutoConnectConfig</span> <span style="color: #f8f8f2">Config;</span>
-<span style="background-color: #49483e"><span style="color: #f8f8f2">Config.autoSave</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">AC_SAVECREDENTIAL_NEVER;</span>
-</span><span style="color: #f8f8f2">Portal.config(Config);</span>
-<span style="color: #f8f8f2">Portal.begin();</span>
-</pre></div>
-
-<div class="admonition note">
-<p class="admonition-title">In ESP32, the credentials for AutoConnect are not in NVS</p>
-<p>The credentials used by AutoConnect are not saved in NVS on ESP32 module. ESP-IDF saves the WiFi connection configuration to NVS, but AutoConnect stores it on the EEPROM partition. You can find the partition table for default as <a href="https://github.com/espressif/arduino-esp32/blob/master/tools/partitions/default.csv">default.csv</a></p>
-</div>
-<h3 id="captive-portal-start-detection"><i class="fa fa-caret-right"></i> Captive portal start detection<a class="headerlink" href="#captive-portal-start-detection" title="Permanent link">&para;</a></h3>
-<p>The captive portal will only be activated if the first <em>WiFi::begin</em> fails. Sketch can detect with the <a href="api.html#ondetect"><em>AutoConnect::onDetect</em></a> function that the captive portal has started. For example, the sketch can be written like as follows that turns on the LED at the start captive portal.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnect</span> <span style="color: #f8f8f2">Portal;</span>
-
-<span style="background-color: #49483e"><span style="color: #66d9ef">bool</span> <span style="color: #a6e22e">startCP</span><span style="color: #f8f8f2">(IPAddress</span> <span style="color: #f8f8f2">ip)</span> <span style="color: #f8f8f2">{</span>
-</span>  <span style="color: #f8f8f2">digitalWrite(BUILTIN_LED,</span> <span style="color: #f8f8f2">HIGH);</span>
-  <span style="color: #f8f8f2">Serial.println(</span><span style="color: #e6db74">&quot;C.P. started, IP:&quot;</span> <span style="color: #f92672">+</span> <span style="color: #f8f8f2">WiFi.localIP().toString());</span>
-  <span style="color: #66d9ef">return</span> <span style="color: #f8f8f2">true;</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">Serial.begin(</span><span style="color: #ae81ff">115200</span><span style="color: #f8f8f2">);</span>
-  <span style="color: #f8f8f2">pinMode(BUILTIN_LED,</span> <span style="color: #f8f8f2">OUTPUT);</span>
-  <span style="color: #f8f8f2">digitalWrite(BUILTIN_LED,</span> <span style="color: #f8f8f2">LOW);</span>
-<span style="background-color: #49483e">  <span style="color: #f8f8f2">Portal.onDetect(startCP);</span>
-</span>  <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(Portal.begin())</span> <span style="color: #f8f8f2">{</span>
-    <span style="color: #f8f8f2">digitalWrite(BUILTIN_LED,</span> <span style="color: #f8f8f2">LOW);</span>
-  <span style="color: #f8f8f2">}</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">Portal.handleClient();</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<h3 id="captive-portal-timeout-control"><i class="fa fa-caret-right"></i> Captive portal timeout control<a class="headerlink" href="#captive-portal-timeout-control" title="Permanent link">&para;</a></h3>
-<p>AutoConnect has two parameters for timeout control. One is a timeout value used when trying to connect to the specified AP. It behaves the same as general timeout control in connection attempt by WiFi.begin. This control is specified by the third parameter of <a href="api.html#begin"><em>AutoConnect::begin</em></a>. The default value is macro defined by <a href="api.html#defined-macros"><strong>AUTOCONNECT_TIMEOUT</strong></a> in the <strong>AutoConnectDef.h</strong> file.</p>
-<p>The other timeout control is for the captive portal itself. It is useful when you want to continue sketch execution with offline even if the WiFi connection is not possible. You can also combine it with the <a href="#on-demand-start-the-captive-portal"><strong>immediateStart</strong></a> option to create sketches with high mobility.</p>
-<p>The timeout of the captive portal is specified together with <a href="apiconfig.html#portaltimeout"><em>AutoConnectConfig::portalTimeout</em></a> as follows.</p>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WiFi.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WebServer.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;AutoConnect.h&gt;</span>
-
-<span style="color: #f8f8f2">AutoConnect</span>  <span style="color: #f8f8f2">portal;</span>
-<span style="color: #f8f8f2">AutoConnectConfig</span>  <span style="color: #f8f8f2">config;</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-<span style="background-color: #49483e">  <span style="color: #f8f8f2">config.portalTimeout</span> <span style="color: #f92672">=</span> <span style="color: #ae81ff">60000</span><span style="color: #f8f8f2">;</span>  <span style="color: #75715e">// It will time out in 60 seconds</span>
-</span>  <span style="color: #f8f8f2">portal.config(config);</span>
-  <span style="color: #f8f8f2">portal.begin();</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(WiFi.status()</span> <span style="color: #f92672">==</span> <span style="color: #f8f8f2">WL_CONNECTED)</span> <span style="color: #f8f8f2">{</span>
-    <span style="color: #75715e">// Some sketch code for the connected scene is here.</span>
-  <span style="color: #f8f8f2">}</span>
-  <span style="color: #66d9ef">else</span> <span style="color: #f8f8f2">{</span>
-    <span style="color: #75715e">// Some sketch code for not connected scene is here.</span>
-  <span style="color: #f8f8f2">}</span>
-  <span style="color: #f8f8f2">portal.handleClient();</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-Also, if you want to stop AutoConnect completely when the captive portal is timed out, you need to call the <a href="api.html#end"><em>AutoConnect::end</em></a> function. It looks like the following code:</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">acEnable;</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">config.portalTimeout</span> <span style="color: #f92672">=</span> <span style="color: #ae81ff">60000</span><span style="color: #f8f8f2">;</span>  <span style="color: #75715e">// It will time out in 60 seconds</span>
-  <span style="color: #f8f8f2">portal.config(config);</span>
-  <span style="color: #f8f8f2">acEnable</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">portal.begin();</span>
-  <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(</span><span style="color: #f92672">!</span><span style="color: #f8f8f2">acEnable)</span> <span style="color: #f8f8f2">{</span>
-    <span style="color: #f8f8f2">portal.end();</span>
-  <span style="color: #f8f8f2">}</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(WiFi.status()</span> <span style="color: #f92672">==</span> <span style="color: #f8f8f2">WL_CONNECTED)</span> <span style="color: #f8f8f2">{</span>
-    <span style="color: #75715e">// Some sketch code for the connected scene is here.</span>
-  <span style="color: #f8f8f2">}</span>
-  <span style="color: #66d9ef">else</span> <span style="color: #f8f8f2">{</span>
-    <span style="color: #75715e">// Some sketch code for not connected scene is here.</span>
-  <span style="color: #f8f8f2">}</span>
-  <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(acEnable)</span> <span style="color: #f8f8f2">{</span>
-    <span style="color: #f8f8f2">portal.handleClient();</span>
-  <span style="color: #f8f8f2">}</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<p>There is another option related to timeout in AutoConnectConfig. It can make use of the captive portal function even after a timeout. The <a href="apiconfig.html#retainportal"><em>AutoConnectConfig::retainPortal</em></a> option will not stop the SoftAP when the captive portal is timed out. If you enable the ratainPortal option, you can try to connect to the AP at any time while continuing to sketch execution with offline even after the captive portal timed-out. Compared to the above code specified no option with the following example code, the captive portal will remain available even after a timeout without changing the logic of the sketch.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WiFi.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WebServer.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;AutoConnect.h&gt;</span>
-
-<span style="color: #f8f8f2">AutoConnect</span>  <span style="color: #f8f8f2">portal;</span>
-<span style="color: #f8f8f2">AutoConnectConfig</span>  <span style="color: #f8f8f2">config;</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">config.portalTimeout</span> <span style="color: #f92672">=</span> <span style="color: #ae81ff">60000</span><span style="color: #f8f8f2">;</span>  <span style="color: #75715e">// It will time out in 60 seconds</span>
-<span style="background-color: #49483e">  <span style="color: #f8f8f2">config.retainPortal</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">true;</span>
-</span>  <span style="color: #f8f8f2">portal.config(config);</span>
-  <span style="color: #f8f8f2">portal.begin();</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(WiFi.status()</span> <span style="color: #f92672">==</span> <span style="color: #f8f8f2">WL_CONNECTED)</span> <span style="color: #f8f8f2">{</span>
-    <span style="color: #75715e">// Some sketch code for the connected scene is here.</span>
-  <span style="color: #f8f8f2">}</span>
-  <span style="color: #66d9ef">else</span> <span style="color: #f8f8f2">{</span>
-    <span style="color: #75715e">// Some sketch code for not connected scene is here.</span>
-  <span style="color: #f8f8f2">}</span>
-  <span style="color: #f8f8f2">portal.handleClient();</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<h3 id="casts-the-html-pages-to-be-add-on-into-the-menu"><i class="fa fa-caret-right"></i> Casts the HTML pages to be add-on into the menu<a class="headerlink" href="#casts-the-html-pages-to-be-add-on-into-the-menu" title="Permanent link">&para;</a></h3>
-<p>If your sketch handles web pages, you can embed the pages into the AutoConnect menu in continuance enjoying the utility of the WiFi connection feature. Unlike the custom Web pages by <a href="acelements.html">AutoConnectElements</a>, this allows to legacy web pages registered by <em>ESP8266WebServer::on</em> or <em>WebServer::on</em> function.</p>
-<p>You can use AutoConnectAux only constructed with the URI of the page to be embedding. AutoConnectElements is not required. The basic procedure for this as follows:</p>
-<ol>
-<li>Declare AutoConnectAux for each legacy page. It includes the URI of the page and item string which will display in the AutoConnect menu.</li>
-<li>Sketch the legacy page handlers.</li>
-<li>Register those handler functions to ESP8266WebServer/WebServer with the <strong>on</strong> function.</li>
-<li>Register AutoConnectAux declared with #1 to AutoConnect using <a href="api.html#join"><em>AutoConnect::join</em></a> function. It serves as a menu item.</li>
-<li><a href="api.html#begin">Begin</a> the portal.</li>
-<li>Performs <a href="api.html#handleClient"><em>AutoConnect::handleClient</em></a> in the <strong>loop</strong> function.</li>
-</ol>
-<p>For details, see section <a href="menuize.html">Constructing the menu</a> of Examples page.</p>
-<h3 id="change-menu-title"><i class="fa fa-caret-right"></i> Change menu title<a class="headerlink" href="#change-menu-title" title="Permanent link">&para;</a></h3>
-<p>Although the default menu title is <strong>AutoConnect</strong>, you can change the title by setting <a href="apiconfig.html#title"><em>AutoConnectConfig::title</em></a>. To set the menu title properly, you must set before calling <a href="api.html#begin"><em>AutoConnect::begin</em></a>.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnect</span>       <span style="color: #f8f8f2">Portal;</span>
-<span style="color: #f8f8f2">AutoConnectConfig</span> <span style="color: #f8f8f2">Config;</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #75715e">// Set menu title</span>
-<span style="background-color: #49483e">  <span style="color: #f8f8f2">Config.title</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;FSBrowser&quot;</span><span style="color: #f8f8f2">;</span>
-</span><span style="background-color: #49483e">  <span style="color: #f8f8f2">Portal.config(Config);</span>
-</span>  <span style="color: #f8f8f2">Portal.begin();</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<p>Executing the above sketch will rewrite the menu title for the <strong>FSBrowser</strong> as the below.</p>
-<div style="float:left;width:40%;height:470px;overflow:hidden;"><img src="images/fsbmenu.png"></div>
-
-<p><img style="margin-left:70px;width:40%;height:470px;" src="images/fsbmenu_expand.png"></p>
-<h3 id="change-the-menu-labels"><i class="fa fa-caret-right"></i> Change the menu labels<a class="headerlink" href="#change-the-menu-labels" title="Permanent link">&para;</a></h3>
-<p>You can change the label of the AutoConnect menu item by rewriting the default label letter in <a href="https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectLabels.h">AutoConnectLabels.h</a> macros. However, changing menu items letter influences all the sketch's build scenes.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#define AUTOCONNECT_MENULABEL_CONFIGNEW   &quot;Configure new AP&quot;</span>
-<span style="color: #75715e">#define AUTOCONNECT_MENULABEL_OPENSSIDS   &quot;Open SSIDs&quot;</span>
-<span style="color: #75715e">#define AUTOCONNECT_MENULABEL_DISCONNECT  &quot;Disconnect&quot;</span>
-<span style="color: #75715e">#define AUTOCONNECT_MENULABEL_RESET       &quot;Reset...&quot;</span>
-<span style="color: #75715e">#define AUTOCONNECT_MENULABEL_HOME        &quot;HOME&quot;</span>
-<span style="color: #75715e">#define AUTOCONNECT_BUTTONLABEL_RESET     &quot;RESET&quot;</span>
-</pre></div>
-
-<h3 id="combination-with-mdns"><i class="fa fa-caret-right"></i> Combination with mDNS<a class="headerlink" href="#combination-with-mdns" title="Permanent link">&para;</a></h3>
-<p>With <a href="https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266mDNS">mDNS library</a>, you can access to ESP8266 by name instead of IP address after connection. The sketch can start the MDNS responder after <a href="api.html#begin"><em>AutoConnect::begin</em></a>.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WiFi.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266mDNS.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WebServer.h&gt;</span>
-<span style="color: #f8f8f2">AutoConnect</span> <span style="color: #f8f8f2">Portal;</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(Portal.begin())</span> <span style="color: #f8f8f2">{</span>
-<span style="background-color: #49483e">    <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(MDNS.begin(</span><span style="color: #e6db74">&quot;esp8266&quot;</span><span style="color: #f8f8f2">))</span> <span style="color: #f8f8f2">{</span>
-</span><span style="background-color: #49483e">      <span style="color: #f8f8f2">MDNS.addService(</span><span style="color: #e6db74">&quot;http&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;tcp&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #ae81ff">80</span><span style="color: #f8f8f2">);</span>
-</span>    <span style="color: #f8f8f2">}</span>
-  <span style="color: #f8f8f2">}</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">Portal.handleClient();</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<h3 id="debug-print"><i class="fa fa-caret-right"></i> Debug print<a class="headerlink" href="#debug-print" title="Permanent link">&para;</a></h3>
-<p>You can output AutoConnect monitor messages to the <strong>Serial</strong>. A monitor message activation switch is in an include header file <a href="https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h">AutoConnectDefs.h</a> of library source. Define <a href="https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h#L14"><strong>AC_DEBUG</strong></a> macro to output the monitor messages.<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup></p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#define AC_DEBUG</span>
-</pre></div>
-
-<h3 id="disable-the-captive-portal"><i class="fa fa-caret-right"></i> Disable the captive portal<a class="headerlink" href="#disable-the-captive-portal" title="Permanent link">&para;</a></h3>
-<p>It can also prevent the captive portal from starting even if the connection at the first <em>WiFi.begin</em> fails. In this case, <a href="api.html#begin"><em>AutoConnect::begin</em></a> behaves same as <em>WiFi.begin</em>.</p>
-<p>For disabling the captive portal, <a href="apiconfig.html#autorise"><strong>autoRise</strong></a> sets to false with <a href="apiconfig.html">AutoConnectConfig</a>.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnect</span>       <span style="color: #f8f8f2">portal;</span>
-<span style="color: #f8f8f2">AutoConnectConfig</span> <span style="color: #f8f8f2">acConfig;</span>
-
-<span style="background-color: #49483e"><span style="color: #f8f8f2">acConfig.autoRaise</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">false;</span>
-</span><span style="color: #f8f8f2">portal.config(acConfig);</span>
-<span style="color: #f8f8f2">portal.begin();</span>
-</pre></div>
-
-<h3 id="make-ssid-of-softap-unique"><i class="fa fa-caret-right"></i> Make SSID of SoftAP unique<a class="headerlink" href="#make-ssid-of-softap-unique" title="Permanent link">&para;</a></h3>
-<p>You can change SoftAP's SSID and password programmatically when the captive portal starts up. By using chip specific ID of esp8266/esp32 you can make SSID of SoftAP unique. SSID and password for SoftAP is <a href="apiconfig.html#apid"><em>AutoConnectConfig::apid</em></a> and <a href="apiconfig.html#psk"><em>AutoConnectConfig::psk</em></a>.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnect</span>       <span style="color: #f8f8f2">portal;</span>
-<span style="color: #f8f8f2">AutoConnectConfig</span> <span style="color: #f8f8f2">acConfig;</span>
-
-<span style="color: #f8f8f2">acConfig.apid</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;ESP-&quot;</span> <span style="color: #f92672">+</span> <span style="color: #f8f8f2">String(ESP.getChipId(),</span> <span style="color: #f8f8f2">HEX);</span>
-<span style="color: #f8f8f2">acConfig.psk</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">YOUR_PASSWORD;</span>
-<span style="color: #f8f8f2">portal.config(acConfig);</span>
-<span style="color: #f8f8f2">portal.begin();</span>
-</pre></div>
-
-<div class="admonition hint">
-<p class="admonition-title">Obtaining chip ID for ESP32</p>
-<p><code>acConfig.apid = "ESP-" + String((uint32_t)(ESP.getEfuseMac() &gt;&gt; 32), HEX);</code></p>
-</div>
-<h3 id="move-the-saving-area-of-eeprom-for-the-credentials"><i class="fa fa-caret-right"></i> Move the saving area of EEPROM for the credentials<a class="headerlink" href="#move-the-saving-area-of-eeprom-for-the-credentials" title="Permanent link">&para;</a></h3>
-<p>By default, the credentials saving area is occupied from the beginning of EEPROM area. <a href="http://arduino-esp8266.readthedocs.io/en/latest/filesystem.html?highlight=eeprom#flash-layout">ESP8266 Arduino core document</a> says that:</p>
-<blockquote>
-<p>The following diagram illustrates flash layout used in Arduino environment:</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span>|--------------|-------|---------------|--|--|--|--|--|
-^              ^       ^               ^     ^
-Sketch    OTA update   File system   EEPROM  WiFi config (SDK)
-</pre></div>
-
-</blockquote>
-<p>and</p>
-<blockquote>
-<p>EEPROM library uses one sector of flash located <a href="http://arduino-esp8266.readthedocs.io/en/latest/libraries.html?highlight=SPIFFS#eeprom">just after the SPIFFS</a>.</p>
-</blockquote>
-<p>Also, the placement of the EEPROM area of ESP32 is described in the <a href="https://github.com/espressif/arduino-esp32/blob/master/tools/partitions/default.csv">partition table</a>. So in the default state, the credential storage area used by AutoConnect conflicts with data owned by the user sketch. It will be destroyed together saved data in EEPROM by user sketch and AutoConnect each other. But you can move the storage area to avoid this.</p>
-<p>The <a href="apiconfig.html#boundaryoffset"><strong>boundaryOffset</strong></a> in <a href="apiconfig.html">AutoConnectConfig</a> specifies the start offset of the credentials storage area. The default value is 0.</p>
-<h3 id="on-demand-start-the-captive-portal"><i class="fa fa-caret-right"></i> On-demand start the captive portal<a class="headerlink" href="#on-demand-start-the-captive-portal" title="Permanent link">&para;</a></h3>
-<p>If you do not usually connect to WiFi and need to establish a WiFi connection if necessary, you can combine the <a href="apiconfig.html#autorise"><strong>autoRise</strong></a> option with the <a href="apiconfig.html#immediatestart"><strong>immediateStart</strong></a> option to achieve on-demand connection. This behavior is similar to the <a href="https://github.com/tzapu/WiFiManager#on-demand-configuration-portal">WiFiManager's startConfigPortal</a> function. In order to do this, you usually configure only with AutoConnectConfig in <em>setup()</em> and <a href="api.html#begin"><em>AutoConnect::begin</em></a> handles in <em>loop()</em>.</p>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnect</span>       <span style="color: #f8f8f2">Portal;</span>
-<span style="color: #f8f8f2">AutoConnectConfig</span> <span style="color: #f8f8f2">Config;</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-<span style="background-color: #49483e">  <span style="color: #f8f8f2">Config.autoRise</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">false;</span>
-</span><span style="background-color: #49483e">  <span style="color: #f8f8f2">Config.immediateStart</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">true;</span>
-</span>  <span style="color: #f8f8f2">Portal.config(Config);</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(digitalRead(TRIGGER_PIN)</span> <span style="color: #f92672">==</span> <span style="color: #f8f8f2">LOW)</span> <span style="color: #f8f8f2">{</span>
-    <span style="color: #66d9ef">while</span> <span style="color: #f8f8f2">(digitalRead(TRIGGER_PIN)</span> <span style="color: #f92672">==</span> <span style="color: #f8f8f2">LOW)</span>
-      <span style="color: #f8f8f2">yield();</span>
-    <span style="color: #f8f8f2">Portal.begin();</span>
-  <span style="color: #f8f8f2">}</span>
-  <span style="color: #f8f8f2">Portal.handleClient();</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-The above example does not connect to WiFi until TRIGGER_PIN goes LOW. When TRIGGER_PIN goes LOW, the captive portal starts and you can connect to WiFi. Even if you reset the module, it will not automatically reconnect.</p>
-<h3 id="refers-the-hosted-esp8266webserverwebserver"><i class="fa fa-caret-right"></i> Refers the hosted ESP8266WebServer/WebServer<a class="headerlink" href="#refers-the-hosted-esp8266webserverwebserver" title="Permanent link">&para;</a></h3>
-<p>Constructing an AutoConnect object variable without parameters then creates and starts an ESP8266WebServer/WebServer inside the AutoConnect. This object variable could be referred by <a href="api.html#host"><em>AutoConnect::host</em></a> function to access ESP8266WebServer/WebServer instance as like below.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnect</span> <span style="color: #f8f8f2">Portal;</span>
-
-<span style="color: #f8f8f2">Portal.begin();</span>
-<span style="background-color: #49483e"><span style="color: #f8f8f2">ESP8266WebServer</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">server</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">Portal.host();</span>
-</span><span style="color: #f8f8f2">server.send(</span><span style="color: #ae81ff">200</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;text/plain&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;Hello, world&quot;</span><span style="color: #f8f8f2">);</span>
-</pre></div>
-
-<div class="admonition info">
-<p class="admonition-title">When host() is valid</p>
-<p>The host() can be referred at after <em>AutoConnect::begin</em>.</p>
-</div>
-<h3 id="usage-for-automatically-instantiated-esp8266webserverwebserver"><i class="fa fa-caret-right"></i> Usage for automatically instantiated ESP8266WebServer/WebServer<a class="headerlink" href="#usage-for-automatically-instantiated-esp8266webserverwebserver" title="Permanent link">&para;</a></h3>
-<p>The sketch can handle URL requests using ESP8266WebServer or WebServer that AutoConnect started internally. ESP8266WebServer/WebServer instantiated dynamically by AutoConnect can be referred to by <a href="api.html#host"><em>AutoConnect::host</em></a> function. The sketch can use the '<strong>on</strong>' function, '<strong>send</strong>' function, '<strong>client</strong>' function and others by ESP8266WebServer/WebServer reference of its return value.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WiFi.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WebServer.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;AutoConnect.h&gt;</span>
-
-<span style="color: #f8f8f2">AutoConnect</span>       <span style="color: #f8f8f2">Portal;</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">handleRoot</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-<span style="background-color: #49483e">  <span style="color: #f8f8f2">ESP8266WebServer</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">IntServer</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">Portal.host();</span>
-</span><span style="background-color: #49483e">  <span style="color: #f8f8f2">IntServer.send(</span><span style="color: #ae81ff">200</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;text/html&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;Hello, world&quot;</span><span style="color: #f8f8f2">);</span>
-</span><span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">handleNotFound</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-<span style="background-color: #49483e">  <span style="color: #f8f8f2">ESP8266WebServer</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">IntServer</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">Portal.host();</span>
-</span><span style="background-color: #49483e">  <span style="color: #f8f8f2">IntServer.send(</span><span style="color: #ae81ff">404</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;text/html&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;Unknown.&quot;</span><span style="color: #f8f8f2">);</span>
-</span><span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">r</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">Portal.begin();</span>
-  <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(r)</span> <span style="color: #f8f8f2">{</span>
-<span style="background-color: #49483e">    <span style="color: #f8f8f2">ESP8266WebServer</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">IntServer</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">Portal.host();</span>
-</span><span style="background-color: #49483e">    <span style="color: #f8f8f2">IntServer.on(</span><span style="color: #e6db74">&quot;/&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">handleRoot);</span>
-</span>    <span style="color: #f8f8f2">Portal.onNotFound(handleNotFound);</span>    <span style="color: #75715e">// For only onNotFound.</span>
-  <span style="color: #f8f8f2">}</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-<span style="background-color: #49483e">  <span style="color: #f8f8f2">Portal.host().handleClient();</span>
-</span>  <span style="color: #f8f8f2">Portal.handleRequest();</span>
-  <span style="color: #75715e">/* or following one line code is equ.</span>
-<span style="color: #75715e">  Portal.handleClient();</span>
-<span style="color: #75715e">  */</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<div class="admonition note">
-<p class="admonition-title">ESP8266WebServer/WebServer function should be called after AutoConnect::begin</p>
-<p>The sketch cannot refer to an instance of ESP8266WebServer/WebServer until AutoConnect::begin completes successfully.</p>
-</div>
-<div class="admonition warning">
-<p class="admonition-title">Do not use with ESP8266WebServer::begin or WebServer::begin</p>
-<p>ESP8266WebServer/WebServer is already running inside the AutoConnect.</p>
-</div>
-<h3 id="use-with-the-pagebuilder-library"><i class="fa fa-caret-right"></i> Use with the <a href="https://github.com/Hieromon/PageBuilder">PageBuilder</a> library<a class="headerlink" href="#use-with-the-pagebuilder-library" title="Permanent link">&para;</a></h3>
-<p>In ordinary, the URL handler will respond the request by sending some HTML. <a href="https://github.com/Hieromon/PageBuilder">PageBuilder</a> library is HTML assembly aid. it can handle predefined HTML as like a template and simplify an HTML string assemble logic, and also the generated HTML send automatically.</p>
-<p>An example sketch used with the PageBuilder as follows and it explains how it aids for the HTML generating. Details for <a href="https://github.com/Hieromon/PageBuilder">Github repository</a>.</p>
-<p><img src="images/PageBuilder.png" style="width:640px;"/></p>
-<h2 id="configuration-functions">Configuration functions<a class="headerlink" href="#configuration-functions" title="Permanent link">&para;</a></h2>
-<h3 id="configuration-for-soft-ap-and-captive-portal"><i class="fa fa-caret-right"></i> Configuration for Soft AP and captive portal<a class="headerlink" href="#configuration-for-soft-ap-and-captive-portal" title="Permanent link">&para;</a></h3>
-<p>AutoConnect will activate SoftAP at failed the first <em>WiFi.begin</em>. It SoftAP settings are stored in <a href="apiconfig.html#autoconnectconfig"><strong>AutoConnectConfig</strong></a> as the following parameters. The sketch could be configured SoftAP using these parameters, refer the <a href="apiconfig.html#public-member-variables">AutoConnectConfig API</a> for details.</p>
-<ul>
-<li>IP address of SoftAP activated.</li>
-<li>Gateway IP address.</li>
-<li>Subnet mask.</li>
-<li>SSID for SoftAP.</li>
-<li>Password for SoftAP.</li>
-<li>Channel.</li>
-<li>SoftAP name.</li>
-<li>Hidden attribute.</li>
-<li>Station hostname.</li>
-<li>Auto save credential.</li>
-<li>Offset address of the credentials storage area in EEPROM.</li>
-<li>Captive portal time out limit.</li>
-<li>Maintain portal function even after a timeout.</li>
-<li>Length of start up time after reset.</li>
-<li>Automatic starting the captive portal.</li>
-<li>Start the captive portal forcefully.</li>
-<li>Auto reset after connection establishment.</li>
-<li>Home URL of the user sketch application.</li>
-<li>Menu title.</li>
-</ul>
-<div class="admonition note">
-<p class="admonition-title">AutoConnect::config before AutoConnect::begin</p>
-<p><em>AutoConnect::config</em> must be executed before <em>AutoConnect::begin</em>.</p>
-</div>
-<h3 id="assign-user-sketchs-home-path"><i class="fa fa-caret-right"></i> Assign user sketch's home path<a class="headerlink" href="#assign-user-sketchs-home-path" title="Permanent link">&para;</a></h3>
-<p><strong>HOME</strong> for returning to the user's sketch homepage will display at the bottom of the AutoConnect menu. It could be set using the <a href="api.html#home"><em>AutoConnect::home</em></a> function.</p>
-<p><img src="images/menu_home.png" /></p>
-<h3 id="change-ssid-and-password-for-softap"><i class="fa fa-caret-right"></i> Change SSID and Password for SoftAP<a class="headerlink" href="#change-ssid-and-password-for-softap" title="Permanent link">&para;</a></h3>
-<p>An <strong>esp8266ap</strong> is default SSID name for SoftAP of captive portal and password is <strong>12345678</strong> for ESP8266. Similarly, <strong>esp32ap</strong> and <strong>12345678</strong> for ESP32. You can change both by setting <a href="apiconfig.html#apid">apid</a> and <a href="apiconfig.html#psk">psk</a>.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnect</span> <span style="color: #f8f8f2">portal;</span>
-<span style="color: #f8f8f2">AutoConnectConfig</span> <span style="color: #f8f8f2">config;</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-<span style="background-color: #49483e">  <span style="color: #f8f8f2">config.apid</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;ap_portal&quot;</span><span style="color: #f8f8f2">;</span>
-</span><span style="background-color: #49483e">  <span style="color: #f8f8f2">config.psk</span>  <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;new_password&quot;</span><span style="color: #f8f8f2">;</span>
-</span>  <span style="color: #f8f8f2">portal.config(config);</span>
-  <span style="color: #f8f8f2">portal.begin();</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<p>Also, you can specify the SSID, password for SoftAP with the constructor of the AutoConnectConfig as below.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnect</span> <span style="color: #f8f8f2">portal;</span>
-<span style="background-color: #49483e"><span style="color: #f8f8f2">AutoConnectConfig</span> <span style="color: #a6e22e">config</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;ap_portal&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;new_passwrod&quot;</span><span style="color: #f8f8f2">);</span>
-</span>
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">portal.config(config);</span>
-  <span style="color: #f8f8f2">portal.begin();</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<h3 id="relocate-the-autoconnect-home-path"><i class="fa fa-caret-right"></i> Relocate the AutoConnect home path<a class="headerlink" href="#relocate-the-autoconnect-home-path" title="Permanent link">&para;</a></h3>
-<p>A home path of AutoConnect is <strong>/_ac</strong> by default. You can access from the browser with http://IPADDRESS/_ac. You can change the home path by revising <a href="https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h#L62"><strong>AUTOCONNECT_URI</strong></a> macro in the include header file as <a href="https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDef.h">AutoConnectDef.h</a>.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#define AUTOCONNECT_URI         &quot;/_ac&quot;</span>
-</pre></div>
-
-<h3 id="static-ip-assignment-2"><i class="fa fa-caret-right"></i> Static IP assignment <sup id="fnref:2"><a class="footnote-ref" href="#fn:2" rel="footnote">2</a></sup><a class="headerlink" href="#static-ip-assignment-2" title="Permanent link">&para;</a></h3>
-<p>It is also possible to assign static IP Address to ESP8266/ESP32 in STA mode. By default DHCP is enabled and it becomes the IP address assigned by the DHCP server with <em>WiFi.begin</em>.</p>
-<p>To assign a static IP to ESP8266/ESP32 with WIFI_MODE_STA, the following parameters are required:</p>
-<ul>
-<li>IP address.</li>
-<li>Gateway address.</li>
-<li>Subnet mask.</li>
-<li>Primary DNS server.</li>
-<li>Secondary DNS server. (optional)</li>
-</ul>
-<p>The above parameters must be executed before <em>AutoConnect::begin</em> as <a href="apiconfig.html#staip">arguments of AutoConnectConfig</a>.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnect</span>        <span style="color: #f8f8f2">portal;</span>
-<span style="color: #f8f8f2">AutoConnectConfig</span>  <span style="color: #f8f8f2">Config;</span>
-<span style="color: #f8f8f2">Config.staip</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">IPAddress(</span><span style="color: #ae81ff">192</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">168</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">1</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">10</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">Config.staGateway</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">IPAddress(</span><span style="color: #ae81ff">192</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">168</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">1</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">1</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">Config.staNetmask</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">IPAddress(</span><span style="color: #ae81ff">255</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">255</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">255</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">0</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">Config.dns1</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">IPAddress(</span><span style="color: #ae81ff">192</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">168</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">1</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">1</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">portal.config(Config);</span>
-<span style="color: #f8f8f2">portal.begin();</span>
-</pre></div>
-
-<h3 id="station-host-name"><i class="fa fa-caret-right"></i> Station host name<a class="headerlink" href="#station-host-name" title="Permanent link">&para;</a></h3>
-<p><a href="apiconfig.html#hostname">AutoConnectConfig::hostName</a> assigns the station DHCP hostname which complies with <a href="https://tools.ietf.org/html/rfc952">RFC952</a>. It must satisfy the following constraints.</p>
-<ul>
-<li>Up to 24 characters</li>
-<li>Only the alphabet (a-z, A-Z), digits (0-9), minus sign (-)</li>
-<li>No '-' as last character</li>
-</ul>
-<div class="footnote">
-<hr />
-<ol>
-<li id="fn:1">
-<p>The source code placement of common macros for AutoConnect since v0.9.7 has changed.&#160;<a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p>
-</li>
-<li id="fn:2">
-<p>Static IP address assignment is available from version 0.9.3.&#160;<a class="footnote-backref" href="#fnref:2" rev="footnote" title="Jump back to footnote 2 in the text">&#8617;</a></p>
-</li>
-</ol>
-</div></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="basicusage.html" title="Basic usage" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>Basic usage</span></div></a><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>Custom Web pages with AutoConnect</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/api.html b/lib/AutoConnect-master/docs/api.html
deleted file mode 100644
index b3bb4dd4428aecbc83b9307f57b6f8b5c2553d04..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/api.html
+++ /dev/null
@@ -1,284 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/api.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>AutoConnect API - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#include-headers" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">AutoConnect API</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--active md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7" checked><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">AutoConnect API</label><a href="api.html" title="AutoConnect API" class="md-nav__link md-nav__link--active">AutoConnect API</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#include-headers" title=" Include headers" class="md-nav__link"> Include headers</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#autoconnecth" title="AutoConnect.h" class="md-nav__link">AutoConnect.h</a></li></ul></nav></li><li class="md-nav__item"><a href="#defined-macros" title=" Defined macros" class="md-nav__link"> Defined macros</a></li><li class="md-nav__item"><a href="#constructors" title=" Constructors" class="md-nav__link"> Constructors</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#autoconnect" title="AutoConnect" class="md-nav__link">AutoConnect</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-functions" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#aux" title=" aux" class="md-nav__link"> aux</a></li><li class="md-nav__item"><a href="#begin" title=" begin" class="md-nav__link"> begin</a></li><li class="md-nav__item"><a href="#config" title=" config" class="md-nav__link"> config</a></li><li class="md-nav__item"><a href="#end" title=" end" class="md-nav__link"> end</a></li><li class="md-nav__item"><a href="#handleclient" title=" handleClient" class="md-nav__link"> handleClient</a></li><li class="md-nav__item"><a href="#handlerequest" title=" handleRequest" class="md-nav__link"> handleRequest</a></li><li class="md-nav__item"><a href="#home" title=" home" class="md-nav__link"> home</a></li><li class="md-nav__item"><a href="#host" title=" host" class="md-nav__link"> host</a></li><li class="md-nav__item"><a href="#join" title=" join" class="md-nav__link"> join</a></li><li class="md-nav__item"><a href="#load" title=" load" class="md-nav__link"> load</a></li><li class="md-nav__item"><a href="#on" title=" on" class="md-nav__link"> on</a></li><li class="md-nav__item"><a href="#ondetect" title=" onDetect" class="md-nav__link"> onDetect</a></li><li class="md-nav__item"><a href="#onnotfound" title=" onNotFound" class="md-nav__link"> onNotFound</a></li><li class="md-nav__item"><a href="#where" title=" where" class="md-nav__link"> where</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#include-headers" title=" Include headers" class="md-nav__link"> Include headers</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#autoconnecth" title="AutoConnect.h" class="md-nav__link">AutoConnect.h</a></li></ul></nav></li><li class="md-nav__item"><a href="#defined-macros" title=" Defined macros" class="md-nav__link"> Defined macros</a></li><li class="md-nav__item"><a href="#constructors" title=" Constructors" class="md-nav__link"> Constructors</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#autoconnect" title="AutoConnect" class="md-nav__link">AutoConnect</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-functions" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#aux" title=" aux" class="md-nav__link"> aux</a></li><li class="md-nav__item"><a href="#begin" title=" begin" class="md-nav__link"> begin</a></li><li class="md-nav__item"><a href="#config" title=" config" class="md-nav__link"> config</a></li><li class="md-nav__item"><a href="#end" title=" end" class="md-nav__link"> end</a></li><li class="md-nav__item"><a href="#handleclient" title=" handleClient" class="md-nav__link"> handleClient</a></li><li class="md-nav__item"><a href="#handlerequest" title=" handleRequest" class="md-nav__link"> handleRequest</a></li><li class="md-nav__item"><a href="#home" title=" home" class="md-nav__link"> home</a></li><li class="md-nav__item"><a href="#host" title=" host" class="md-nav__link"> host</a></li><li class="md-nav__item"><a href="#join" title=" join" class="md-nav__link"> join</a></li><li class="md-nav__item"><a href="#load" title=" load" class="md-nav__link"> load</a></li><li class="md-nav__item"><a href="#on" title=" on" class="md-nav__link"> on</a></li><li class="md-nav__item"><a href="#ondetect" title=" onDetect" class="md-nav__link"> onDetect</a></li><li class="md-nav__item"><a href="#onnotfound" title=" onNotFound" class="md-nav__link"> onNotFound</a></li><li class="md-nav__item"><a href="#where" title=" where" class="md-nav__link"> where</a></li></ul></nav></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>AutoConnect API</h1><h2 id="include-headers"><i class="fa fa-code"></i> Include headers<a class="headerlink" href="#include-headers" title="Permanent link">&para;</a></h2>
-<h3 id="autoconnecth">AutoConnect.h<a class="headerlink" href="#autoconnecth" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;AutoConnect.h&gt;</span>
-</pre></div>
-
-<h2 id="defined-macros"><i class="fa fa-code"></i> Defined macros<a class="headerlink" href="#defined-macros" title="Permanent link">&para;</a></h2>
-<p>They contain in <code>AutoConnectDefs.h</code>.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#define AC_DEBUG                                // Monitor message output activation</span>
-<span style="color: #75715e">#define AC_DEBUG_PORT           Serial          // Default message output device</span>
-<span style="color: #75715e">#define AUTOCONNECT_AP_IP       0x01F4A8C0      // Default SoftAP IP</span>
-<span style="color: #75715e">#define AUTOCONNECT_AP_GW       0x01F4A8C0      // Default SoftAP Gateway IP</span>
-<span style="color: #75715e">#define AUTOCONNECT_AP_NM       0x00FFFFFF      // Default subnet mask</span>
-<span style="color: #75715e">#define AUTOCONNECT_DNSPORT     53              // Default DNS port at captive portal</span>
-<span style="color: #75715e">#define AUTOCONNECT_HTTPPORT    80              // Default HTTP</span>
-<span style="color: #75715e">#define AUTOCONNECT_MENU_TITLE  &quot;AutoConnect&quot;   // Default AutoConnect menu title</span>
-<span style="color: #75715e">#define AUTOCONNECT_STARTUPTIME 10              // Default waiting time[s] for after reset</span>
-<span style="color: #75715e">#define AUTOCONNECT_URI         &quot;/_ac&quot;          // Default AutoConnect root path</span>
-<span style="color: #75715e">#define AUTOCONNECT_TIMEOUT     30000           // Default connection timeout[ms]</span>
-<span style="color: #75715e">#define AUTOCONNECT_CAPTIVEPORTAL_TIMEOUT  0    // Captive portal timeout value</span>
-<span style="color: #75715e">#define AUTOCONNECT_USE_JSON                    // Allow AutoConnect elements to be handled by JSON format</span>
-</pre></div>
-
-<div class="admonition note">
-<p class="admonition-title">Macros placement moved</p>
-<p>Source code placement of the above macros provided for user sketch changed from v0.9.7. The new code is in <code>AutoConnectDefs.h</code>.</p>
-</div>
-<h2 id="constructors"><i class="fa fa-code"></i> Constructors<a class="headerlink" href="#constructors" title="Permanent link">&para;</a></h2>
-<h3 id="autoconnect">AutoConnect<a class="headerlink" href="#autoconnect" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnect()</span>
-</pre></div>
-
-<p><a id="withparameter"></a></p>
-<p>AutoConnect default constructor. This entry internally allocates the ESP8266WebServer for ESP8266 or WebServer for ESP32 and is activated internally.</p>
-<ul>
-<li>For ESP8266</li>
-</ul>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnect(ESP8266WebServer</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">webServer)</span>
-</pre></div>
-
-<ul>
-<li>For ESP32</li>
-</ul>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnect(WebServer</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">webServer)</span>
-</pre></div>
-
-<p>Run the AutoConnect site using the externally ensured ESP8266WebServer for ESP8266 or WebServer for ESP32.</p>
-<p>The <a href="api.html#handleclient"><strong>handleClient</strong></a> function of AutoConnect can include the response of the URI handler added by the user using the "<em>on</em>" function of ESP8266WebServer/WebServer. If ESP8266WebServer/WebServer is assigned internally by AutoConnect, the sketch can obtain that reference with the <a href="api.html#host"><strong>host</strong></a> function.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">webServer</span><span class="apidesc">A reference of ESP8266WebServer or WebServer instance.</span></dd>
-</dl></p>
-<h2 id="public-member-functions"><i class="fa fa-code"></i> Public member functions<a class="headerlink" href="#public-member-functions" title="Permanent link">&para;</a></h2>
-<h3 id="aux"><i class="fa fa-caret-right"></i> aux<a class="headerlink" href="#aux" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">aux(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">uri)</span> <span style="color: #66d9ef">const</span>
-</pre></div>
-Returns a pointer to AutoConnectAux with the URI specified by <em>uri</em>. If AutoConnectAux with that URI is not bound, it returns <strong>nullptr</strong>.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">uri</span><span class="apidesc">A string of the URI.</span></dd>
-    <dt><strong>Return value</strong></dt>
-    <dd>A Pointer of the AutoConnectAux instance.</dd>
-</dl></p>
-<h3 id="begin"><i class="fa fa-caret-right"></i> begin<a class="headerlink" href="#begin" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">begin()</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">begin(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">ssid,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">passphrase)</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">begin(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">ssid,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">passphrase,</span> <span style="color: #66d9ef">unsigned</span> <span style="color: #66d9ef">long</span> <span style="color: #f8f8f2">timeout)</span>
-</pre></div></p>
-<p>Starts establishing the WiFi connection. The WiFi mode at this time is WIFI_STA.<br />
-AutoConnect first invokes <em>WiFi.begin</em>. If the <em>ssid</em> and the <em>passphrase</em> are missing, its <em>WiFi.begin</em> has no SSID and Password. Regardless of the result, ESP8266WebServer/WebServer will start immediately after the first <em>WiFi.begin</em>.<br />
-The captive portal will not be started if the connection has been established with first <em>WiFi.begin</em>. If the connection cannot establish, switch to WIFI_AP_STA mode and activate SoftAP. Then DNS server starts.
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">ssid</span><span class="apidesc">SSID to be connected.</span></dd>
-    <dd><span class="apidef">passphrase</span><span class="apidesc">Password for connection.</span></dd>
-    <dd><span class="apidef">timeout</span><span class="apidesc">A time out value in milliseconds for waiting connection.</span></dd>
-    <dt><strong>Return value</strong></dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Connection established, AutoConnect service started with WIFI_STA mode.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">Could not connected, Captive portal started with WIFI_AP_STA mode.</span></dd>
-</dl></p>
-<h3 id="config"><i class="fa fa-caret-right"></i> config<a class="headerlink" href="#config" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">config(AutoConnectConfig</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">config)</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">config(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">ap,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">password</span> <span style="color: #f92672">=</span> <span style="color: #66d9ef">nullptr</span><span style="color: #f8f8f2">)</span>
-</pre></div></p>
-<p>Set SoftAP's WiFi configuration and static IP configuration. 
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">config</span><span class="apidesc">Reference to <a href="apiconfig.html"><strong>AutoConnectConfig</strong></a> containing SoftAP's parameters and static IP parameters.</span></dd>
-    <dd><span class="apidef">ap</span><span class="apidesc">SSID for SoftAP. The default value is <strong>esp8266ap</strong> for ESP8266, <strong>esp32ap</strong> for ESP32.</span></dd>
-    <dd><span class="apidef">password</span><span class="apidesc">Password for SodtAP. The default value is <strong>12345678</strong>.</span></dd>
-    <dt><strong>Return value</strong></dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Successfully configured.</span></dd>
-    <dd><span class="apidef">false</span><span class="aidesc">Configuration parameter is invalid, some values out of range.</span></dd>
-</dl></p>
-<h3 id="end"><i class="fa fa-caret-right"></i> end<a class="headerlink" href="#end" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">end(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-
-<p>Stops AutoConnect captive portal service. Release ESP8266WebServer/WebServer and DNSServer. </p>
-<div class="admonition warning">
-<p class="admonition-title">Attention to end</p>
-<p>The end function releases the instance of ESP8266WebServer/WebServer and DNSServer. It can not process them after the end function.</p>
-</div>
-<h3 id="handleclient"><i class="fa fa-caret-right"></i> handleClient<a class="headerlink" href="#handleclient" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">handleClient(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-
-<p>Process the AutoConnect menu interface. The handleClient() function of the ESP8266WebServer/WebServer hosted by AutoConnect is also called from within AutoConnect, and the client request handlers contained in the user sketch are also handled.</p>
-<h3 id="handlerequest"><i class="fa fa-caret-right"></i> handleRequest<a class="headerlink" href="#handlerequest" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">handleRequest(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-
-<p>Handling for the AutoConnect menu request.</p>
-<div class="admonition warning">
-<p class="admonition-title">About used in combination with handleClient</p>
-<p>The handleRequest function is not supposed to use with AutoConnect::handleClient. It should be used with ESP8266WebServer::handleClient or WebServer::handleClient.</p>
-</div>
-<h3 id="home"><i class="fa fa-caret-right"></i> home<a class="headerlink" href="#home" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">home(String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">uri)</span>
-</pre></div>
-
-<p>Put a user site's home URI. The URI specified by home is linked from "HOME" in the AutoConnect menu.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">uri</span><span class="aidesc">A URI string of user site's home path.</span></dd>
-</dl></p>
-<h3 id="host"><i class="fa fa-caret-right"></i> host<a class="headerlink" href="#host" title="Permanent link">&para;</a></h3>
-<ul>
-<li>For ESP8266</li>
-</ul>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">ESP8266WebServer</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">host(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-
-<ul>
-<li>For ESP32</li>
-</ul>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">WebServer</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">host(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-
-<p>Returns the reference of the ESP8266WebServer/WebServer which is allocated in AutoConnect automatically.
-<dl class="apidl">
-    <dt><strong>Return value</strong></dt>
-    <dd>A reference of the ESP8266WebServer/WebServer.</dd>
-</dl></p>
-<div class="admonition note">
-<p class="admonition-title">&amp;reference is not a pointer</p>
-<p>A reference cannot be re-assigned, and must be assigned at initialization. It's like as bind as alias.    <br />
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">ESP8266WebServer</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">server</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">portal.host();</span>
-<span style="color: #f8f8f2">server.handleClient();</span>
-</pre></div>
-or<br />
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">portal.host().handleClient();</span>
-</pre></div></p>
-</div>
-<h3 id="join"><i class="fa fa-caret-right"></i> join<a class="headerlink" href="#join" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">join(AutoConnectAux</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">aux)</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">join(std</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">vector</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">std</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">reference_wrapper</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">&gt;&gt;</span> <span style="color: #f8f8f2">aux)</span>
-</pre></div>
-Join the AutoConnectAux object to AutoConnect. AutoConnectAux objects can be joined one by one, or joined altogether. The AutoConnectAux object joined by the join function can be handled from the AutoConnect menu.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">aux</span><span class="apidesc">Reference to AutoConnectAux. It can be std::vector of std::reference_wrapper of AutoConnectAux with <a href="https://en.cppreference.com/w/cpp/language/list_initialization">list initialization</a>.</span></dd>
-</dl></p>
-<h3 id="load"><i class="fa fa-caret-right"></i> load<a class="headerlink" href="#load" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">load(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">aux)</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">load(PGM_P</span> <span style="color: #f8f8f2">aux)</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">load(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">__FlashStringHelper</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">aux)</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">load(Stream</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">aux)</span>
-</pre></div>
-Load JSON document of AutoConnectAux which contains AutoConnectElements. If there is a syntax error in the JSON document, false is returned.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">aux</span><span class="apidesc">The input string to be loaded.</span></dd>
-    <dt><strong>Return value</strong></dt>
-    <dd><span class="apidef">true</span><span class="apidesc">The JSON document as AutoConnectAux successfully loaded.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">Loading JSON document unsuccessful, probably syntax errors have occurred or insufficient memory. You can diagnose the cause of loading failure using the <a href="https://arduinojson.org/v5/assistant/">ArduinoJson Assistant</a>.</span></dd>
-</dl></p>
-<h3 id="on"><i class="fa fa-caret-right"></i> on<a class="headerlink" href="#on" title="Permanent link">&para;</a></h3>
-<dl>
-<dt><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">on(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">uri,</span> <span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">AuxHandlerFunctionT</span> <span style="color: #f8f8f2">handler,</span> <span style="color: #f8f8f2">AutoConnectExitOrder_t</span> <span style="color: #f8f8f2">order</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">AC_EXIT_AHEAD)</span>
-</pre></div></dt>
-<dt>Register the handler function of the AutoConnectAux.</dt>
-<dt><dl class="apidl"></dt>
-<dt><dt><strong>Parameters</strong></dt></dt>
-<dt><dd><span class="apidef">uri</span><span class="apidesc">A string of the URI assigned to the AutoConnectAux page.</span></dd></dt>
-<dt><dd><span class="apidef">handler</span><span class="apidesc">A function that behaves when a request to the AutoConnectAux page occurs. AuxHandlerFunctionT type is defined by the following declaration.<p class=""apidesc"><code>String handler(AutoConnectAux&amp;, PageArgument&amp;)</code></p></span></dd></dt>
-<dt><dd><span class="apidef">order</span><span class="apidesc">Specifies when the handler is called with the following enumeration value.</span></dd></dt>
-<dd>
-<ul>
-<li><strong>AC_EXIT_AHEAD</strong> :
-Called before AutoConnect generates the HTML of the page. You set the value of AutoConnectElements in the handler then its value will be displayed on the page.</li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li><strong>AC_EXIT_LATER</strong> :
-Called after AutoConnect generates the HTML of the page. You can append to HTML generated by AutoConnect.</li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li><strong>AC_EXIT_BOTH</strong> :
-Called even before generating HTML and after generated.</li>
-</ul>
-</dd>
-</dl>
-</dl>
-
-<div class="admonition caution">
-<p class="admonition-title">It is not ESP8266WebServer::on, not WebServer::on for ESP32.</p>
-<p>This function effects to AutoConnectAux only. However, it coexists with that of ESP8266WebServer::on or WebServer::on of ESP32. </p>
-</div>
-<h3 id="ondetect"><i class="fa fa-caret-right"></i> onDetect<a class="headerlink" href="#ondetect" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">onDetect(DetectExit_ft</span> <span style="color: #f8f8f2">fn)</span>
-</pre></div>
-Register the function which will call from AutoConnect at the start of the captive portal.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">fn</span><span class="apidesc">Function called at the captive portal start.</span></dd></p>
-</dl>
-
-<p>An <em>fn</em> specifies the function called when the captive portal starts. Its prototype declaration is defined as "<em>DetectExit_ft</em>".</p>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">typedef</span> <span style="color: #f8f8f2">std</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">function</span><span style="color: #f92672">&lt;</span><span style="color: #66d9ef">bool</span><span style="color: #f8f8f2">(IPAddress</span> <span style="color: #f8f8f2">softapIP)</span><span style="color: #f92672">&gt;</span>  <span style="color: #f8f8f2">DetectExit_ft</span>
-</pre></div>
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">softapIP</span><span class="apidesc">An IP address of SoftAP for the captive portal.</span></dd>
-    <dt><strong>Return value</strong></dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Continues captive portal handling.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">Cancel the captive portal. AutoConnect::begin function will return with a false.</span></dd>
-</dl></p>
-<h3 id="onnotfound"><i class="fa fa-caret-right"></i> onNotFound<a class="headerlink" href="#onnotfound" title="Permanent link">&para;</a></h3>
-<ul>
-<li>For ESP8266</li>
-</ul>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">onNotFound(ESP8266WebServer</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">THandlerFunction</span> <span style="color: #f8f8f2">fn)</span>
-</pre></div>
-
-<ul>
-<li>For ESP32</li>
-</ul>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">onNotFound(WebServer</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">THandlerFunction</span> <span style="color: #f8f8f2">fn)</span>
-</pre></div>
-Register the handler function for undefined URL request detected.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">fn</span><span class="apidesc">A function of the "not found" handler.</span></dd>
-</dl></p>
-<h3 id="where"><i class="fa fa-caret-right"></i> where<a class="headerlink" href="#where" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">String</span> <span style="color: #f8f8f2">where(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-Returns an uri string of the AutoConnectAux uri object of the custom Web page that caused the request to the page.<br>
-AutoConnect identifies the URI (ie. the referrer URI) that caused the request each time from the client occurs and will save the URI If the request source is a custom Web page of AutoConnectAux. The <strong>where</strong> function returns a pointer of AutoConnectAux which is a URI of a least recent request from the custom Web page.<br>
-This function is provided to access the fields (ie. the AutoConnectElements) with a custom Web page handler of a page and is available only for request source that is the custom Web pages. It is invalid for HTTP requests from individual pages registered with the <strong>on</strong> handler of ESP8266WebServer/WebServer for ESP32. In other words, this function only returns the AutoConnecAux page which is a least recently displayed.
-<dl class="apidl">
-    <dt><strong>Return value</strong></dt>
-    <dd>An uri string of the AutoConnectAux that caused the request the page.</dd>
-</dl></p>
-<p>The <strong>where</strong> function usage is described in the section <a href="achandling.html#where-to-pick-up-the-values"><em>Where to pick up the values</em></a>.</p></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="achandling.html" title="Handling the custom Web pages" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>Handling the custom Web pages</span></div></a><a href="apiaux.html" title="AutoConnectAux API" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>AutoConnectAux API</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/apiaux.html b/lib/AutoConnect-master/docs/apiaux.html
deleted file mode 100644
index a8a8518cc15b6330113c692dfec6e23f1e44531b..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/apiaux.html
+++ /dev/null
@@ -1,291 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/apiaux.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>AutoConnectAux API - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#constructor" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">AutoConnectAux API</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--active md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7" checked><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">AutoConnectAux API</label><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link md-nav__link--active">AutoConnectAux API</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#constructor" title=" Constructor" class="md-nav__link"> Constructor</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#autoconnectaux" title="AutoConnectAux" class="md-nav__link">AutoConnectAux</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-functions" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#operator" title=" operator [ ]" class="md-nav__link"> operator [ ]</a></li><li class="md-nav__item"><a href="#add" title=" add" class="md-nav__link"> add</a></li><li class="md-nav__item"><a href="#getelement" title=" getElement" class="md-nav__link"> getElement</a></li><li class="md-nav__item"><a href="#getelements" title=" getElements" class="md-nav__link"> getElements</a></li><li class="md-nav__item"><a href="#load" title=" load" class="md-nav__link"> load</a></li><li class="md-nav__item"><a href="#loadelement" title=" loadElement" class="md-nav__link"> loadElement</a></li><li class="md-nav__item"><a href="#menu" title=" menu" class="md-nav__link"> menu</a></li><li class="md-nav__item"><a href="#on" title=" on" class="md-nav__link"> on</a></li><li class="md-nav__item"><a href="#onupload" title=" onUpload" class="md-nav__link"> onUpload</a></li><li class="md-nav__item"><a href="#release" title=" release" class="md-nav__link"> release</a></li><li class="md-nav__item"><a href="#saveelement" title=" saveElement" class="md-nav__link"> saveElement</a></li><li class="md-nav__item"><a href="#setelementvalue" title=" setElementValue" class="md-nav__link"> setElementValue</a></li><li class="md-nav__item"><a href="#settitle" title=" setTitle" class="md-nav__link"> setTitle</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#constructor" title=" Constructor" class="md-nav__link"> Constructor</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#autoconnectaux" title="AutoConnectAux" class="md-nav__link">AutoConnectAux</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-functions" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#operator" title=" operator [ ]" class="md-nav__link"> operator [ ]</a></li><li class="md-nav__item"><a href="#add" title=" add" class="md-nav__link"> add</a></li><li class="md-nav__item"><a href="#getelement" title=" getElement" class="md-nav__link"> getElement</a></li><li class="md-nav__item"><a href="#getelements" title=" getElements" class="md-nav__link"> getElements</a></li><li class="md-nav__item"><a href="#load" title=" load" class="md-nav__link"> load</a></li><li class="md-nav__item"><a href="#loadelement" title=" loadElement" class="md-nav__link"> loadElement</a></li><li class="md-nav__item"><a href="#menu" title=" menu" class="md-nav__link"> menu</a></li><li class="md-nav__item"><a href="#on" title=" on" class="md-nav__link"> on</a></li><li class="md-nav__item"><a href="#onupload" title=" onUpload" class="md-nav__link"> onUpload</a></li><li class="md-nav__item"><a href="#release" title=" release" class="md-nav__link"> release</a></li><li class="md-nav__item"><a href="#saveelement" title=" saveElement" class="md-nav__link"> saveElement</a></li><li class="md-nav__item"><a href="#setelementvalue" title=" setElementValue" class="md-nav__link"> setElementValue</a></li><li class="md-nav__item"><a href="#settitle" title=" setTitle" class="md-nav__link"> setTitle</a></li></ul></nav></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>AutoConnectAux API</h1><h2 id="constructor"><i class="fa fa-code"></i> Constructor<a class="headerlink" href="#constructor" title="Permanent link">&para;</a></h2>
-<h3 id="autoconnectaux">AutoConnectAux<a class="headerlink" href="#autoconnectaux" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectAux(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">uri</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">String(</span><span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">),</span> <span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">title</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">String(</span><span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">),</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">menu</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">true,</span> <span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">AutoConnectElementVT</span> <span style="color: #f8f8f2">addons</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">AutoConnectElementVT())</span>
-</pre></div>
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">uri</span><span class="apidesc">URI of this custom Web Page.</span></dd>
-    <dd><span class="apidef">title</span><span class="apidesc">Page title of this custom Web page. It will appear on the auto connection menu and at the top of that page.</span></dd>
-    <dd><span class="apidef">menu</span><span class="apidesc">Specifies whether to display this page on menu.</span></dd>
-    <dd><span class="apidef">addons</span><span class="apidesc">Reference to AutoConnectElement collection.</span></dt>
-</dl></p>
-<h2 id="public-member-functions"><i class="fa fa-code"></i> Public member functions<a class="headerlink" href="#public-member-functions" title="Permanent link">&para;</a></h2>
-<h3 id="operator"><i class="fa fa-caret-right"></i> operator [ ]<a class="headerlink" href="#operator" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectElement</span><span style="color: #f92672">&amp;</span> <span style="color: #66d9ef">operator</span><span style="color: #f8f8f2">[](</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">name)</span>
-</pre></div>
-Returns a reference to the element specified by <strong>name</strong>. An operator <code>[]</code> is a shortcut for <a href="apiaux.html#getelement">getElement</a> function with the reference casting. Unlike getElement, which returns a pointer to that element, an operator <code>[]</code> returns a reference to that element. You also need to cast the return value to the actual type, just like the getElement function.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">name</span><span class="apidesc">Name of the AutoConnectElements to be retrieved.</span></dd>
-    <dt><strong>Return value</strong></dt><dd>A reference to AutoConnectElement. It is different from the actual element type.</dd>
-</dl></p>
-<h3 id="add"><i class="fa fa-caret-right"></i> add<a class="headerlink" href="#add" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">add(AutoConnectElement</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">addon)</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">add(AutoConnectElementVT</span> <span style="color: #f8f8f2">addons)</span>
-</pre></div>
-Add an element to the AutoConnectAux. An added element is displayed on the custom Web page invoked from the AutoConnect menu.
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">addon</span><span class="apidesc">Reference of AutoConnectElements. Specifies one of the AutoConnectElements classes.</span></dd>
-    <dd><span class="apidef">addons</span><span class="apidesc">An array list of reference of AutoConnectElements. The <a href="https://en.cppreference.com/w/cpp/language/list_initialization">list initialization</a> with braced-init-list of the <a href="https://en.cppreference.com/w/cpp/container/vector">std::vector</a> can be used for the addons parameter cause the actual definition of type <strong>AutoConnectElementVT</strong> is <code>std::vector&lt;std::reference_wrapper&lt;AutoConnectElement&gt;&gt;</code>.</span></dd>
-</dl></p>
-<h3 id="getelement"><i class="fa fa-caret-right"></i> getElement<a class="headerlink" href="#getelement" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">T</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">T</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">name)</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectElement</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">getElement(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">name)</span>
-</pre></div>
-Get a registered AutoConnectElement as specified name. If <strong>T</strong> is specified as an actual type of AutoConnectElements, it returns a reference to that instance.
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">T</span><span class="apidesc">Actual type name of AutoConnectElements as <a href="apielements.html#autoconnectbutton">AutoConnectButton</a>, <a href="apielements.html#autoconnectcheckbox">AutoConnectCheckbox</a>, <a href="apielements.html#autoconnectelement">AutoConnectElement</a>, <a href="apielements.html#autoconnectfile">AutoConnectFile</a>, <a href="apielements.html#autoconnectinput">AutoConnectInput</a>, <a href="apielements.html#autoconnectradio">AutoConnectRadio</a>, <a href="apielements.html#autoconnectselect">AutoConnectSelect</a>, <a href="apielements.html#autoconnectsubmit">AutoConnectSubmit</a>, <a href="apielements.html#autoconnecttext">AutoConnectText</a>.</span></dd>
-    <dd><span class="apidef">name</span><span class="apidesc">Name of the AutoConnectElements to be retrieved.</span></dd>
-    <dt><strong>Return value</strong></dt><dd>A reference of the AutoConnectElements. If a type is not specified returns a pointer.</dd>
-</dl></p>
-<h3 id="getelements"><i class="fa fa-caret-right"></i> getElements<a class="headerlink" href="#getelements" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectElementVT</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">getElements(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-Get vector of reference of all elements.
-<dl class="apidl">
-    <dt><strong>Return value</strong></dt>
-    <dd>A reference to std::vector of reference to AutoConnecctElements.</dd>
-</dl></p>
-<p>The getElements returns a reference to std::vector of reference to AutoConnecctElements. This function is provided to handle AutoConnectElemets owned by AutoConnectAux in bulk, and you can use each method of std::vector for a return value.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">// An example of getting type and name of all AutoConnectElements registered in AutoConnectAux.</span>
-<span style="color: #f8f8f2">AutoConnectAux</span> <span style="color: #f8f8f2">aux;</span>
-<span style="color: #75715e">// some code here...</span>
-<span style="color: #f8f8f2">AutoConnectElementVt</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">elements</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">aux.getElements();</span>
-<span style="color: #66d9ef">for</span> <span style="color: #f8f8f2">(AutoConnectElement</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">elm</span> <span style="color: #f8f8f2">:</span> <span style="color: #f8f8f2">elements)</span> <span style="color: #f8f8f2">{</span>
-    <span style="color: #f8f8f2">Serial.printf(</span><span style="color: #e6db74">&quot;name&lt;%s&gt; as type %d</span><span style="color: #ae81ff">\n</span><span style="color: #e6db74">&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">elm.name.c_str(),</span> <span style="color: #f8f8f2">(</span><span style="color: #66d9ef">int</span><span style="color: #f8f8f2">)elm.typeOf());</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<h3 id="load"><i class="fa fa-caret-right"></i> load<a class="headerlink" href="#load" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">load(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">in)</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">load(PGM_P</span> <span style="color: #f8f8f2">in)</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">load(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">__FlashStringHelper</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">in)</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">load(Stream</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">in)</span>
-</pre></div>
-Load all AutoConnectElements elements from JSON document into AutoConnectAux as custom Web pages. The JSON document specified by the load function must be the <a href="acjson.html#json-objects-elements-for-the-custom-web-page">document structure</a> of AutoConnectAux. Its JSON document can describe multiple pages as an array.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">in</span><span class="apidesc">Specifies the JSON document to be load. The load function can input the following objects.</p>
-<ul>
-<li>String : Read-only String</li>
-<li>PROGMEM : Character array contained in the flash</li>
-<li>Stream : An entity that inherits stream class, generally SPIFFS or SD.
-    </span></dd>
-    <dt><strong>Return value</strong></dt>
-    <dd><span class="apidef">true</span><span class="apidesc">JSON document as the custom Web pages successfully loaded.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">JSON document loading failed.</span></dd>
-</dl></li>
-</ul>
-<div class="admonition hint">
-<p class="admonition-title">Load multiple custom Web pages separately</p>
-<p>Multiple custom Web pages can be loaded at once with JSON as an array. But it will consume a lot of memory. By loading a JSON document by page as much as possible, you can reduce memory consumption.</p>
-</div>
-<h3 id="loadelement"><i class="fa fa-caret-right"></i> loadElement<a class="headerlink" href="#loadelement" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">loadElement(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">in,</span> <span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">name</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">String(</span><span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">))</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">loadElement(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">in,</span> <span style="color: #f8f8f2">std</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">vector</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">String</span><span style="color: #f92672">&gt;</span> <span style="color: #66d9ef">const</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">names)</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">loadElement(PGM_P</span> <span style="color: #f8f8f2">in,</span> <span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">name</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">String(</span><span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">))</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">loadElement(PGM_P</span> <span style="color: #f8f8f2">in,</span> <span style="color: #f8f8f2">std</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">vector</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">String</span><span style="color: #f92672">&gt;</span> <span style="color: #66d9ef">const</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">names)</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">loadElement(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">__FlashStringHelper</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">in,</span> <span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">name</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">String(</span><span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">))</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">loadElement(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">__FlashStringHelper</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">in,</span> <span style="color: #f8f8f2">std</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">vector</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">String</span><span style="color: #f92672">&gt;</span> <span style="color: #66d9ef">const</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">names)</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">loadElement(Stream</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">in,</span> <span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">name</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">String(</span><span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">))</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">loadElement(Stream</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">in,</span> <span style="color: #f8f8f2">std</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">vector</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">String</span><span style="color: #f92672">&gt;</span> <span style="color: #66d9ef">const</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">names)</span>
-</pre></div>
-Load specified element from JSON document into AutoConnectAux. The JSON document specified by the loadElement function must be the <a href="acjson.html#json-object-for-autoconnectelements">AutoConnectElement document structure</a>. When loading from a JSON document that describes multiple elements, its description must be an array syntax.
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">in</span><span class="apidesc">Specifies the JSON document to be load. The load function can input the following objects.</p>
-<ul>
-<li>String : Read-only String</li>
-<li>PROGMEM : Character array contained in the flash</li>
-<li>Stream : An entity that inherits stream class, generally SPIFFS or SD.
-    </span></dd>
-    <dd><span class="apidef">name</span><span class="apidesc">Specifies the name to be load. If the name is not specified, the loadElement function will load all elements contained in the JSON document.</span></dd>
-    <dd><span class="apidef">names</span><span class="apidesc"> Spefifies an array list of String indicating the name of the element to be loaded. The <a href="https://en.cppreference.com/w/cpp/language/list_initialization">list initialization</a> with braced-init-list of the <a href="https://en.cppreference.com/w/cpp/container/vector">std::vector</a> can be used.</span></dd>
-    <dt><strong>Return value</strong></dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Specified AutoConnectElements successfully loaded.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">JSON document loading failed.</span></dd>
-</dl></li>
-</ul>
-<div class="admonition caution">
-<p class="admonition-title">Maybe it is an array</p>
-<p>Please note that the JSON document that is the input for loadElement is an array syntax of AutoConnectElements when there are multiple elements. For example, the following JSON document has a syntax error:</p>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">{</span>
-  <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Caption&quot;</span><span style="color: #f8f8f2">,</span>
-  <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACText&quot;</span><span style="color: #f8f8f2">,</span>
-  <span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Hello, world&quot;</span>
-<span style="color: #f8f8f2">}</span><span style="color: #960050; background-color: #1e0010">,</span>
-<span style="color: #f8f8f2">{</span>
-  <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Server&quot;</span><span style="color: #f8f8f2">,</span>
-  <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACInput&quot;</span><span style="color: #f8f8f2">,</span>
-  <span style="color: #f92672">&quot;label&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Server address&quot;</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-The outermost <code>[</code>, <code>]</code> is missing.</p>
-</div>
-<h3 id="menu"><i class="fa fa-caret-right"></i> menu<a class="headerlink" href="#menu" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">menu(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">post)</span>
-</pre></div>
-Set or reset the display as menu item for this AutoConnectAux. This function programmatically manipulates the menu parameter of the <a href="apiaux.html#autoconnectaux">AutoConenctAux constructor</a>.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Show on the menu.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">Hidden on the menu.</span></dd>
-</dl></p>
-<h3 id="on"><i class="fa fa-caret-right"></i> on<a class="headerlink" href="#on" title="Permanent link">&para;</a></h3>
-<dl>
-<dt><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">on(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">AuxHandlerFunctionT</span> <span style="color: #f8f8f2">handler,</span> <span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">AutoConnectExitOrder_t</span> <span style="color: #f8f8f2">order</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">AC_EXIT_AHEAD)</span>
-</pre></div></dt>
-<dt>Register the handler function of the AutoConnectAux.</dt>
-<dt><dl class="apidl"></dt>
-<dt><dt><strong>Parameters</strong></dt></dt>
-<dt><dd><span class="apidef">handler</span><span class="apidesc">A function that behaves when a request to the AutoConnectAux page occurs. AuxHandlerFunctionT type is defined by the following declaration.<p class="apidesc"><code>String handler(AutoConnectAux&amp;, PageArgument&amp;)</code></p></span></dd></dt>
-<dt><dd><span class="apidef">order</span><span class="apidesc">Specifies when the handler is called with the following enumeration value.</span></dt>
-<dd>
-<ul>
-<li><strong>AC_EXIT_AHEAD</strong> :
-Called before AutoConnect generates the HTML of the page. You set the value of AutoConnectElements in the handler then its value will be displayed on the page.</li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li><strong>AC_EXIT_LATER</strong> :
-Called after AutoConnect generates the HTML of the page. You can append to HTML generated by AutoConnect.</li>
-</ul>
-</dd>
-<dd>
-<ul>
-<li><strong>AC_EXIT_BOTH</strong> :
-Called even before generating HTML and after generated.</dd></li>
-</ul>
-</dd>
-</dl>
-</dl>
-
-<h3 id="onupload"><i class="fa fa-caret-right"></i> onUpload<a class="headerlink" href="#onupload" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">onUpload</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">T</span><span style="color: #f92672">&amp;&gt;</span><span style="color: #f8f8f2">(T</span> <span style="color: #f8f8f2">handler)</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">onUpload(PageBuilder</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">UploadFuncT</span> <span style="color: #f8f8f2">uploadFunc)</span>
-</pre></div>
-Register the upload handler of the AutoConnectAux.
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">T</span><span class="apidesc">Specifies a class name of the custom uploader inherited from <a href="acupload.html#upload-handler-base-class">AutoConnectUploadHandler</a> class. Refer to the <a href="acupload.html#to-upload-to-a-device-other-than-flash-or-sd">appendix</a> for details.</span></dd>
-    <dd><span class="apidef">handler</span><span class="apidesc">Specifies the custom uploader inherited from <a href="acupload.html#upload-handler-base-class">AutoConnectUploadHandler</a> class. Refer to the <a href="acupload.html#to-upload-to-a-device-other-than-flash-or-sd">appendix</a> for details.</span></dd>
-    <dd><span class="apidef">uploadFunc</span><span class="apidesc">A function that behaves when request to upload with the AutoConnectAux page. UploadFuncT type is defined by the following declaration.<p class="apidesc"><code>void(const String&amp;, const HTTPUpload&amp;)</code></p><p>A data structure of the upload file as HTTPUpload. It is defined in the ESP8266WebServer (the WebServer for ESP32) library as follows:</p>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">typedef</span> <span style="color: #66d9ef">struct</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">HTTPUploadStatus</span> <span style="color: #f8f8f2">status;</span>
-  <span style="color: #f8f8f2">String</span>  <span style="color: #f8f8f2">filename;</span>
-  <span style="color: #f8f8f2">String</span>  <span style="color: #f8f8f2">name;</span>
-  <span style="color: #f8f8f2">String</span>  <span style="color: #f8f8f2">type;</span>
-  <span style="color: #66d9ef">size_t</span>  <span style="color: #f8f8f2">totalSize;</span>
-  <span style="color: #66d9ef">size_t</span>  <span style="color: #f8f8f2">currentSize;</span>
-  <span style="color: #66d9ef">size_t</span>  <span style="color: #f8f8f2">contentLength;</span>
-  <span style="color: #66d9ef">uint8_t</span> <span style="color: #f8f8f2">buf[HTTP_UPLOAD_BUFLEN];</span>
-<span style="color: #f8f8f2">}</span> <span style="color: #f8f8f2">HTTPUpload;</span>
-</pre></div>
-</p>Refer to '<a href="acupload.html#to-upload-to-a-device-other-than-flash-or-sd">To upload to a device other than Flash or SD</a>' in section <a href="acupload.html">appendix</a> for details.</span></dd>
-</dl></p>
-<h3 id="release"><i class="fa fa-caret-right"></i> release<a class="headerlink" href="#release" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">release(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">name)</span>
-</pre></div>
-Release a specified AutoConnectElement from AutoConenctAux. The release function is provided to dynamically change the structure of the custom Web pages with the sketch. By combining the release function and the <a href="apiaux.html#add">add</a> function or the <a href="apiaux.html#loadelement">loadElement</a> function, the sketch can change the style of the custom Web page according to its behavior.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">name</span><span class="apidesc">Specifies the name of AutoConnectElements to be released.</span></dd>
-    <dt><strong>Return value</strong></dt>
-    <dd><span class="apidef">true</span><span class="apidesc">The AutoConnectElement successfully released.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">The AutoConnectElement can not be released.</span></dd>
-</dl></p>
-<h3 id="saveelement"><i class="fa fa-caret-right"></i> saveElement<a class="headerlink" href="#saveelement" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">size_t</span> <span style="color: #f8f8f2">saveElement(Stream</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">out,</span> <span style="color: #f8f8f2">std</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">vector</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">String</span><span style="color: #f92672">&gt;</span> <span style="color: #66d9ef">const</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">names</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">{})</span>
-</pre></div>
-Write elements of AutoConnectAux to the stream. The saveElement function outputs the specified AutoConenctElements as a JSON document using the <a href="https://arduinojson.org/v5/api/jsonobject/prettyprintto/">prettyPrintTo</a> function of the <a href="https://arduinojson.org/">ArduinoJson</a> library.
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">out</span><span class="apidesc">Output stream to be output. SPIFFS, SD also Serial can be specified generally.</span></dd>
-    <dd><span class="apidef">names</span><span class="apidesc">The array of the name of AutoConnectElements to be output. If the names parameter is not specified, all AutoConnectElements registered in AutoConnectAux are output.</span></dd>
-    <dt><strong>Return value</strong></dt>
-    <dd>The number of bytes written.</dd>
-</dl></p>
-<div class="admonition note">
-<p class="admonition-title">The output format is pretty</p>
-<p>The saveElement function outputs a prettified JSON document.</p>
-</div>
-<div class="admonition info">
-<p class="admonition-title">It is not complementary with loadElement</p>
-<p>The saveElement function which missing the names parameter without name list to be saved that saves an entire AutoConnectAux element, not just AutoConnectElements. Its saved JSON document is not a complementary input to the loadElement function. The JSON document describing AutoConnectAux saved without the names parameter must be loaded by the <a href="apiaux.html#load">AutoConnectAux::load</a> function or <a href="api.html#load">AutoConnect::load</a> function.</p>
-</div>
-<h3 id="setelementvalue"><i class="fa fa-caret-right"></i> setElementValue<a class="headerlink" href="#setelementvalue" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">setElementValue(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">name,</span> <span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span> <span style="color: #f8f8f2">value)</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">setElementValue(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">name,</span> <span style="color: #f8f8f2">std</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">vector</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">String</span><span style="color: #f92672">&gt;</span> <span style="color: #66d9ef">const</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">values)</span>
-</pre></div>
-Sets the value of the specified AutoConnectElement. If values ​​is specified as a <em>std::vector</em> of String, the element that can set the values is the <a href="apielements.html#autoconnectradio">AutoConnectRadio</a> or the <a href="apielements.html#autoconnectselect">AutoConnectSelect</a>. 
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">name</span><span class="apidesc">Specifies the name of the AutoConnectElements that you want to set the value.</span></dd>
-    <dd><span class="apidef">value</span><span class="apidesc">Specifies the value to be set.</span></dd>
-    <dd><span class="apidef">values</span><span class="apidesc">Specifies a reference of a <em>std::vector</em> of String. It contains the values of the AutoConnectRadio or the AutoConnectSelect.</span></dd>
-    <dt><strong>Return value</strong></dt>
-    <dd><span class="apidef">true</span><span class="apidesc">The value has been set.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">AutoConnectElements with the specified name are not registered. Or the type of the value is not consistent with the specified AutoConnectElements.</span></dd>
-</dl></p>
-<div class="admonition hint">
-<p class="admonition-title">You can directly access the value member variable.</p>
-<p>If you are gripping with the sketch to the AutoConnectElements of the target that sets the value, you can access the value member variable directly. The following sketch code has the same effect.
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectAux</span> <span style="color: #f8f8f2">aux;</span>
-<span style="color: #75715e">// ... Griping the AutoConnectText here.</span>
-<span style="color: #f8f8f2">aux.setElementValue(</span><span style="color: #e6db74">&quot;TEXT_FIELD&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;New value&quot;</span><span style="color: #f8f8f2">);</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectAux</span> <span style="color: #f8f8f2">aux;</span>
-<span style="color: #75715e">// ... Griping the AutoConnectText here.</span>
-<span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">text</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">aux.getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;TEXT_FIELD&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">text.value</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;New value&quot;</span><span style="color: #f8f8f2">;</span>
-</pre></div>
-The difference between the setElementValue and the value access with the <a href="apiaux.html#getelement">getElement</a> is the certainty of the registration state for the element. The <a href="apiaux.html#getelement">getElement</a> returns an empty object if the element is not registered then a sketch assigns the value to it. May occur unexpected results and crashes. You should use the setElementValue if its registration is unsettled.</p>
-</div>
-<h3 id="settitle"><i class="fa fa-caret-right"></i> setTitle<a class="headerlink" href="#settitle" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">setTitle(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">title)</span>
-</pre></div>
-Set the title string of the custom Web page. This title will be displayed as the menu title of the custom Web page.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">title</span><span class="apidesc">Title string to be display.</span></dd>
-</dl></p>
-<div class="admonition caution">
-<p class="admonition-title">Not the menu title</p>
-<p>The setTitle function is not set for the AutoConnect menu title. The effect of this function is that custom Web page only. To change the AutoConnect menu title use <a href="apiconfig.html#title">AutoConnectConfig::title</a>.</p>
-</div></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="api.html" title="AutoConnect API" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>AutoConnect API</span></div></a><a href="apiconfig.html" title="AutoConnectConfig API" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>AutoConnectConfig API</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/apiconfig.html b/lib/AutoConnect-master/docs/apiconfig.html
deleted file mode 100644
index 13245f2923e5315a9aadde21f6b1265147f5f00b..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/apiconfig.html
+++ /dev/null
@@ -1,251 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/apiconfig.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>AutoConnectConfig API - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#constructor" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">AutoConnectConfig API</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--active md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7" checked><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">AutoConnectConfig API</label><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link md-nav__link--active">AutoConnectConfig API</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#constructor" title=" Constructor" class="md-nav__link"> Constructor</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#autoconnectconfig" title="AutoConnectConfig" class="md-nav__link">AutoConnectConfig</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-variables" title=" Public member variables" class="md-nav__link"> Public member variables</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#apid" title=" apid" class="md-nav__link"> apid</a></li><li class="md-nav__item"><a href="#apip" title=" apip" class="md-nav__link"> apip</a></li><li class="md-nav__item"><a href="#autoreconnect" title=" autoReconnect" class="md-nav__link"> autoReconnect</a></li><li class="md-nav__item"><a href="#autoreset" title=" autoReset" class="md-nav__link"> autoReset</a></li><li class="md-nav__item"><a href="#autorise" title=" autoRise" class="md-nav__link"> autoRise</a></li><li class="md-nav__item"><a href="#autosave" title=" autoSave" class="md-nav__link"> autoSave</a></li><li class="md-nav__item"><a href="#booturi" title=" bootUri" class="md-nav__link"> bootUri</a></li><li class="md-nav__item"><a href="#boundaryoffset" title=" boundaryOffset" class="md-nav__link"> boundaryOffset</a></li><li class="md-nav__item"><a href="#channel" title=" channel" class="md-nav__link"> channel</a></li><li class="md-nav__item"><a href="#dns1" title=" dns1" class="md-nav__link"> dns1</a></li><li class="md-nav__item"><a href="#dns2" title=" dns2" class="md-nav__link"> dns2</a></li><li class="md-nav__item"><a href="#gateway" title=" gateway" class="md-nav__link"> gateway</a></li><li class="md-nav__item"><a href="#hidden" title=" hidden" class="md-nav__link"> hidden</a></li><li class="md-nav__item"><a href="#homeuri" title=" homeUri" class="md-nav__link"> homeUri</a></li><li class="md-nav__item"><a href="#hostname" title=" hostName" class="md-nav__link"> hostName</a></li><li class="md-nav__item"><a href="#immediatestart" title=" immediateStart" class="md-nav__link"> immediateStart</a></li><li class="md-nav__item"><a href="#netmask" title=" netmask" class="md-nav__link"> netmask</a></li><li class="md-nav__item"><a href="#portaltimeout" title=" portalTimeout" class="md-nav__link"> portalTimeout</a></li><li class="md-nav__item"><a href="#psk" title=" psk" class="md-nav__link"> psk</a></li><li class="md-nav__item"><a href="#retainportal" title=" retainPortal" class="md-nav__link"> retainPortal</a></li><li class="md-nav__item"><a href="#staip" title=" staip" class="md-nav__link"> staip</a></li><li class="md-nav__item"><a href="#stagateway" title=" staGateway" class="md-nav__link"> staGateway</a></li><li class="md-nav__item"><a href="#stanetmask" title=" staNetmask" class="md-nav__link"> staNetmask</a></li><li class="md-nav__item"><a href="#title" title=" title" class="md-nav__link"> title</a></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectconfig-example" title=" AutoConnectConfig example" class="md-nav__link"> AutoConnectConfig example</a></li></ul></nav></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#constructor" title=" Constructor" class="md-nav__link"> Constructor</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#autoconnectconfig" title="AutoConnectConfig" class="md-nav__link">AutoConnectConfig</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-variables" title=" Public member variables" class="md-nav__link"> Public member variables</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#apid" title=" apid" class="md-nav__link"> apid</a></li><li class="md-nav__item"><a href="#apip" title=" apip" class="md-nav__link"> apip</a></li><li class="md-nav__item"><a href="#autoreconnect" title=" autoReconnect" class="md-nav__link"> autoReconnect</a></li><li class="md-nav__item"><a href="#autoreset" title=" autoReset" class="md-nav__link"> autoReset</a></li><li class="md-nav__item"><a href="#autorise" title=" autoRise" class="md-nav__link"> autoRise</a></li><li class="md-nav__item"><a href="#autosave" title=" autoSave" class="md-nav__link"> autoSave</a></li><li class="md-nav__item"><a href="#booturi" title=" bootUri" class="md-nav__link"> bootUri</a></li><li class="md-nav__item"><a href="#boundaryoffset" title=" boundaryOffset" class="md-nav__link"> boundaryOffset</a></li><li class="md-nav__item"><a href="#channel" title=" channel" class="md-nav__link"> channel</a></li><li class="md-nav__item"><a href="#dns1" title=" dns1" class="md-nav__link"> dns1</a></li><li class="md-nav__item"><a href="#dns2" title=" dns2" class="md-nav__link"> dns2</a></li><li class="md-nav__item"><a href="#gateway" title=" gateway" class="md-nav__link"> gateway</a></li><li class="md-nav__item"><a href="#hidden" title=" hidden" class="md-nav__link"> hidden</a></li><li class="md-nav__item"><a href="#homeuri" title=" homeUri" class="md-nav__link"> homeUri</a></li><li class="md-nav__item"><a href="#hostname" title=" hostName" class="md-nav__link"> hostName</a></li><li class="md-nav__item"><a href="#immediatestart" title=" immediateStart" class="md-nav__link"> immediateStart</a></li><li class="md-nav__item"><a href="#netmask" title=" netmask" class="md-nav__link"> netmask</a></li><li class="md-nav__item"><a href="#portaltimeout" title=" portalTimeout" class="md-nav__link"> portalTimeout</a></li><li class="md-nav__item"><a href="#psk" title=" psk" class="md-nav__link"> psk</a></li><li class="md-nav__item"><a href="#retainportal" title=" retainPortal" class="md-nav__link"> retainPortal</a></li><li class="md-nav__item"><a href="#staip" title=" staip" class="md-nav__link"> staip</a></li><li class="md-nav__item"><a href="#stagateway" title=" staGateway" class="md-nav__link"> staGateway</a></li><li class="md-nav__item"><a href="#stanetmask" title=" staNetmask" class="md-nav__link"> staNetmask</a></li><li class="md-nav__item"><a href="#title" title=" title" class="md-nav__link"> title</a></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectconfig-example" title=" AutoConnectConfig example" class="md-nav__link"> AutoConnectConfig example</a></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>AutoConnectConfig API</h1><h2 id="constructor"><i class="fa fa-code"></i> Constructor<a class="headerlink" href="#constructor" title="Permanent link">&para;</a></h2>
-<h3 id="autoconnectconfig">AutoConnectConfig<a class="headerlink" href="#autoconnectconfig" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectConfig()</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectConfig(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">ap,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">password)</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectConfig(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">ap,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">password,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">unsigned</span> <span style="color: #66d9ef">long</span> <span style="color: #f8f8f2">timeout)</span>
-</pre></div>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectConfig(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">ap,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">password,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">unsigned</span> <span style="color: #66d9ef">long</span> <span style="color: #f8f8f2">timeout,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">uint8_t</span> <span style="color: #f8f8f2">channel)</span>
-</pre></div>
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">ap</span><span class="apidesc">SSID for SoftAP. The length should be up to 31. The default value is <strong>esp8266ap</strong> for ESP8266, <strong>esp32ap</strong> for ESP32.</span></dd>
-    <dd><span class="apidef">password</span><span class="apidesc">Password for SodtAP. The length should be from 8 to up to 63. The default value is <strong>12345678</strong>.</span></dd>
-    <dd><span class="apidef">timeout</span><span class="apidesc">The timeout value of the captive portal in [ms] units. The default value is 0.</span></dd>
-    <dd><span class="apidef">channel</span><span class="apidesc">The channel number of WIFi when SoftAP starts. The default values is 1.</span></dd>
-</dl></p>
-<h2 id="public-member-variables"><i class="fa fa-code"></i> Public member variables<a class="headerlink" href="#public-member-variables" title="Permanent link">&para;</a></h2>
-<h3 id="apid"><i class="fa fa-caret-right"></i> apid<a class="headerlink" href="#apid" title="Permanent link">&para;</a></h3>
-<p>SoftAP's SSID. 
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"> The default value is <strong>esp8266ap</strong> for ESP8266, <strong>esp32ap</strong> for ESP32.</span></dd>
-</dl></p>
-<h3 id="apip"><i class="fa fa-caret-right"></i> apip<a class="headerlink" href="#apip" title="Permanent link">&para;</a></h3>
-<p>Sets IP address for Soft AP in captive portal. When AutoConnect fails the initial WiFi.begin, it starts the captive portal with the IP address specified this.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">IPAddress</span><span class="apidesc">The default value is <strong>192.168.244.1</strong></span></dd>
-</dl></p>
-<h3 id="autoreconnect"><i class="fa fa-caret-right"></i> autoReconnect<a class="headerlink" href="#autoreconnect" title="Permanent link">&para;</a></h3>
-<p>Automatically will try to reconnect with the past established access point (BSSID) when the current configured SSID in ESP8266/ESP32 could not be connected. By enabling this option, <em>AutoConnect::begin()</em> function will attempt to reconnect to a known access point using credentials stored in the EEPROM, even if the connection failed by current SSID.<br />
-If the connection fails, starts the captive portal in SoftAP+STA mode.<br />
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd>bool</dd>
-    <dt><strong>Value</strong></dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Reconnect automatically.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">Starts Captive Portal in SoftAP + STA mode without trying to reconnect. This is the default.</span></dd>
-</dl></p>
-<p>When the autoReconnect option is enabled, an automatic connection will behave if the following conditions are satisfied.</p>
-<ul>
-<li>Invokes <em>AutoConnect::begin</em> without user name and password parameter as <code>begin()</code>.</li>
-<li>If one of the saved BSSIDs (not the SSID) of the credentials matches the BSSID detected by the network scan.</li>
-</ul>
-<h3 id="autoreset"><i class="fa fa-caret-right"></i> autoReset<a class="headerlink" href="#autoreset" title="Permanent link">&para;</a></h3>
-<p>Reset ESP8266 module automatically after WLAN disconnected.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd>bool</dd>
-    <dt><strong>Value</strong></dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Reset after WiFi disconnected automatically.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">No reset.</span></dd>
-</dl></p>
-<h3 id="autorise"><i class="fa fa-caret-right"></i> autoRise<a class="headerlink" href="#autorise" title="Permanent link">&para;</a></h3>
-<p>Captive portal activation switch. False for disabling the captive portal. It prevents starting the captive portal even if the connection at the first <em>WiFi.begin</em> fails.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd>bool</dd>
-    <dt><strong>Value</strong></dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Enable the captive portal. This is the default.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">Disable the captive portal.</span></dd>
-</dl></p>
-<h3 id="autosave"><i class="fa fa-caret-right"></i> autoSave<a class="headerlink" href="#autosave" title="Permanent link">&para;</a></h3>
-<p>The credential saved automatically at the connection establishment.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd>AC_SAVECREDENTIAL_t</dd>
-    <dt><strong>Value</strong></dt>
-    <dd><span class="apidef">AC_SAVECREDENTIAL_AUTO</span><span class="apidesc"></span><span class="apidef">&nbsp;</span><span class="apidesc">The credential saved automatically. This is the default.</span></dd>
-    <dd><span class="apidef">AC_SAVECREDENTIAL_NEVER</span><span class="apidesc"></span><span class="apidef">&nbsp;</span><span class="apidesc">The credential no saved.</span></dd>
-</dl></p>
-<h3 id="booturi"><i class="fa fa-caret-right"></i> bootUri<a class="headerlink" href="#booturi" title="Permanent link">&para;</a></h3>
-<p>Specify the location to be redirected after module reset in the AutoConnect menu. It is given as an enumeration value of <strong>AC_ONBOOTURI_t</strong> indicating either the AutoConnect root path or the user screen home path.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd>AC_ONBOOTURI_t</dd>
-    <dt><strong>Value</strong></dt>
-    <dd><span class="apidef">AC_ONBOOTURI_ROOT</span><span class="apidesc"></span><span class="apidef">&nbsp;</span><span class="apidesc">Resetting the module redirects it to the AutoConnect root path. The root path is assumed to be AUTOCONNECT_URI defined in AutoConnectDefs.h.</span></dd>
-    <dd><span class="apidef">AC_ONBOOTURI_HOME</span><span class="apidesc"></span><span class="apidef">&nbsp;</span><span class="apidesc">It is redirected to the uri specified by <a href="apiconfig.html#homeuri"><strong>AutoConnectConfig::homeUri</strong></a>.</span></dd>
-</dl></p>
-<h3 id="boundaryoffset"><i class="fa fa-caret-right"></i> boundaryOffset<a class="headerlink" href="#boundaryoffset" title="Permanent link">&para;</a></h3>
-<p>Sets the offset address of the credential storage area for EEPROM. This value must be between greater than 4 and less than flash sector size. (4096 by SDK)<br />
-The default value is 0.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd>uint16_t</dd>
-</dl></p>
-<div class="admonition warning">
-<p class="admonition-title">It will conflict with user data.</p>
-<p>If the sketch leaves this offset at zero, it will conflict the storage area of credentials with the user sketch owned data. It needs to use the behind of credential area.</p>
-</div>
-<h3 id="channel"><i class="fa fa-caret-right"></i> channel<a class="headerlink" href="#channel" title="Permanent link">&para;</a></h3>
-<p>The channel number of WIFi when SoftAP starts.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd>uint8_t</dd>
-    <dt><strong>Value</strong></dt>
-    <dd>1 ~ 14. The default value is 1.</dd>
-</dl></p>
-<div class="admonition info">
-<p class="admonition-title">How do I choose Channel</p>
-<p>Espressif Systems had announced the <a href="https://www.espressif.com/sites/default/files/esp8266_wi-fi_channel_selection_guidelines.pdf">application note</a> about Wi-Fi channel selection.</p>
-</div>
-<h3 id="dns1"><i class="fa fa-caret-right"></i> dns1<a class="headerlink" href="#dns1" title="Permanent link">&para;</a></h3>
-<p>Set primary DNS server address when using static IP address.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd>IPAddress</dd>
-</dl></p>
-<h3 id="dns2"><i class="fa fa-caret-right"></i> dns2<a class="headerlink" href="#dns2" title="Permanent link">&para;</a></h3>
-<p>Set secondary DNS server address when using static IP address.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd>IPAddress</dd>
-</dl></p>
-<h3 id="gateway"><i class="fa fa-caret-right"></i> gateway<a class="headerlink" href="#gateway" title="Permanent link">&para;</a></h3>
-<p>Sets gateway address for Soft AP in captive portal. When AutoConnect fails the initial WiFi.begin, it starts the captive portal with the IP address specified this.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">IPAddress</span><span class="apidesc">The default value is <strong>192.168.244.1</strong></span></dd>
-</dl></p>
-<h3 id="hidden"><i class="fa fa-caret-right"></i> hidden<a class="headerlink" href="#hidden" title="Permanent link">&para;</a></h3>
-<p>Sets SoftAP to hidden SSID.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd>uint8_t</dd>
-    <dt><strong>Value</strong></dt>
-    <dd><span class="apidef">0</span><span class="aidesc">SSID will be appeared. This is the default.</span></dd>
-    <dd><span class="apidef">1</span><span class="apidesc">SSID will be hidden.</span></dd>
-</dl></p>
-<h3 id="homeuri"><i class="fa fa-caret-right"></i> homeUri<a class="headerlink" href="#homeuri" title="Permanent link">&para;</a></h3>
-<p>Sets the home path of user sketch. This path would be linked from 'HOME' in the AutoConnect menu. The default for homeUri is "/".
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd>String</dd>
-</dl></p>
-<h3 id="hostname"><i class="fa fa-caret-right"></i> hostName<a class="headerlink" href="#hostname" title="Permanent link">&para;</a></h3>
-<p>Sets the station host name of ESP8266/ESP32.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd>String</dd>
-</dl></p>
-<h3 id="immediatestart"><i class="fa fa-caret-right"></i> immediateStart<a class="headerlink" href="#immediatestart" title="Permanent link">&para;</a></h3>
-<p>Disable the first WiFi.begin() and start the captive portal. If this option is enabled, the module will be in AP_STA mode and the captive portal will be activated regardless of <a href="apiconfig.html#autorise"><strong>AutoConnectConfig::autoRise</strong></a> specification.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd>bool</dd>
-    <dt><strong>Value</strong></dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Start the captive portal with <a href="api.html#begin"><strong>AutoConnect::begin</strong></a>.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">Enable the first WiFi.begin() and it will start captive portal when connection failed. This is default.</span></dd>
-</dl></p>
-<h3 id="netmask"><i class="fa fa-caret-right"></i> netmask<a class="headerlink" href="#netmask" title="Permanent link">&para;</a></h3>
-<p>Sets subnet mask for Soft AP in captive portal. When AutoConnect fails the initial WiFi.begin, it starts the captive portal with the IP address specified this.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">IPAddress</span><span class="apidesc">The default value is <strong>255.255.255.0</strong></span></dd>
-</dl></p>
-<h3 id="portaltimeout"><i class="fa fa-caret-right"></i> portalTimeout<a class="headerlink" href="#portaltimeout" title="Permanent link">&para;</a></h3>
-<p>Specify the timeout value of the captive portal in [ms] units. It is valid when the station is not connected and does not time out if the station is connected to the ESP module in SoftAP mode (ie Attempting WiFi connection with the portal function). If 0, the captive portal will not be timed-out.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">unsigned long</span><span class="apidesc">Captive portal timeout value. The default value is 0.</span></dd>
-</dl></p>
-<h3 id="psk"><i class="fa fa-caret-right"></i> psk<a class="headerlink" href="#psk" title="Permanent link">&para;</a></h3>
-<p>Sets password for SoftAP. The length should be from 8 to up to 63. The default value is <strong>12345678</strong>.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd>String</dd>
-</dl></p>
-<h3 id="retainportal"><i class="fa fa-caret-right"></i> retainPortal<a class="headerlink" href="#retainportal" title="Permanent link">&para;</a></h3>
-<p>Specify whether to continue the portal function even if the captive portal timed out. If the true, when a timeout occurs, the <a href="api.html#begin"><strong>AutoConnect::begin</strong></a> function is exited with returns false, but the portal facility remains alive. So SoftAP remains alive and you can invoke AutoConnect while continuing sketch execution. The default is false.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd>bool</dd>
-    <dt><strong>Value</strong></dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Continue the portal function even if the captive portal times out. The STA + SoftAP mode of the ESP module continues and accepts the connection request to the AP.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">When the captive portal times out, STA + SoftAP mode of the ESP module is stopped. This is default.</span></dd>
-</dl></p>
-<div class="admonition hint">
-<p class="admonition-title">Connection request after timed-out</p>
-<p>With the <strong>retainPortal</strong>, even if AutoConnect::begin in the setup() is timed out, you can execute the sketch and the portal function as a WiFi connection attempt by calling AutoConnect::handleClient in the loop().</p>
-</div>
-<div class="admonition info">
-<p class="admonition-title">All unresolved addresses redirects to /_ac</p>
-<p>If you enable the <strong>retainPortal</strong> option, <strong>all unresolved URIs will be redirected to <code>SoftAPIP/_ac</code></strong>. It happens frequently as client devices repeat captive portal probes in particular. To avoid this, you need to exit from the WiFi connection Apps on your device once.</p>
-</div>
-<h3 id="staip"><i class="fa fa-caret-right"></i> staip<a class="headerlink" href="#staip" title="Permanent link">&para;</a></h3>
-<p>Set a static IP address. The IP will behave with STA mode.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd>IPAddress</dd>
-</dl></p>
-<h3 id="stagateway"><i class="fa fa-caret-right"></i> staGateway<a class="headerlink" href="#stagateway" title="Permanent link">&para;</a></h3>
-<p>Set the gateway address when using static IP address.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd>IPAddress</dd>
-</dl></p>
-<h3 id="stanetmask"><i class="fa fa-caret-right"></i> staNetmask<a class="headerlink" href="#stanetmask" title="Permanent link">&para;</a></h3>
-<p>Set the subnetmask when using static IP address.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd>IPAddress</dd>
-</dl></p>
-<h3 id="title"><i class="fa fa-caret-right"></i> title<a class="headerlink" href="#title" title="Permanent link">&para;</a></h3>
-<p>Set the menu title.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd>String</dd>
-</dl></p>
-<h2 id="autoconnectconfig-example"><i class="fa fa-code"></i> AutoConnectConfig example<a class="headerlink" href="#autoconnectconfig-example" title="Permanent link">&para;</a></h2>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConenct</span>        <span style="color: #f8f8f2">Portal;</span>
-<span style="color: #f8f8f2">AutoConenctConfig</span>  <span style="color: #a6e22e">Config</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;passpass&quot;</span><span style="color: #f8f8f2">);</span>    <span style="color: #75715e">// SoftAp name is determined at runtime</span>
-<span style="color: #f8f8f2">Config.apid</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">ESP.hostname();</span>                 <span style="color: #75715e">// Retrieve host name to SotAp identification</span>
-<span style="color: #f8f8f2">Config.apip</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">IPAddress(</span><span style="color: #ae81ff">192</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">168</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">10</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">101</span><span style="color: #f8f8f2">);</span>      <span style="color: #75715e">// Sets SoftAP IP address</span>
-<span style="color: #f8f8f2">Config.gateway</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">IPAddress(</span><span style="color: #ae81ff">192</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">168</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">10</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">1</span><span style="color: #f8f8f2">);</span>     <span style="color: #75715e">// Sets WLAN router IP address</span>
-<span style="color: #f8f8f2">Config.netmask</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">IPAddress(</span><span style="color: #ae81ff">255</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">255</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">255</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">0</span><span style="color: #f8f8f2">);</span>    <span style="color: #75715e">// Sets WLAN scope</span>
-<span style="color: #f8f8f2">Config.autoReconnect</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">true;</span>                  <span style="color: #75715e">// Enable auto-reconnect</span>
-<span style="color: #f8f8f2">Config.autoSave</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">AC_SAVECREDENTIAL_NEVER;</span>    <span style="color: #75715e">// No save credential</span>
-<span style="color: #f8f8f2">Config.boundaryOffet</span> <span style="color: #f92672">=</span> <span style="color: #ae81ff">64</span><span style="color: #f8f8f2">;</span>                    <span style="color: #75715e">// Reserve 64 bytes for the user data in EEPROM.</span>
-<span style="color: #f8f8f2">Config.portalTimeout</span> <span style="color: #f92672">=</span> <span style="color: #ae81ff">60000</span><span style="color: #f8f8f2">;</span>                 <span style="color: #75715e">// Sets timeout value for the captive portal</span>
-<span style="color: #f8f8f2">Config.retainPortal</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">true;</span>                   <span style="color: #75715e">// Retains the portal function after timed-out</span>
-<span style="color: #f8f8f2">Config.homeUri</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;/index.html&quot;</span><span style="color: #f8f8f2">;</span>               <span style="color: #75715e">// Sets home path of the sketch application</span>
-<span style="color: #f8f8f2">Config.title</span> <span style="color: #f92672">=</span><span style="color: #e6db74">&quot;My menu&quot;</span><span style="color: #f8f8f2">;</span>                      <span style="color: #75715e">// Customize the menu title</span>
-<span style="color: #f8f8f2">Config.staip</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">IPAddress(</span><span style="color: #ae81ff">192</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">168</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">10</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">10</span><span style="color: #f8f8f2">);</span>      <span style="color: #75715e">// Sets static IP</span>
-<span style="color: #f8f8f2">Config.staGateway</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">IPAddress(</span><span style="color: #ae81ff">192</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">168</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">10</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">1</span><span style="color: #f8f8f2">);</span>  <span style="color: #75715e">// Sets WiFi router address</span>
-<span style="color: #f8f8f2">Config.staNetmask</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">IPAddress(</span><span style="color: #ae81ff">255</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">255</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">255</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">0</span><span style="color: #f8f8f2">);</span> <span style="color: #75715e">// Sets WLAN scope</span>
-<span style="color: #f8f8f2">Config.dns1</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">IPAddress(</span><span style="color: #ae81ff">192</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">168</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">10</span><span style="color: #f8f8f2">,</span><span style="color: #ae81ff">1</span><span style="color: #f8f8f2">);</span>        <span style="color: #75715e">// Sets primary DNS address</span>
-<span style="color: #f8f8f2">Portal.config(Config);</span>                        <span style="color: #75715e">// Configure AutoConnect</span>
-<span style="color: #f8f8f2">Portal.begin();</span>                               <span style="color: #75715e">// Starts and behaves captive portal</span>
-</pre></div></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="apiaux.html" title="AutoConnectAux API" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>AutoConnectAux API</span></div></a><a href="apielements.html" title="AutoConnectElements API" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>AutoConnectElements API</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/apielements.html b/lib/AutoConnect-master/docs/apielements.html
deleted file mode 100644
index 8a400588d0f6315f81578547b573dea5dde2aea5..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/apielements.html
+++ /dev/null
@@ -1,617 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/apielements.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>AutoConnectElements API - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#autoconnectbutton" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">AutoConnectElements API</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--active md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7" checked><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">AutoConnectElements API</label><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link md-nav__link--active">AutoConnectElements API</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#autoconnectbutton" title="AutoConnectButton" class="md-nav__link">AutoConnectButton</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#public-member-variables" title=" Public member variables" class="md-nav__link"> Public member variables</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#action" title=" action" class="md-nav__link"> action</a></li><li class="md-nav__item"><a href="#enable" title=" enable" class="md-nav__link"> enable</a></li><li class="md-nav__item"><a href="#name" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#value" title=" value" class="md-nav__link"> value</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-functions" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#typeof" title=" typeOf" class="md-nav__link"> typeOf</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectcheckbox" title="AutoConnectCheckbox" class="md-nav__link">AutoConnectCheckbox</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_1" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#public-member-variables_1" title=" Public member variables" class="md-nav__link"> Public member variables</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#checked" title=" checked" class="md-nav__link"> checked</a></li><li class="md-nav__item"><a href="#enable_1" title=" enable" class="md-nav__link"> enable</a></li><li class="md-nav__item"><a href="#label" title=" label" class="md-nav__link"> label</a></li><li class="md-nav__item"><a href="#name_1" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#value_1" title=" value" class="md-nav__link"> value</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-functions_1" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#typeof_1" title=" typeOf" class="md-nav__link"> typeOf</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectelement" title="AutoConnectElement" class="md-nav__link">AutoConnectElement</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_2" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#public-member-variables_2" title=" Public member variables" class="md-nav__link"> Public member variables</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#enable_2" title=" enable" class="md-nav__link"> enable</a></li><li class="md-nav__item"><a href="#name_2" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#value_2" title=" value" class="md-nav__link"> value</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-functions_2" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#typeof_2" title=" typeOf" class="md-nav__link"> typeOf</a></li><li class="md-nav__item"><a href="#ast62" title=" as&lt;T>" class="md-nav__link"> as&lt;T></a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectfile" title="AutoConnectFile" class="md-nav__link">AutoConnectFile</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_3" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#public-member-variables_3" title=" Public member variables" class="md-nav__link"> Public member variables</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#enable_3" title=" enable" class="md-nav__link"> enable</a></li><li class="md-nav__item"><a href="#label_1" title=" label" class="md-nav__link"> label</a></li><li class="md-nav__item"><a href="#mimetype" title=" mimeType" class="md-nav__link"> mimeType</a></li><li class="md-nav__item"><a href="#name_3" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#size" title=" size" class="md-nav__link"> size</a></li><li class="md-nav__item"><a href="#store" title=" store" class="md-nav__link"> store</a></li><li class="md-nav__item"><a href="#value_3" title=" value" class="md-nav__link"> value</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-functions_3" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#typeof_3" title=" typeOf" class="md-nav__link"> typeOf</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectinput" title="AutoConnectInput" class="md-nav__link">AutoConnectInput</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_4" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#public-member-variables_4" title=" Public member variables" class="md-nav__link"> Public member variables</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#enable_4" title=" enable" class="md-nav__link"> enable</a></li><li class="md-nav__item"><a href="#label_2" title=" label" class="md-nav__link"> label</a></li><li class="md-nav__item"><a href="#name_4" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#value_4" title=" value" class="md-nav__link"> value</a></li><li class="md-nav__item"><a href="#pattern" title=" pattern" class="md-nav__link"> pattern</a></li><li class="md-nav__item"><a href="#placeholder" title=" placeholder" class="md-nav__link"> placeholder</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-functions_4" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#isvalid" title=" isValid" class="md-nav__link"> isValid</a></li><li class="md-nav__item"><a href="#typeof_4" title=" typeOf" class="md-nav__link"> typeOf</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectradio" title="AutoConnectRadio" class="md-nav__link">AutoConnectRadio</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_5" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#public-member-variables_5" title=" Public member variables" class="md-nav__link"> Public member variables</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#checked_1" title=" checked" class="md-nav__link"> checked</a></li><li class="md-nav__item"><a href="#enable_5" title=" enable" class="md-nav__link"> enable</a></li><li class="md-nav__item"><a href="#label_3" title=" label" class="md-nav__link"> label</a></li><li class="md-nav__item"><a href="#name_5" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#order" title=" order" class="md-nav__link"> order</a></li><li class="md-nav__item"><a href="#values" title=" values" class="md-nav__link"> values</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-functions_5" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#add" title=" add" class="md-nav__link"> add</a></li><li class="md-nav__item"><a href="#check" title=" check" class="md-nav__link"> check</a></li><li class="md-nav__item"><a href="#empty" title=" empty" class="md-nav__link"> empty</a></li><li class="md-nav__item"><a href="#operator" title=" operator &#91;&nbsp;&#93;" class="md-nav__link"> operator &#91;&nbsp;&#93;</a></li><li class="md-nav__item"><a href="#size_1" title=" size" class="md-nav__link"> size</a></li><li class="md-nav__item"><a href="#typeof_5" title=" typeOf" class="md-nav__link"> typeOf</a></li><li class="md-nav__item"><a href="#value_5" title=" value" class="md-nav__link"> value</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectselect" title="AutoConnectSelect" class="md-nav__link">AutoConnectSelect</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_6" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#public-member-variables_6" title=" Public member variables" class="md-nav__link"> Public member variables</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#enable_6" title=" enable" class="md-nav__link"> enable</a></li><li class="md-nav__item"><a href="#name_6" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#label_4" title=" label" class="md-nav__link"> label</a></li><li class="md-nav__item"><a href="#options" title=" options" class="md-nav__link"> options</a></li><li class="md-nav__item"><a href="#selected" title=" selected" class="md-nav__link"> selected</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-functions_6" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#add_1" title=" add" class="md-nav__link"> add</a></li><li class="md-nav__item"><a href="#empty_1" title=" empty" class="md-nav__link"> empty</a></li><li class="md-nav__item"><a href="#operator_1" title=" operator &#91;&nbsp;&#93;" class="md-nav__link"> operator &#91;&nbsp;&#93;</a></li><li class="md-nav__item"><a href="#select" title=" select" class="md-nav__link"> select</a></li><li class="md-nav__item"><a href="#size_2" title=" size" class="md-nav__link"> size</a></li><li class="md-nav__item"><a href="#typeof_6" title=" typeOf" class="md-nav__link"> typeOf</a></li><li class="md-nav__item"><a href="#value_6" title=" value" class="md-nav__link"> value</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectsubmit" title="AutoConnectSubmit" class="md-nav__link">AutoConnectSubmit</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_7" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#public-member-variables_7" title=" Public member variables" class="md-nav__link"> Public member variables</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#enable_7" title=" enable" class="md-nav__link"> enable</a></li><li class="md-nav__item"><a href="#name_7" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#uri" title=" uri" class="md-nav__link"> uri</a></li><li class="md-nav__item"><a href="#value_7" title=" value" class="md-nav__link"> value</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-functions_7" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#typeof_7" title=" typeOf" class="md-nav__link"> typeOf</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnecttext" title="AutoConnectText" class="md-nav__link">AutoConnectText</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_8" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#public-member-variables_8" title=" Public member variables" class="md-nav__link"> Public member variables</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#enable_8" title=" enable" class="md-nav__link"> enable</a></li><li class="md-nav__item"><a href="#format" title=" format" class="md-nav__link"> format</a></li><li class="md-nav__item"><a href="#name_8" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#style" title=" style" class="md-nav__link"> style</a></li><li class="md-nav__item"><a href="#value_8" title=" value" class="md-nav__link"> value</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-functions_8" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#typeof_8" title=" typeOf" class="md-nav__link"> typeOf</a></li></ul></nav></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#autoconnectbutton" title="AutoConnectButton" class="md-nav__link">AutoConnectButton</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#public-member-variables" title=" Public member variables" class="md-nav__link"> Public member variables</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#action" title=" action" class="md-nav__link"> action</a></li><li class="md-nav__item"><a href="#enable" title=" enable" class="md-nav__link"> enable</a></li><li class="md-nav__item"><a href="#name" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#value" title=" value" class="md-nav__link"> value</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-functions" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#typeof" title=" typeOf" class="md-nav__link"> typeOf</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectcheckbox" title="AutoConnectCheckbox" class="md-nav__link">AutoConnectCheckbox</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_1" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#public-member-variables_1" title=" Public member variables" class="md-nav__link"> Public member variables</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#checked" title=" checked" class="md-nav__link"> checked</a></li><li class="md-nav__item"><a href="#enable_1" title=" enable" class="md-nav__link"> enable</a></li><li class="md-nav__item"><a href="#label" title=" label" class="md-nav__link"> label</a></li><li class="md-nav__item"><a href="#name_1" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#value_1" title=" value" class="md-nav__link"> value</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-functions_1" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#typeof_1" title=" typeOf" class="md-nav__link"> typeOf</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectelement" title="AutoConnectElement" class="md-nav__link">AutoConnectElement</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_2" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#public-member-variables_2" title=" Public member variables" class="md-nav__link"> Public member variables</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#enable_2" title=" enable" class="md-nav__link"> enable</a></li><li class="md-nav__item"><a href="#name_2" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#value_2" title=" value" class="md-nav__link"> value</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-functions_2" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#typeof_2" title=" typeOf" class="md-nav__link"> typeOf</a></li><li class="md-nav__item"><a href="#ast62" title=" as&lt;T>" class="md-nav__link"> as&lt;T></a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectfile" title="AutoConnectFile" class="md-nav__link">AutoConnectFile</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_3" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#public-member-variables_3" title=" Public member variables" class="md-nav__link"> Public member variables</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#enable_3" title=" enable" class="md-nav__link"> enable</a></li><li class="md-nav__item"><a href="#label_1" title=" label" class="md-nav__link"> label</a></li><li class="md-nav__item"><a href="#mimetype" title=" mimeType" class="md-nav__link"> mimeType</a></li><li class="md-nav__item"><a href="#name_3" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#size" title=" size" class="md-nav__link"> size</a></li><li class="md-nav__item"><a href="#store" title=" store" class="md-nav__link"> store</a></li><li class="md-nav__item"><a href="#value_3" title=" value" class="md-nav__link"> value</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-functions_3" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#typeof_3" title=" typeOf" class="md-nav__link"> typeOf</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectinput" title="AutoConnectInput" class="md-nav__link">AutoConnectInput</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_4" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#public-member-variables_4" title=" Public member variables" class="md-nav__link"> Public member variables</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#enable_4" title=" enable" class="md-nav__link"> enable</a></li><li class="md-nav__item"><a href="#label_2" title=" label" class="md-nav__link"> label</a></li><li class="md-nav__item"><a href="#name_4" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#value_4" title=" value" class="md-nav__link"> value</a></li><li class="md-nav__item"><a href="#pattern" title=" pattern" class="md-nav__link"> pattern</a></li><li class="md-nav__item"><a href="#placeholder" title=" placeholder" class="md-nav__link"> placeholder</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-functions_4" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#isvalid" title=" isValid" class="md-nav__link"> isValid</a></li><li class="md-nav__item"><a href="#typeof_4" title=" typeOf" class="md-nav__link"> typeOf</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectradio" title="AutoConnectRadio" class="md-nav__link">AutoConnectRadio</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_5" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#public-member-variables_5" title=" Public member variables" class="md-nav__link"> Public member variables</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#checked_1" title=" checked" class="md-nav__link"> checked</a></li><li class="md-nav__item"><a href="#enable_5" title=" enable" class="md-nav__link"> enable</a></li><li class="md-nav__item"><a href="#label_3" title=" label" class="md-nav__link"> label</a></li><li class="md-nav__item"><a href="#name_5" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#order" title=" order" class="md-nav__link"> order</a></li><li class="md-nav__item"><a href="#values" title=" values" class="md-nav__link"> values</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-functions_5" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#add" title=" add" class="md-nav__link"> add</a></li><li class="md-nav__item"><a href="#check" title=" check" class="md-nav__link"> check</a></li><li class="md-nav__item"><a href="#empty" title=" empty" class="md-nav__link"> empty</a></li><li class="md-nav__item"><a href="#operator" title=" operator &#91;&nbsp;&#93;" class="md-nav__link"> operator &#91;&nbsp;&#93;</a></li><li class="md-nav__item"><a href="#size_1" title=" size" class="md-nav__link"> size</a></li><li class="md-nav__item"><a href="#typeof_5" title=" typeOf" class="md-nav__link"> typeOf</a></li><li class="md-nav__item"><a href="#value_5" title=" value" class="md-nav__link"> value</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectselect" title="AutoConnectSelect" class="md-nav__link">AutoConnectSelect</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_6" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#public-member-variables_6" title=" Public member variables" class="md-nav__link"> Public member variables</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#enable_6" title=" enable" class="md-nav__link"> enable</a></li><li class="md-nav__item"><a href="#name_6" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#label_4" title=" label" class="md-nav__link"> label</a></li><li class="md-nav__item"><a href="#options" title=" options" class="md-nav__link"> options</a></li><li class="md-nav__item"><a href="#selected" title=" selected" class="md-nav__link"> selected</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-functions_6" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#add_1" title=" add" class="md-nav__link"> add</a></li><li class="md-nav__item"><a href="#empty_1" title=" empty" class="md-nav__link"> empty</a></li><li class="md-nav__item"><a href="#operator_1" title=" operator &#91;&nbsp;&#93;" class="md-nav__link"> operator &#91;&nbsp;&#93;</a></li><li class="md-nav__item"><a href="#select" title=" select" class="md-nav__link"> select</a></li><li class="md-nav__item"><a href="#size_2" title=" size" class="md-nav__link"> size</a></li><li class="md-nav__item"><a href="#typeof_6" title=" typeOf" class="md-nav__link"> typeOf</a></li><li class="md-nav__item"><a href="#value_6" title=" value" class="md-nav__link"> value</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnectsubmit" title="AutoConnectSubmit" class="md-nav__link">AutoConnectSubmit</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_7" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#public-member-variables_7" title=" Public member variables" class="md-nav__link"> Public member variables</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#enable_7" title=" enable" class="md-nav__link"> enable</a></li><li class="md-nav__item"><a href="#name_7" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#uri" title=" uri" class="md-nav__link"> uri</a></li><li class="md-nav__item"><a href="#value_7" title=" value" class="md-nav__link"> value</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-functions_7" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#typeof_7" title=" typeOf" class="md-nav__link"> typeOf</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="#autoconnecttext" title="AutoConnectText" class="md-nav__link">AutoConnectText</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#constructor_8" title=" Constructor" class="md-nav__link"> Constructor</a></li><li class="md-nav__item"><a href="#public-member-variables_8" title=" Public member variables" class="md-nav__link"> Public member variables</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#enable_8" title=" enable" class="md-nav__link"> enable</a></li><li class="md-nav__item"><a href="#format" title=" format" class="md-nav__link"> format</a></li><li class="md-nav__item"><a href="#name_8" title=" name" class="md-nav__link"> name</a></li><li class="md-nav__item"><a href="#style" title=" style" class="md-nav__link"> style</a></li><li class="md-nav__item"><a href="#value_8" title=" value" class="md-nav__link"> value</a></li></ul></nav></li><li class="md-nav__item"><a href="#public-member-functions_8" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#typeof_8" title=" typeOf" class="md-nav__link"> typeOf</a></li></ul></nav></li></ul></nav></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>AutoConnectElements API</h1><h2 id="autoconnectbutton">AutoConnectButton<a class="headerlink" href="#autoconnectbutton" title="Permanent link">&para;</a></h2>
-<h3 id="constructor"><i class="fa fa-code"></i> Constructor<a class="headerlink" href="#constructor" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectButton(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">name</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">value</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">action</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">String())</span>
-</pre></div>
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">name</span><span class="apidesc">The element name.</span></dd>
-    <dd><span class="apidef">value</span><span class="apidesc">Value of the element.</span></dd>
-    <dd><span class="apidef">action</span><span class="apidesc">Native code of the action script executed when the button is clicked.</span></dd>
-</dl></p>
-<h3 id="public-member-variables"><i class="fa fa-code"></i> Public member variables<a class="headerlink" href="#public-member-variables" title="Permanent link">&para;</a></h3>
-<h4 id="action"><i class="fa fa-caret-right"></i> action<a class="headerlink" href="#action" title="Permanent link">&para;</a></h4>
-<p>HTML native code of the action script to be executed when the button is clicked. It is mostly used with a JavaScript to activate a script.<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup>
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="enable"><i class="fa fa-caret-right"></i> enable<a class="headerlink" href="#enable" title="Permanent link">&para;</a></h4>
-<p>Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">boolean</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="name"><i class="fa fa-caret-right"></i> name<a class="headerlink" href="#name" title="Permanent link">&para;</a></h4>
-<p>The element name.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="value"><i class="fa fa-caret-right"></i> value<a class="headerlink" href="#value" title="Permanent link">&para;</a></h4>
-<p>Value of the element.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h3 id="public-member-functions"><i class="fa fa-code"></i> Public member functions<a class="headerlink" href="#public-member-functions" title="Permanent link">&para;</a></h3>
-<h4 id="typeof"><i class="fa fa-caret-right"></i> typeOf<a class="headerlink" href="#typeof" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">ACElement_t</span> <span style="color: #f8f8f2">typeOf(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-Returns type of AutoConnectElement.
-<dl class="apidl">
-    <dt><strong>Return value</strong></dt>
-    <dd>AC_Button</dd>
-</dl></p>
-<h2 id="autoconnectcheckbox">AutoConnectCheckbox<a class="headerlink" href="#autoconnectcheckbox" title="Permanent link">&para;</a></h2>
-<h3 id="constructor_1"><i class="fa fa-code"></i> Constructor<a class="headerlink" href="#constructor_1" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span>  <span style="color: #66d9ef">explicit</span> <span style="color: #f8f8f2">AutoConnectCheckboxBasis(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">name</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">value</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">label</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">checked</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">false)</span>
-</pre></div>
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">name</span><span class="apidesc">The element name.</span></dd>
-    <dd><span class="apidef">value</span><span class="apidesc">Value of the element.</span></dd>
-    <dd><span class="apidef">label</span><span class="apidesc">A label string prefixed to the checkbox.</span></dd>
-    <dd><span class="apidef">check</span><span class="apidesc">Checked state of the checkbox.</span></dd>
-</dl></p>
-<h3 id="public-member-variables_1"><i class="fa fa-code"></i> Public member variables<a class="headerlink" href="#public-member-variables_1" title="Permanent link">&para;</a></h3>
-<h4 id="checked"><i class="fa fa-caret-right"></i> checked<a class="headerlink" href="#checked" title="Permanent link">&para;</a></h4>
-<p>It indicates the checked status of the checkbox. The value of the checked checkbox element is packed in the query string and sent by submit.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">Boolean</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="enable_1"><i class="fa fa-caret-right"></i> enable<a class="headerlink" href="#enable_1" title="Permanent link">&para;</a></h4>
-<p>Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">boolean</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="label"><i class="fa fa-caret-right"></i> label<a class="headerlink" href="#label" title="Permanent link">&para;</a></h4>
-<p>A label is an optional string. A label is always arranged on the right side of the checkbox. Specification of a label will generate an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">label</span><span style="color: #f8f8f2">&gt;</span></code> tag with an <code>id</code> attribute. The checkbox and the label are connected by the id attribute.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="name_1"><i class="fa fa-caret-right"></i> name<a class="headerlink" href="#name_1" title="Permanent link">&para;</a></h4>
-<p>The element name. 
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="value_1"><i class="fa fa-caret-right"></i> value<a class="headerlink" href="#value_1" title="Permanent link">&para;</a></h4>
-<p>Value of the element. It becomes a value attribute of an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">input</span> <span style="color: #a6e22e">type</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;checkbox&quot;</span><span style="color: #f8f8f2">&gt;</span></code> tag.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h3 id="public-member-functions_1"><i class="fa fa-code"></i> Public member functions<a class="headerlink" href="#public-member-functions_1" title="Permanent link">&para;</a></h3>
-<h4 id="typeof_1"><i class="fa fa-caret-right"></i> typeOf<a class="headerlink" href="#typeof_1" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">ACElement_t</span> <span style="color: #f8f8f2">typeOf(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-Returns type of AutoConnectElement.
-<dl class="apidl">
-    <dt><strong>Return value</strong></dt>
-    <dd>AC_Checkbox</dd>
-</dl></p>
-<h2 id="autoconnectelement">AutoConnectElement<a class="headerlink" href="#autoconnectelement" title="Permanent link">&para;</a></h2>
-<h3 id="constructor_2"><i class="fa fa-code"></i> Constructor<a class="headerlink" href="#constructor_2" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectElement(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">name</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">value</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">name</span><span class="apidesc">The element name.</span></dd>
-    <dd><span class="apidef">value</span><span class="apidesc">Value of the element.</span></dd>
-</dl></p>
-<h3 id="public-member-variables_2"><i class="fa fa-code"></i> Public member variables<a class="headerlink" href="#public-member-variables_2" title="Permanent link">&para;</a></h3>
-<h4 id="enable_2"><i class="fa fa-caret-right"></i> enable<a class="headerlink" href="#enable_2" title="Permanent link">&para;</a></h4>
-<p>Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">boolean</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="name_2"><i class="fa fa-caret-right"></i> name<a class="headerlink" href="#name_2" title="Permanent link">&para;</a></h4>
-<p>The element name.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="value_2"><i class="fa fa-caret-right"></i> value<a class="headerlink" href="#value_2" title="Permanent link">&para;</a></h4>
-<p>Value of the element. It is output as HTML as it is as a source for generating HTML code.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h3 id="public-member-functions_2"><i class="fa fa-code"></i> Public member functions<a class="headerlink" href="#public-member-functions_2" title="Permanent link">&para;</a></h3>
-<h4 id="typeof_2"><i class="fa fa-caret-right"></i> typeOf<a class="headerlink" href="#typeof_2" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">ACElement_t</span> <span style="color: #f8f8f2">typeOf(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-Returns type of AutoConnectElement.
-<dl class="apidl">
-    <dt><strong>Return value</strong></dt>
-    <dd>AC_Element</dd>
-</dl></p>
-<h4 id="ast62"><i class="fa fa-caret-right"></i> as&lt;T><a class="headerlink" href="#ast62" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectElement</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">as</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">T</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-Casts the reference to the AutoConnectElement the specified type.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">T</span><span class="apidesc">The element type. AutoConnectElements type such as <a href="apielements.html#autoconnectbutton">AutoConnectButton</a>, <a href="apielements.html#autoconnectcheckbox">AutoConnectCheckbox</a>, <a href="apielements.html#autoconnectfile">AutoConnectFile</a>, <a href="apielements.html#autoconnectinput">AutoConnectInput</a>, <a href="apielements.html#autoconnectradio">AutoConnectRadio</a>, <a href="apielements.html#autoconnectselect">AutoConnectSelect</a>, <a href="apielements.html#autoconnectsubmit">AutoConnectSubmit</a>, <a href="apielements.html#autoconnecttext">AutoConnectText</a>.</span></dd>
-    <dt><strong>Return value</strong></dt>
-    <dd>A reference to the AutoConnectElement with actual type.</dd>
-</dl></p>
-<h2 id="autoconnectfile">AutoConnectFile<a class="headerlink" href="#autoconnectfile" title="Permanent link">&para;</a></h2>
-<h3 id="constructor_3"><i class="fa fa-code"></i> Constructor<a class="headerlink" href="#constructor_3" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectFile(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">name</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">value</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">label</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">ACFile_t</span> <span style="color: #f8f8f2">store</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">AC_File_FS)</span>
-</pre></div>
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">name</span><span class="apidesc">The element name.</span></dd>
-    <dd><span class="apidef">value</span><span class="apidesc">File name to be upload.</span></dd>
-    <dd><span class="apidef">label</span><span class="apidesc">Label string.</span></dd>
-    <dd><span class="apidef">store</span><span class="apidesc">The <strong>ACFile_t</strong> enumerator that represents the media to save the uploaded file.</span></dd></p>
-</dl>
-
-<h3 id="public-member-variables_3"><i class="fa fa-code"></i> Public member variables<a class="headerlink" href="#public-member-variables_3" title="Permanent link">&para;</a></h3>
-<h4 id="enable_3"><i class="fa fa-caret-right"></i> enable<a class="headerlink" href="#enable_3" title="Permanent link">&para;</a></h4>
-<p>Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">boolean</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="label_1"><i class="fa fa-caret-right"></i> label<a class="headerlink" href="#label_1" title="Permanent link">&para;</a></h4>
-<p>A label is an optional string. A label is always arranged on the left side of the file input box. Specification of a label will generate an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">label</span><span style="color: #f8f8f2">&gt;</span></code> tag with an id attribute. The file input box and the label are connected by the id attribute.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="mimetype"><i class="fa fa-caret-right"></i> mimeType<a class="headerlink" href="#mimetype" title="Permanent link">&para;</a></h4>
-<p>The mime type of the upload file which included as Media type in the http post request. Set by the client (usually the browser) that requested the upload. It is determined by the file type as <code>application/octet-stream</code>, <code>text</code> etc. which is described in <a href="https://www.iana.org/assignments/media-types/media-types.xhtml">IANA Media Type</a>.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="name_3"><i class="fa fa-caret-right"></i> name<a class="headerlink" href="#name_3" title="Permanent link">&para;</a></h4>
-<p>The element name.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="size"><i class="fa fa-caret-right"></i> size<a class="headerlink" href="#size" title="Permanent link">&para;</a></h4>
-<p>Size of the uploading file.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">size_t</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="store"><i class="fa fa-caret-right"></i> store<a class="headerlink" href="#store" title="Permanent link">&para;</a></h4>
-<p>Specifies the save destination of the uploaded file. You can use the built-in uploader to save uploaded file to the flash of the ESP8266/ESP32 module or external SD media without writing a dedicated sketch code. It also supports saving to any destination using a custom uploader that inherits from the AutoConnectUploadHandler class.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">ACFile_t</span><span class="apidesc"></p>
-<ul>
-<li><strong><code>AC_File_FS</code></strong> : Save the uploaded file to SPIFFS in the flash.</li>
-<li><strong><code>AC_File_SD</code></strong> : Save the uploaded file to SD.</li>
-<li><strong><code>AC_File_Extern</code></strong> : Save the file using your own upload handler.
-    </span></dd>
-</dl></li>
-</ul>
-<h4 id="value_3"><i class="fa fa-caret-right"></i> value<a class="headerlink" href="#value_3" title="Permanent link">&para;</a></h4>
-<p>File name to be upload. The value contains the value entered by the client browser to the <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">input</span> <span style="color: #a6e22e">type</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;file&quot;</span><span style="color: #f8f8f2">&gt;</span></code> tag and is read-only.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h3 id="public-member-functions_3"><i class="fa fa-code"></i> Public member functions<a class="headerlink" href="#public-member-functions_3" title="Permanent link">&para;</a></h3>
-<h4 id="typeof_3"><i class="fa fa-caret-right"></i> typeOf<a class="headerlink" href="#typeof_3" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">ACElement_t</span> <span style="color: #f8f8f2">typeOf(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-Returns type of AutoConnectFile.
-<dl class="apidl">
-    <dt><strong>Return value</strong></dt>
-    <dd>AC_File</dd>
-</dl></p>
-<h2 id="autoconnectinput">AutoConnectInput<a class="headerlink" href="#autoconnectinput" title="Permanent link">&para;</a></h2>
-<h3 id="constructor_4"><i class="fa fa-code"></i> Constructor<a class="headerlink" href="#constructor_4" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectInput(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">name</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">value</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">label</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">pattern</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">placeholder</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">name</span><span class="apidesc">The element name.</span></dd>
-    <dd><span class="apidef">value</span><span class="apidesc">Value of the element.</span></dd>
-    <dd><span class="apidef">label</span><span class="apidesc">Label string.</span></dd>
-    <dd><span class="apidef">pattern</span><span class="apidesc">Regular expression string for checking data format.</span></dd>
-    <dd><span class="apidef">placeholder</span><span class="apidesc">A placeholder string.</span></dd>
-</dl></p>
-<h3 id="public-member-variables_4"><i class="fa fa-code"></i> Public member variables<a class="headerlink" href="#public-member-variables_4" title="Permanent link">&para;</a></h3>
-<h4 id="enable_4"><i class="fa fa-caret-right"></i> enable<a class="headerlink" href="#enable_4" title="Permanent link">&para;</a></h4>
-<p>Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">boolean</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="label_2"><i class="fa fa-caret-right"></i> label<a class="headerlink" href="#label_2" title="Permanent link">&para;</a></h4>
-<p>A label is an optional string. A label is always arranged on the left side of the input box. Specification of a label will generate an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">label</span><span style="color: #f8f8f2">&gt;</span></code> tag with an id attribute. The input box and the label are connected by the id attribute.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="name_4"><i class="fa fa-caret-right"></i> name<a class="headerlink" href="#name_4" title="Permanent link">&para;</a></h4>
-<p>The element name.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="value_4"><i class="fa fa-caret-right"></i> value<a class="headerlink" href="#value_4" title="Permanent link">&para;</a></h4>
-<p>Value of the element. It becomes a value attribute of an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">input</span> <span style="color: #a6e22e">type</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;text&quot;</span><span style="color: #f8f8f2">&gt;</span></code> tag. An entered text in the custom Web page will be sent with a query string of the form. The value set before accessing the page is displayed as the initial value.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="pattern"><i class="fa fa-caret-right"></i> pattern<a class="headerlink" href="#pattern" title="Permanent link">&para;</a></h4>
-<p>A pattern specifies a regular expression that the input-box's value is checked against on form submission.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="placeholder"><i class="fa fa-caret-right"></i> placeholder<a class="headerlink" href="#placeholder" title="Permanent link">&para;</a></h4>
-<p>A placeholder is an option string. Specification of a placeholder will generate a <code>placeholder</code> attribute for the input tag.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h3 id="public-member-functions_4"><i class="fa fa-code"></i> Public member functions<a class="headerlink" href="#public-member-functions_4" title="Permanent link">&para;</a></h3>
-<h4 id="isvalid"><i class="fa fa-caret-right"></i> isValid<a class="headerlink" href="#isvalid" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">isValid(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-Evaluate the pattern as a regexp and return whether value matches. Always return true if the pattern is undefined.
-<dl class="apidl">
-    <dt><strong>Return value</strong></dt>
-    <dd><span class="apidef">true</span><span class="apidesc">The value matches a pattern.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">The value does not match a pattern.</span></dd>
-</dl></p>
-<h4 id="typeof_4"><i class="fa fa-caret-right"></i> typeOf<a class="headerlink" href="#typeof_4" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">ACElement_t</span> <span style="color: #f8f8f2">typeOf(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-Returns type of AutoConnectElement.
-<dl class="apidl">
-    <dt><strong>Return value</strong></dt>
-    <dd>AC_Input</dd>
-</dl></p>
-<h2 id="autoconnectradio">AutoConnectRadio<a class="headerlink" href="#autoconnectradio" title="Permanent link">&para;</a></h2>
-<h3 id="constructor_5"><i class="fa fa-code"></i> Constructor<a class="headerlink" href="#constructor_5" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectRadio(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">name</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">std</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">vector</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">String</span><span style="color: #f92672">&gt;</span> <span style="color: #66d9ef">const</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">values</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">{},</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">label</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">ACArrange_t</span> <span style="color: #f8f8f2">order</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">AC_Vertical,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">uint8_t</span> <span style="color: #f8f8f2">checked</span> <span style="color: #f92672">=</span> <span style="color: #ae81ff">0</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">name</span><span class="apidesc">The element name.</span></dd>
-    <dd><span class="apidef">values</span><span class="apidesc">An array of values of the radio buttons. Specifies a <a href="https://en.cppreference.com/w/cpp/container/vector">std::vector</a> object.</span></dd>
-    <dd><span class="apidef">label</span><span class="apidesc">Label string.</span></dd>
-    <dd><span class="apidef">order</span><span class="apidesc">The direction to arrange the radio buttons.</span></dd>
-    <dd><span class="apidef">checked</span><span class="apidesc">An index to be checked in the radio buttons.</span></dd>
-</dl></p>
-<h3 id="public-member-variables_5"><i class="fa fa-code"></i> Public member variables<a class="headerlink" href="#public-member-variables_5" title="Permanent link">&para;</a></h3>
-<h4 id="checked_1"><i class="fa fa-caret-right"></i> checked<a class="headerlink" href="#checked_1" title="Permanent link">&para;</a></h4>
-<p>Specifies the index number (1-based) of the <strong>values</strong> to be checked. If this parameter is not specified neither item is checked.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">uint8_t</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="enable_5"><i class="fa fa-caret-right"></i> enable<a class="headerlink" href="#enable_5" title="Permanent link">&para;</a></h4>
-<p>Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">boolean</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="label_3"><i class="fa fa-caret-right"></i> label<a class="headerlink" href="#label_3" title="Permanent link">&para;</a></h4>
-<p>A label is an optional string. A label will be arranged in the left or top of the radio buttons according to the <a href="#order">order</a>.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="name_5"><i class="fa fa-caret-right"></i> name<a class="headerlink" href="#name_5" title="Permanent link">&para;</a></h4>
-<p>The element name.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="order"><i class="fa fa-caret-right"></i> order<a class="headerlink" href="#order" title="Permanent link">&para;</a></h4>
-<p>Specifies the direction to arrange the radio buttons. A label will place in the left or the top according to the <strong><em>order</em></strong>. It is a value of <strong>ACArrange_t</strong> type and accepts one of the following:
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">ACArrange_t</span><span class="apidesc"></p>
-<ul>
-<li><strong><code>AC_Horizontal</code></strong> : Horizontal arrangement.</li>
-<li><strong><code>AC_Vertical</code></strong> : Vertical arrangement.
-    </span></dd>
-</dl></li>
-</ul>
-<h4 id="values"><i class="fa fa-caret-right"></i> values<a class="headerlink" href="#values" title="Permanent link">&para;</a></h4>
-<p>An array of String type for the radio button options. It is an initialization list can be used. The <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">input</span> <span style="color: #a6e22e">type</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;radio&quot;</span><span style="color: #f8f8f2">&gt;</span></code> tags will be generated from each entry in the values.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">std::vector&lt;String&gt;</span><span class="apidesc"></span></dd>
-</dl></p>
-<h3 id="public-member-functions_5"><i class="fa fa-code"></i> Public member functions<a class="headerlink" href="#public-member-functions_5" title="Permanent link">&para;</a></h3>
-<h4 id="add"><i class="fa fa-caret-right"></i> add<a class="headerlink" href="#add" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">add(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">value)</span>
-</pre></div>
-Adds an option for the radio button.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">value</span><span class="apidesc">An option string to add to the radio button.</span></dd>
-</dl></p>
-<h4 id="check"><i class="fa fa-caret-right"></i> check<a class="headerlink" href="#check" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">check(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">value)</span>
-</pre></div>
-Indicates the check of the specified option for the radio buttons. You can use the <strong>check</strong> function for checking dynamically with arbitrary of the radio button.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">value</span><span class="apidesc">An option string to be checked.</span></dd>
-</dl></p>
-<h4 id="empty"><i class="fa fa-caret-right"></i> empty<a class="headerlink" href="#empty" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">empty(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">size_t</span> <span style="color: #f8f8f2">reserve</span> <span style="color: #f92672">=</span> <span style="color: #ae81ff">0</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-Clear the array of option strings that AutoConnectRadio has in the values. When the <strong><em>reserve</em></strong> parameter is specified, a vector container of that size is reserved.</p>
-<p>The empty function resets the checked value to zero. When the empty function is executed, any button will be turned off.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">reserve</span><span class="apidesc">Reserved size of a container for the radio button option strings.</span></dd>
-</dl></p>
-<h4 id="operator"><i class="fa fa-caret-right"></i> operator &#91;&nbsp;&#93;<a class="headerlink" href="#operator" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #66d9ef">operator</span><span style="color: #f8f8f2">[]</span> <span style="color: #f8f8f2">(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">std</span><span style="color: #f92672">::</span><span style="color: #66d9ef">size_t</span> <span style="color: #f8f8f2">n)</span>
-</pre></div>
-Returns a value string of the index specified by <strong><em>n</em></strong>.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">n</span><span class="apidesc">Index of values array to return. Its base number is 0.</span></dd>
-    <dt><strong>Return value</strong></dt>
-    <dd>A reference of a value string indexed by the specified the <strong>n</strong>.</dd>
-</dl></p>
-<h4 id="size_1"><i class="fa fa-caret-right"></i> size<a class="headerlink" href="#size_1" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">size_t</span> <span style="color: #f8f8f2">size(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-Returns number of options which contained.
-<dl class="apidl">
-    <dt><strong>Return value</strong></dt>
-    <dd>Number of options which contained.</dd>
-</dl></p>
-<h4 id="typeof_5"><i class="fa fa-caret-right"></i> typeOf<a class="headerlink" href="#typeof_5" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">ACElement_t</span> <span style="color: #f8f8f2">typeOf(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-Returns type of AutoConnectElement.
-<dl class="apidl">
-    <dt><strong>Return value</strong></dt>
-    <dd>AC_Radio</dd>
-</dl></p>
-<h4 id="value_5"><i class="fa fa-caret-right"></i> value<a class="headerlink" href="#value_5" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span>  <span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">value(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span> <span style="color: #66d9ef">const</span>
-</pre></div>
-Returns current checked option of the radio buttons.
-<dl class="apidl">
-    <dt><strong>Return value</strong></dt>
-    <dd>A String of an option current checked. If there is no checked option, a null string returned.</dd>
-</dl></p>
-<h2 id="autoconnectselect">AutoConnectSelect<a class="headerlink" href="#autoconnectselect" title="Permanent link">&para;</a></h2>
-<h3 id="constructor_6"><i class="fa fa-code"></i> Constructor<a class="headerlink" href="#constructor_6" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectSelect(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">name</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">std</span><span style="color: #f92672">::</span><span style="color: #f8f8f2">vector</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">String</span><span style="color: #f92672">&gt;</span> <span style="color: #66d9ef">const</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">options</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">{},</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">label</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">uint8_t</span> <span style="color: #f8f8f2">selected</span> <span style="color: #f92672">=</span> <span style="color: #ae81ff">0</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">name</span><span class="apidesc">The element name.</span></dd>
-    <dd><span class="apidef">options</span><span class="apidesc">An array of options of the select element. Specifies a <a href="https://en.cppreference.com/w/cpp/container/vector">std::vector</a> object.</span></dd>
-    <dd><span class="apidef">label</span><span class="apidesc">Label string.</span></dd>
-    <dd><span class="apidef">selected</span><span class="apidesc">An option should be pre-selected when the page loads.</span></dd>
-</dl></p>
-<h3 id="public-member-variables_6"><i class="fa fa-code"></i> Public member variables<a class="headerlink" href="#public-member-variables_6" title="Permanent link">&para;</a></h3>
-<h4 id="enable_6"><i class="fa fa-caret-right"></i> enable<a class="headerlink" href="#enable_6" title="Permanent link">&para;</a></h4>
-<p>Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">boolean</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="name_6"><i class="fa fa-caret-right"></i> name<a class="headerlink" href="#name_6" title="Permanent link">&para;</a></h4>
-<p>The element name.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="label_4"><i class="fa fa-caret-right"></i> label<a class="headerlink" href="#label_4" title="Permanent link">&para;</a></h4>
-<p>A label is an optional string. A label will be arranged in the top of the selection list.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="options"><i class="fa fa-caret-right"></i> options<a class="headerlink" href="#options" title="Permanent link">&para;</a></h4>
-<p>An array of String type for the selection options. It is an initialization list can be used. The <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">option</span> <span style="color: #a6e22e">value</span><span style="color: #f8f8f2">&gt;</span></code> tags will be generated from each entry in the options.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">std::vector&lt;String&gt;</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="selected"><i class="fa fa-caret-right"></i> selected<a class="headerlink" href="#selected" title="Permanent link">&para;</a></h4>
-<p>A <code>selected</code> is an optional value. Specifies 1-based index value of an options array that an option should be pre-selected when the page loads.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">uint8_t</span><span class="apidesc"></span></dd>
-</dl></p>
-<h3 id="public-member-functions_6"><i class="fa fa-code"></i> Public member functions<a class="headerlink" href="#public-member-functions_6" title="Permanent link">&para;</a></h3>
-<h4 id="add_1"><i class="fa fa-caret-right"></i> add<a class="headerlink" href="#add_1" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">add(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">option)</span>
-</pre></div>
-Adds a selectable option string for the selection list.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">option</span><span class="apidesc">A string of selectable item to be contained in the select element.</span></dd>
-</dl></p>
-<h4 id="empty_1"><i class="fa fa-caret-right"></i> empty<a class="headerlink" href="#empty_1" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span> <span style="color: #f8f8f2">empty(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">size_t</span> <span style="color: #f8f8f2">reserve</span> <span style="color: #f92672">=</span> <span style="color: #ae81ff">0</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-Clear the array of options list that AutoConnectSelect has in the options. When the <strong><em>reserve</em></strong> parameter is specified, a vector container of that size is reserved.</p>
-<p>The empty function resets the selected value to zero. When the empty function is executed, there are no selected options and the first item is placed at the beginning.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">reserve</span><span class="apidesc">Reserved size of a container for the options.</span></dd>
-</dl></p>
-<h4 id="operator_1"><i class="fa fa-caret-right"></i> operator &#91;&nbsp;&#93;<a class="headerlink" href="#operator_1" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #66d9ef">operator</span><span style="color: #f8f8f2">[]</span> <span style="color: #f8f8f2">(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">std</span><span style="color: #f92672">::</span><span style="color: #66d9ef">size_t</span> <span style="color: #f8f8f2">n)</span>
-</pre></div>
-Returns an option string of the index specified by <strong><em>n</em></strong>.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">n</span><span class="apidesc">Index of options array to return. Its base number is 0.</span></dd>
-    <dt><strong>Return value</strong></dt>
-    <dd>A reference of a option string indexed by the specified the <strong>n</strong>.</dd>
-</dl></p>
-<h4 id="select"><i class="fa fa-caret-right"></i> select<a class="headerlink" href="#select" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">void</span>  <span style="color: #a6e22e">select</span><span style="color: #f8f8f2">(</span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">value);</span>
-</pre></div>
-Selects an option with the value.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">value</span><span class="apidesc">String value that option should be selected in an option array.</span></dd>
-</dl></p>
-<h4 id="size_2"><i class="fa fa-caret-right"></i> size<a class="headerlink" href="#size_2" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">size_t</span> <span style="color: #f8f8f2">size(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-Returns number of options which contained.
-<dl class="apidl">
-    <dt><strong>Return value</strong></dt>
-    <dd>Number of options which contained.</dd>
-</dl></p>
-<h4 id="typeof_6"><i class="fa fa-caret-right"></i> typeOf<a class="headerlink" href="#typeof_6" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">ACElement_t</span> <span style="color: #f8f8f2">typeOf(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-Returns type of AutoConnectElement.
-<dl class="apidl">
-    <dt><strong>Return value</strong></dt>
-    <dd>AC_Select</dd>
-</dl></p>
-<h4 id="value_6"><i class="fa fa-caret-right"></i> value<a class="headerlink" href="#value_6" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">const</span> <span style="color: #f8f8f2">String</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">value(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span> <span style="color: #66d9ef">const</span><span style="color: #f8f8f2">;</span>
-</pre></div>
-Returns current selected option of the select list.
-<dl class="apidl">
-    <dt><strong>Return value</strong></dt>
-    <dd>A String of an option current selected. If there is no select option, a null string returned.</dd>
-</dl></p>
-<h2 id="autoconnectsubmit">AutoConnectSubmit<a class="headerlink" href="#autoconnectsubmit" title="Permanent link">&para;</a></h2>
-<h3 id="constructor_7"><i class="fa fa-code"></i> Constructor<a class="headerlink" href="#constructor_7" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectSubmit(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">name</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">value</span> <span style="color: #f92672">=</span><span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">uri</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">name</span><span class="apidesc">The element name.</span></dd>
-    <dd><span class="apidef">value</span><span class="apidesc">The name of the submit button as an HTML <code class="codehilite"><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">input</span> <span style="color: #a6e22e">type</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;button&quot;</span><span style="color: #f8f8f2">&gt;</span></code> tag, it will also be the label of the button.</span></dd>
-    <dd><span class="apidef">uri</span><span class="apidesc">Destination URI.</span></dd>
-</dl></p>
-<h3 id="public-member-variables_7"><i class="fa fa-code"></i> Public member variables<a class="headerlink" href="#public-member-variables_7" title="Permanent link">&para;</a></h3>
-<h4 id="enable_7"><i class="fa fa-caret-right"></i> enable<a class="headerlink" href="#enable_7" title="Permanent link">&para;</a></h4>
-<p>Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">boolean</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="name_7"><i class="fa fa-caret-right"></i> name<a class="headerlink" href="#name_7" title="Permanent link">&para;</a></h4>
-<p>The element name.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="uri"><i class="fa fa-caret-right"></i> uri<a class="headerlink" href="#uri" title="Permanent link">&para;</a></h4>
-<p>Destination URI.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="value_7"><i class="fa fa-caret-right"></i> value<a class="headerlink" href="#value_7" title="Permanent link">&para;</a></h4>
-<p>The name of the submit button. It will also be the label of the button.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h3 id="public-member-functions_7"><i class="fa fa-code"></i> Public member functions<a class="headerlink" href="#public-member-functions_7" title="Permanent link">&para;</a></h3>
-<h4 id="typeof_7"><i class="fa fa-caret-right"></i> typeOf<a class="headerlink" href="#typeof_7" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">ACElement_t</span> <span style="color: #f8f8f2">typeOf(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-Returns type of AutoConnectElement.
-<dl class="apidl">
-    <dt><strong>Return value</strong></dt>
-    <dd>AC_Submit</dd>
-</dl></p>
-<h2 id="autoconnecttext">AutoConnectText<a class="headerlink" href="#autoconnecttext" title="Permanent link">&para;</a></h2>
-<h3 id="constructor_8"><i class="fa fa-code"></i> Constructor<a class="headerlink" href="#constructor_8" title="Permanent link">&para;</a></h3>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectText(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">name</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">value</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">style</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">format</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">name</span><span class="apidesc">The element name.</span></dd>
-    <dd><span class="apidef">value</span><span class="apidesc">String of content for the text element.</span></dd>
-    <dd><span class="apidef">style</span><span class="apidesc">A style code with CSS format that qualifiers the text.</span></dd>
-    <dd><span class="apidef">format</span><span class="apidesc">A pointer to a null-terminated multibyte string specifying how to interpret the value. It specifies the conversion format when outputting values. The format string conforms to C-style printf library functions</span></dd>
-</dl></p>
-<h3 id="public-member-variables_8"><i class="fa fa-code"></i> Public member variables<a class="headerlink" href="#public-member-variables_8" title="Permanent link">&para;</a></h3>
-<h4 id="enable_8"><i class="fa fa-caret-right"></i> enable<a class="headerlink" href="#enable_8" title="Permanent link">&para;</a></h4>
-<p>Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">boolean</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="format"><i class="fa fa-caret-right"></i> format<a class="headerlink" href="#format" title="Permanent link">&para;</a></h4>
-<p>The conversion format when outputting values. The format string conforms to C-style printf library functions.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="name_8"><i class="fa fa-caret-right"></i> name<a class="headerlink" href="#name_8" title="Permanent link">&para;</a></h4>
-<p>The element name.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="style"><i class="fa fa-caret-right"></i> style<a class="headerlink" href="#style" title="Permanent link">&para;</a></h4>
-<p>A style code with CSS format that qualifiers the text.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h4 id="value_8"><i class="fa fa-caret-right"></i> value<a class="headerlink" href="#value_8" title="Permanent link">&para;</a></h4>
-<p>A content string of the text element.
-<dl class="apidl">
-    <dt><strong>Type</strong></dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl></p>
-<h3 id="public-member-functions_8"><i class="fa fa-code"></i> Public member functions<a class="headerlink" href="#public-member-functions_8" title="Permanent link">&para;</a></h3>
-<h4 id="typeof_8"><i class="fa fa-caret-right"></i> typeOf<a class="headerlink" href="#typeof_8" title="Permanent link">&para;</a></h4>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">ACElement_t</span> <span style="color: #f8f8f2">typeOf(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-Returns type of AutoConnectElement.
-<dl class="apidl">
-    <dt><strong>Return value</strong></dt>
-    <dd>AC_Text</dd>
-</dl></p>
-<div class="footnote">
-<hr />
-<ol>
-<li id="fn:1">
-<p>JavaScript can be inserted into a custom Web page using AutoConnectElement.&#160;<a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p>
-</li>
-</ol>
-</div></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>AutoConnectConfig API</span></div></a><a href="apiextra.html" title="Something extra" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>Something extra</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/apiextra.html b/lib/AutoConnect-master/docs/apiextra.html
deleted file mode 100644
index 8f45485e65769f08ebaa12b9116ed68016edb3a9..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/apiextra.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/apiextra.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>Something extra - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#icons" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">Something extra</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--active md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7" checked><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">Something extra</label><a href="apiextra.html" title="Something extra" class="md-nav__link md-nav__link--active">Something extra</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#icons" title=" Icons" class="md-nav__link"> Icons</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#icons" title=" Icons" class="md-nav__link"> Icons</a></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>Something extra</h1><h2 id="icons"><i class="fa fa-gift"></i> Icons<a class="headerlink" href="#icons" title="Permanent link">&para;</a></h2>
-<p>The library presents two PNG icons which can be used to embed a hyperlink to the AutoConnect menu.</p>
-<ul>
-<li>Bar type <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAApklEQVRYR2NkGGDAOMD2M4w6YDQEkEMgEJggZwCxGI0T5mug+alAvBFkD7IDXtLBcpjfXgEZ4ugOeAETpHEIgIwHeVYC3QH+0CgAS9AQgCwHRcFmdAfQ0E7cRo9mw0EVAqPlAKhwEKVTVsBZDsyiQ2k4Wg6gxPKgyoZ0Sn+o1iCHQBBQaiYQi9DYJTjbAyAJWluOtz0wWg7QOOqxGz+aDUdDYMBDAACA0x4hs/MPrwAAAABJRU5ErkJggg==" title="AutoConnect menu" alt="AutoConnect menu" /></li>
-<li>Cog type <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAC2klEQVRIS61VvWsUQRSfmU2pon9BUIkQUaKFaCBKgooSb2d3NSSFKbQR/KrEIiIKBiGF2CgRxEpjQNHs7mwOUcghwUQ7g58IsbGxEBWsb2f8zR177s3t3S2cA8ftzPu993vzvoaSnMu2vRKlaqgKp74Q/tE8qjQPyHGcrUrRjwlWShmDbFMURd/a6TcQwNiYUmpFCPElUebcuQ2vz6aNATMVReHEPwzfSSntDcNwNo2rI+DcvQzhpAbA40VKyV0p1Q9snzBG1qYVcYufXV1sREraDcxpyHdXgkfpRBj6Uwm2RsC5dxxmZ9pdOY9cKTISRcHTCmGiUCh4fYyplTwG2mAUbtMTBMHXOgK9QfyXEZr+TkgQ1oUwDA40hEgfIAfj+HuQRaBzAs9eKyUZ5Htx+T3ZODKG8DzOJMANhmGomJVMXPll+hx9UUAlzZrJJ4QNCDG3VEfguu7mcpmcB/gkBOtShhQhchAlu5jlLUgc9ENgyP5gf9+y6LTv+58p5zySkgwzLNOIGc8sEoT1Lc53NMlbCQQuvMxeCME1NNPVVkmH/i3IzzXDtCSA0qQQwZWOCJDY50jsQRjJmkslEOxvTcDRO6zPxOh5xZglKkYLhWM9jMVnkIsTyMT6NBj7IbOCEjm6HxNVVTo2WXqEWJZ1T8rytB6GxizyDkPhWVpBqfiXUtbo/HywYJSpA9kMamNNPZ71R9Hcm+TMHHZNGw3EuraXEUldbfvw25UdOjqOt+JhMwJd7+jSTpZaEiIcaCDwPK83jtWnTkwnunFMtxeL/ge9r4XItt1RNNaj/0GAcV2bR3U5sG3nEh6M61US+Qrfd9Bs31GGulI2GOS/8dgcQZV1w+ApjIxB7TDwF9GcNzJzoA+rD0/8HvPnXQJCt2qFCwbBTfRI7UyXumWVt+HJ9NO4XI++bdsb0YyrqXmlh+AWOLHaLqS5CLQR5EggR3YlcVS9gKeH2hnX8r8Kmi1CAsl36QAAAABJRU5ErkJggg==" title="AutoConnect menu" alt="AutoConnect menu" /></li>
-</ul>
-<p>To reference the icon, use the <strong>AUTOCONNECT_LINK</strong> macro in the sketch. It expands into the string literal as an HTML <code>&lt;a&gt;&lt;/a&gt;</code> tag with PNG embedded of the AutoConnect menu hyperlinks. Icon type is specified by the parameter of the macro.</p>
-<dl class="apidl">
-    <dd><span class="apidef">BAR_24</span>Bars icon, 24x24.</dd>
-    <dd><span class="apidef">BAR_32</span>Bars icon, 32x32.</dd>
-    <dd><span class="apidef">BAR_48</span>Bars icon, 48x48.</dd>
-    <dd><span class="apidef">COG_24</span>Cog icon, 24x24.</dd>
-    <dd><span class="apidef">COG_32</span>Cog icon, 32x32.</dd>
-</dl>
-
-<div class="admonition note">
-<p class="admonition-title">Usage</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">String</span> <span style="color: #f8f8f2">html</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&lt;html&gt;&quot;</span><span style="color: #f8f8f2">;</span>
-<span style="color: #f8f8f2">html</span> <span style="color: #f92672">+=</span> <span style="color: #f8f8f2">AUTOCONNECT_LINK(BAR_32);</span>
-<span style="color: #f8f8f2">html</span> <span style="color: #f92672">+=</span> <span style="color: #e6db74">&quot;&lt;/html&gt;&quot;</span><span style="color: #f8f8f2">;</span>
-<span style="color: #f8f8f2">server.send(</span><span style="color: #ae81ff">200</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;text/html&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">html);</span>
-</pre></div>
-
-</div></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="apielements.html" title="AutoConnectElements API" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>AutoConnectElements API</span></div></a><a href="howtoembed.html" title="How to embed" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>How to embed</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/fonts/font-awesome.css b/lib/AutoConnect-master/docs/assets/fonts/font-awesome.css
deleted file mode 100644
index b476b53e33b5789396e2b48d44c8abc07a037db3..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/fonts/font-awesome.css
+++ /dev/null
@@ -1,4 +0,0 @@
-/*!
- *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
- *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
- */@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url("specimen/FontAwesome.woff2") format("woff2"),url("specimen/FontAwesome.woff") format("woff"),url("specimen/FontAwesome.ttf") format("truetype")}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1,1);-ms-transform:scale(-1,1);transform:scale(-1,1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1,-1);-ms-transform:scale(1,-1);transform:scale(1,-1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/fonts/material-icons.css b/lib/AutoConnect-master/docs/assets/fonts/material-icons.css
deleted file mode 100644
index d23d365ed668bd6471ec31215d728da50a68f403..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/fonts/material-icons.css
+++ /dev/null
@@ -1,13 +0,0 @@
-/*!
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy
- * of the License at:
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING, SOFTWARE
- * DISTRIBUTED UNDER THE LICENSE IS DISTRIBUTED ON AN "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
- * SEE THE LICENSE FOR THE SPECIFIC LANGUAGE GOVERNING PERMISSIONS AND
- * LIMITATIONS UNDER THE LICENSE.
- */@font-face{font-family:"Material Icons";font-style:normal;font-weight:400;src:local("Material Icons"),local("MaterialIcons-Regular"),url("specimen/MaterialIcons-Regular.woff2") format("woff2"),url("specimen/MaterialIcons-Regular.woff") format("woff"),url("specimen/MaterialIcons-Regular.ttf") format("truetype")}
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/fonts/specimen/FontAwesome.ttf b/lib/AutoConnect-master/docs/assets/fonts/specimen/FontAwesome.ttf
deleted file mode 100644
index 35acda2fa1196aad98c2adf4378a7611dd713aa3..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/assets/fonts/specimen/FontAwesome.ttf and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/assets/fonts/specimen/FontAwesome.woff b/lib/AutoConnect-master/docs/assets/fonts/specimen/FontAwesome.woff
deleted file mode 100644
index 400014a4b06eee3d0c0d54402a47ab2601b2862b..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/assets/fonts/specimen/FontAwesome.woff and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/assets/fonts/specimen/FontAwesome.woff2 b/lib/AutoConnect-master/docs/assets/fonts/specimen/FontAwesome.woff2
deleted file mode 100644
index 4d13fc60404b91e398a37200c4a77b645cfd9586..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/assets/fonts/specimen/FontAwesome.woff2 and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/assets/fonts/specimen/MaterialIcons-Regular.ttf b/lib/AutoConnect-master/docs/assets/fonts/specimen/MaterialIcons-Regular.ttf
deleted file mode 100644
index 7015564ad166a3e9d88c82f17829f0cc01ebe29a..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/assets/fonts/specimen/MaterialIcons-Regular.ttf and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/assets/fonts/specimen/MaterialIcons-Regular.woff b/lib/AutoConnect-master/docs/assets/fonts/specimen/MaterialIcons-Regular.woff
deleted file mode 100644
index b648a3eea2d16b6ce783906d6b7d5f251b9eb56c..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/assets/fonts/specimen/MaterialIcons-Regular.woff and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/assets/fonts/specimen/MaterialIcons-Regular.woff2 b/lib/AutoConnect-master/docs/assets/fonts/specimen/MaterialIcons-Regular.woff2
deleted file mode 100644
index 9fa211252080046a23b2449dbdced6abc2b0bb34..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/assets/fonts/specimen/MaterialIcons-Regular.woff2 and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/assets/images/favicon.png b/lib/AutoConnect-master/docs/assets/images/favicon.png
deleted file mode 100644
index 76d17f57ad903c3ea2f1b564cafb95bf9af84ee3..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/assets/images/favicon.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/assets/images/icons/bitbucket.1b09e088.svg b/lib/AutoConnect-master/docs/assets/images/icons/bitbucket.1b09e088.svg
deleted file mode 100644
index cf58c14fbc67be0626eb95a0a8fc68baa8c2ac03..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/images/icons/bitbucket.1b09e088.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="352" height="448" viewBox="0 0 352 448" id="__bitbucket"><path fill="currentColor" d="M203.75 214.75q2 15.75-12.625 25.25t-27.875 1.5q-9.75-4.25-13.375-14.5t-.125-20.5 13-14.5q9-4.5 18.125-3t16 8.875 6.875 16.875zm27.75-5.25q-3.5-26.75-28.25-41T154 165.25q-15.75 7-25.125 22.125t-8.625 32.375q1 22.75 19.375 38.75t41.375 14q22.75-2 38-21t12.5-42zM291.25 74q-5-6.75-14-11.125t-14.5-5.5T245 54.25q-72.75-11.75-141.5.5-10.75 1.75-16.5 3t-13.75 5.5T60.75 74q7.5 7 19 11.375t18.375 5.5T120 93.75Q177 101 232 94q15.75-2 22.375-3t18.125-5.375T291.25 74zm14.25 258.75q-2 6.5-3.875 19.125t-3.5 21-7.125 17.5-14.5 14.125q-21.5 12-47.375 17.875t-50.5 5.5-50.375-4.625q-11.5-2-20.375-4.5T88.75 412 70.5 401.125t-13-15.375q-6.25-24-14.25-73l1.5-4 4.5-2.25q55.75 37 126.625 37t126.875-37q5.25 1.5 6 5.75t-1.25 11.25-2 9.25zM350.75 92.5q-6.5 41.75-27.75 163.75-1.25 7.5-6.75 14t-10.875 10T291.75 288q-63 31.5-152.5 22-62-6.75-98.5-34.75-3.75-3-6.375-6.625t-4.25-8.75-2.25-8.5-1.5-9.875T25 232.75q-2.25-12.5-6.625-37.5t-7-40.375T5.5 118 0 78.5Q.75 72 4.375 66.375T12.25 57t11.25-7.5T35 43.875t12-4.625q31.25-11.5 78.25-16 94.75-9.25 169 12.5Q333 47.25 348 66.25q4 5 4.125 12.75t-1.375 13.5z"/></svg>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/images/icons/github.f0b8504a.svg b/lib/AutoConnect-master/docs/assets/images/icons/github.f0b8504a.svg
deleted file mode 100644
index 3d13b1975139abbb5a4bcc84e6bfff7cd57a4d51..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/images/icons/github.f0b8504a.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/images/icons/gitlab.6dd19c00.svg b/lib/AutoConnect-master/docs/assets/images/icons/gitlab.6dd19c00.svg
deleted file mode 100644
index 1d9fffa74fbf58a10a208a481f16e53334db805f..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/images/icons/gitlab.6dd19c00.svg
+++ /dev/null
@@ -1 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" width="500" height="500" viewBox="0 0 500 500" id="__gitlab"><path fill="currentColor" d="M93.667 473.347l90.684-279.097H2.983l90.684 279.097z" transform="translate(156.198 1.16)"/><path fill="currentColor" d="M221.333 473.345L130.649 194.25H3.557l217.776 279.095z" transform="translate(28.531 1.16)" opacity=".7"/><path fill="currentColor" d="M32 195.155L4.441 279.97a18.773 18.773 0 0 0 6.821 20.99l238.514 173.29L32 195.155z" transform="translate(.089 .256)" opacity=".5"/><path fill="currentColor" d="M2.667-84.844h127.092L75.14-252.942c-2.811-8.649-15.047-8.649-17.856 0L2.667-84.844z" transform="translate(29.422 280.256)"/><path fill="currentColor" d="M2.667 473.345L93.351 194.25h127.092L2.667 473.345z" transform="translate(247.198 1.16)" opacity=".7"/><path fill="currentColor" d="M221.334 195.155l27.559 84.815a18.772 18.772 0 0 1-6.821 20.99L3.557 474.25l217.777-279.095z" transform="translate(246.307 .256)" opacity=".5"/><path fill="currentColor" d="M130.667-84.844H3.575l54.618-168.098c2.811-8.649 15.047-8.649 17.856 0l54.618 168.098z" transform="translate(336.974 280.256)"/></svg>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/application.b260a35d.js b/lib/AutoConnect-master/docs/assets/javascripts/application.b260a35d.js
deleted file mode 100644
index f41d78cd47887de3f88ee49a9797c44960447f79..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/application.b260a35d.js
+++ /dev/null
@@ -1,6 +0,0 @@
-!function(e,t){for(var n in t)e[n]=t[n]}(window,function(n){var r={};function i(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}return i.m=n,i.c=r,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)i.d(n,r,function(e){return t[e]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=13)}([function(e,t,n){"use strict";var r={Listener:function(){function e(e,t,n){var r=this;this.els_=Array.prototype.slice.call("string"==typeof e?document.querySelectorAll(e):[].concat(e)),this.handler_="function"==typeof n?{update:n}:n,this.events_=[].concat(t),this.update_=function(e){return r.handler_.update(e)}}var t=e.prototype;return t.listen=function(){var n=this;this.els_.forEach(function(t){n.events_.forEach(function(e){t.addEventListener(e,n.update_,!1)})}),"function"==typeof this.handler_.setup&&this.handler_.setup()},t.unlisten=function(){var n=this;this.els_.forEach(function(t){n.events_.forEach(function(e){t.removeEventListener(e,n.update_)})}),"function"==typeof this.handler_.reset&&this.handler_.reset()},e}(),MatchMedia:function(e,t){this.handler_=function(e){e.matches?t.listen():t.unlisten()};var n=window.matchMedia(e);n.addListener(this.handler_),this.handler_(n)}},i={Shadow:function(){function e(e,t){var n="string"==typeof e?document.querySelector(e):e;if(!(n instanceof HTMLElement&&n.parentNode instanceof HTMLElement))throw new ReferenceError;if(this.el_=n.parentNode,!((n="string"==typeof t?document.querySelector(t):t)instanceof HTMLElement))throw new ReferenceError;this.header_=n,this.height_=0,this.active_=!1}var t=e.prototype;return t.setup=function(){for(var e=this.el_;e=e.previousElementSibling;){if(!(e instanceof HTMLElement))throw new ReferenceError;this.height_+=e.offsetHeight}this.update()},t.update=function(e){if(!e||"resize"!==e.type&&"orientationchange"!==e.type){var t=window.pageYOffset>=this.height_;t!==this.active_&&(this.header_.dataset.mdState=(this.active_=t)?"shadow":"")}else this.height_=0,this.setup()},t.reset=function(){this.header_.dataset.mdState="",this.height_=0,this.active_=!1},e}(),Title:function(){function e(e,t){var n="string"==typeof e?document.querySelector(e):e;if(!(n instanceof HTMLElement))throw new ReferenceError;if(this.el_=n,!((n="string"==typeof t?document.querySelector(t):t)instanceof HTMLHeadingElement))throw new ReferenceError;this.header_=n,this.active_=!1}var t=e.prototype;return t.setup=function(){var t=this;Array.prototype.forEach.call(this.el_.children,function(e){e.style.width=t.el_.offsetWidth-20+"px"})},t.update=function(e){var t=this,n=window.pageYOffset>=this.header_.offsetTop;n!==this.active_&&(this.el_.dataset.mdState=(this.active_=n)?"active":""),"resize"!==e.type&&"orientationchange"!==e.type||Array.prototype.forEach.call(this.el_.children,function(e){e.style.width=t.el_.offsetWidth-20+"px"})},t.reset=function(){this.el_.dataset.mdState="",this.el_.style.width="",this.active_=!1},e}()},o={Blur:function(){function e(e){this.els_="string"==typeof e?document.querySelectorAll(e):e,this.index_=0,this.offset_=window.pageYOffset,this.dir_=!1,this.anchors_=[].reduce.call(this.els_,function(e,t){var n=decodeURIComponent(t.hash);return e.concat(document.getElementById(n.substring(1))||[])},[])}var t=e.prototype;return t.setup=function(){this.update()},t.update=function(){var e=window.pageYOffset,t=this.offset_-e<0;if(this.dir_!==t&&(this.index_=this.index_=t?0:this.els_.length-1),0!==this.anchors_.length){if(this.offset_<=e)for(var n=this.index_+1;n<this.els_.length&&this.anchors_[n].offsetTop-80<=e;n++)0<n&&(this.els_[n-1].dataset.mdState="blur"),this.index_=n;else for(var r=this.index_;0<=r;r--){if(!(this.anchors_[r].offsetTop-80>e)){this.index_=r;break}0<r&&(this.els_[r-1].dataset.mdState="")}this.offset_=e,this.dir_=t}},t.reset=function(){Array.prototype.forEach.call(this.els_,function(e){e.dataset.mdState=""}),this.index_=0,this.offset_=window.pageYOffset},e}(),Collapse:function(){function e(e){var t="string"==typeof e?document.querySelector(e):e;if(!(t instanceof HTMLElement))throw new ReferenceError;this.el_=t}var t=e.prototype;return t.setup=function(){var e=this.el_.getBoundingClientRect().height;this.el_.style.display=e?"block":"none",this.el_.style.overflow=e?"visible":"hidden"},t.update=function(){var e=this,t=this.el_.getBoundingClientRect().height;this.el_.style.display="block",this.el_.style.overflow="";var r=this.el_.previousElementSibling.previousElementSibling.checked;if(r)this.el_.style.maxHeight=t+"px",requestAnimationFrame(function(){e.el_.setAttribute("data-md-state","animate"),e.el_.style.maxHeight="0px"});else{this.el_.setAttribute("data-md-state","expand"),this.el_.style.maxHeight="";var n=this.el_.getBoundingClientRect().height;this.el_.removeAttribute("data-md-state"),this.el_.style.maxHeight="0px",requestAnimationFrame(function(){e.el_.setAttribute("data-md-state","animate"),e.el_.style.maxHeight=n+"px"})}this.el_.addEventListener("transitionend",function e(t){var n=t.target;if(!(n instanceof HTMLElement))throw new ReferenceError;n.removeAttribute("data-md-state"),n.style.maxHeight="",n.style.display=r?"none":"block",n.style.overflow=r?"hidden":"visible",n.removeEventListener("transitionend",e)},!1)},t.reset=function(){this.el_.dataset.mdState="",this.el_.style.maxHeight="",this.el_.style.display="",this.el_.style.overflow=""},e}(),Scrolling:function(){function e(e){var t="string"==typeof e?document.querySelector(e):e;if(!(t instanceof HTMLElement))throw new ReferenceError;this.el_=t}var t=e.prototype;return t.setup=function(){this.el_.children[this.el_.children.length-1].style.webkitOverflowScrolling="touch";var e=this.el_.querySelectorAll("[data-md-toggle]");Array.prototype.forEach.call(e,function(e){if(!(e instanceof HTMLInputElement))throw new ReferenceError;if(e.checked){var t=e.nextElementSibling;if(!(t instanceof HTMLElement))throw new ReferenceError;for(;"NAV"!==t.tagName&&t.nextElementSibling;)t=t.nextElementSibling;if(!(e.parentNode instanceof HTMLElement&&e.parentNode.parentNode instanceof HTMLElement))throw new ReferenceError;var n=e.parentNode.parentNode,r=t.children[t.children.length-1];n.style.webkitOverflowScrolling="",r.style.webkitOverflowScrolling="touch"}})},t.update=function(e){var t=e.target;if(!(t instanceof HTMLElement))throw new ReferenceError;var n=t.nextElementSibling;if(!(n instanceof HTMLElement))throw new ReferenceError;for(;"NAV"!==n.tagName&&n.nextElementSibling;)n=n.nextElementSibling;if(!(t.parentNode instanceof HTMLElement&&t.parentNode.parentNode instanceof HTMLElement))throw new ReferenceError;var r=t.parentNode.parentNode,i=n.children[n.children.length-1];if(r.style.webkitOverflowScrolling="",i.style.webkitOverflowScrolling="",!t.checked){n.addEventListener("transitionend",function e(){n instanceof HTMLElement&&(r.style.webkitOverflowScrolling="touch",n.removeEventListener("transitionend",e))},!1)}if(t.checked){n.addEventListener("transitionend",function e(){n instanceof HTMLElement&&(i.style.webkitOverflowScrolling="touch",n.removeEventListener("transitionend",e))},!1)}},t.reset=function(){this.el_.children[1].style.webkitOverflowScrolling="";var e=this.el_.querySelectorAll("[data-md-toggle]");Array.prototype.forEach.call(e,function(e){if(!(e instanceof HTMLInputElement))throw new ReferenceError;if(e.checked){var t=e.nextElementSibling;if(!(t instanceof HTMLElement))throw new ReferenceError;for(;"NAV"!==t.tagName&&t.nextElementSibling;)t=t.nextElementSibling;if(!(e.parentNode instanceof HTMLElement&&e.parentNode.parentNode instanceof HTMLElement))throw new ReferenceError;var n=e.parentNode.parentNode,r=t.children[t.children.length-1];n.style.webkitOverflowScrolling="",r.style.webkitOverflowScrolling=""}})},e}()},a={Lock:function(){function e(e){var t="string"==typeof e?document.querySelector(e):e;if(!(t instanceof HTMLInputElement))throw new ReferenceError;if(this.el_=t,!document.body)throw new ReferenceError;this.lock_=document.body}var t=e.prototype;return t.setup=function(){this.update()},t.update=function(){var e=this;this.el_.checked?(this.offset_=window.pageYOffset,setTimeout(function(){window.scrollTo(0,0),e.el_.checked&&(e.lock_.dataset.mdState="lock")},400)):(this.lock_.dataset.mdState="",setTimeout(function(){void 0!==e.offset_&&window.scrollTo(0,e.offset_)},100))},t.reset=function(){"lock"===this.lock_.dataset.mdState&&window.scrollTo(0,this.offset_),this.lock_.dataset.mdState=""},e}(),Result:n(9).a},s={Position:function(){function e(e,t){var n="string"==typeof e?document.querySelector(e):e;if(!(n instanceof HTMLElement&&n.parentNode instanceof HTMLElement))throw new ReferenceError;if(this.el_=n,this.parent_=n.parentNode,!((n="string"==typeof t?document.querySelector(t):t)instanceof HTMLElement))throw new ReferenceError;this.header_=n,this.height_=0,this.pad_="fixed"===window.getComputedStyle(this.header_).position}var t=e.prototype;return t.setup=function(){var e=Array.prototype.reduce.call(this.parent_.children,function(e,t){return Math.max(e,t.offsetTop)},0);this.offset_=e-(this.pad_?this.header_.offsetHeight:0),this.update()},t.update=function(e){var t=window.pageYOffset,n=window.innerHeight;e&&"resize"===e.type&&this.setup();var r=this.pad_?this.header_.offsetHeight:0,i=this.parent_.offsetTop+this.parent_.offsetHeight,o=n-r-Math.max(0,this.offset_-t)-Math.max(0,t+n-i);o!==this.height_&&(this.el_.style.height=(this.height_=o)+"px"),t>=this.offset_?"lock"!==this.el_.dataset.mdState&&(this.el_.dataset.mdState="lock"):"lock"===this.el_.dataset.mdState&&(this.el_.dataset.mdState="")},t.reset=function(){this.el_.dataset.mdState="",this.el_.style.height="",this.height_=0},e}()},c=n(6),l=n.n(c);var u={Adapter:{GitHub:function(o){var e,t;function n(e){var t;t=o.call(this,e)||this;var n=/^.+github\.com\/([^/]+)\/?([^/]+)?.*$/.exec(t.base_);if(n&&3===n.length){var r=n[1],i=n[2];t.base_="https://api.github.com/users/"+r+"/repos",t.name_=i}return t}return t=o,(e=n).prototype=Object.create(t.prototype),(e.prototype.constructor=e).__proto__=t,n.prototype.fetch_=function(){var i=this;return function n(r){return void 0===r&&(r=0),fetch(i.base_+"?per_page=30&page="+r).then(function(e){return e.json()}).then(function(e){if(!(e instanceof Array))throw new TypeError;if(i.name_){var t=e.find(function(e){return e.name===i.name_});return t||30!==e.length?t?[i.format_(t.stargazers_count)+" Stars",i.format_(t.forks_count)+" Forks"]:[]:n(r+1)}return[e.length+" Repositories"]})}()},n}(function(){function e(e){var t="string"==typeof e?document.querySelector(e):e;if(!(t instanceof HTMLAnchorElement))throw new ReferenceError;this.el_=t,this.base_=this.el_.href,this.salt_=this.hash_(this.base_)}var t=e.prototype;return t.fetch=function(){var n=this;return new Promise(function(t){var e=l.a.getJSON(n.salt_+".cache-source");void 0!==e?t(e):n.fetch_().then(function(e){l.a.set(n.salt_+".cache-source",e,{expires:1/96}),t(e)})})},t.fetch_=function(){throw new Error("fetch_(): Not implemented")},t.format_=function(e){return 1e4<e?(e/1e3).toFixed(0)+"k":1e3<e?(e/1e3).toFixed(1)+"k":""+e},t.hash_=function(e){var t=0;if(0===e.length)return t;for(var n=0,r=e.length;n<r;n++)t=(t<<5)-t+e.charCodeAt(n),t|=0;return t},e}())},Repository:n(10).a},f={Toggle:function(){function e(e){var t="string"==typeof e?document.querySelector(e):e;if(!(t instanceof Node))throw new ReferenceError;this.el_=t,this.active_=!1}var t=e.prototype;return t.update=function(){var e=window.pageYOffset>=this.el_.children[0].offsetTop+-43;e!==this.active_&&(this.el_.dataset.mdState=(this.active_=e)?"hidden":"")},t.reset=function(){this.el_.dataset.mdState="",this.active_=!1},e}()};t.a={Event:r,Header:i,Nav:o,Search:a,Sidebar:s,Source:u,Tabs:f}},function(t,e,n){(function(e){t.exports=e.lunr=n(24)}).call(this,n(4))},function(e,f,d){"use strict";(function(t){var e=d(8),n=setTimeout;function r(){}function o(e){if(!(this instanceof o))throw new TypeError("Promises must be constructed via new");if("function"!=typeof e)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],u(e,this)}function i(n,r){for(;3===n._state;)n=n._value;0!==n._state?(n._handled=!0,o._immediateFn(function(){var e=1===n._state?r.onFulfilled:r.onRejected;if(null!==e){var t;try{t=e(n._value)}catch(e){return void s(r.promise,e)}a(r.promise,t)}else(1===n._state?a:s)(r.promise,n._value)})):n._deferreds.push(r)}function a(t,e){try{if(e===t)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if(e instanceof o)return t._state=3,t._value=e,void c(t);if("function"==typeof n)return void u((r=n,i=e,function(){r.apply(i,arguments)}),t)}t._state=1,t._value=e,c(t)}catch(e){s(t,e)}var r,i}function s(e,t){e._state=2,e._value=t,c(e)}function c(e){2===e._state&&0===e._deferreds.length&&o._immediateFn(function(){e._handled||o._unhandledRejectionFn(e._value)});for(var t=0,n=e._deferreds.length;t<n;t++)i(e,e._deferreds[t]);e._deferreds=null}function l(e,t,n){this.onFulfilled="function"==typeof e?e:null,this.onRejected="function"==typeof t?t:null,this.promise=n}function u(e,t){var n=!1;try{e(function(e){n||(n=!0,a(t,e))},function(e){n||(n=!0,s(t,e))})}catch(e){if(n)return;n=!0,s(t,e)}}o.prototype.catch=function(e){return this.then(null,e)},o.prototype.then=function(e,t){var n=new this.constructor(r);return i(this,new l(e,t,n)),n},o.prototype.finally=e.a,o.all=function(t){return new o(function(r,i){if(!t||void 0===t.length)throw new TypeError("Promise.all accepts an array");var o=Array.prototype.slice.call(t);if(0===o.length)return r([]);var a=o.length;function s(t,e){try{if(e&&("object"==typeof e||"function"==typeof e)){var n=e.then;if("function"==typeof n)return void n.call(e,function(e){s(t,e)},i)}o[t]=e,0==--a&&r(o)}catch(e){i(e)}}for(var e=0;e<o.length;e++)s(e,o[e])})},o.resolve=function(t){return t&&"object"==typeof t&&t.constructor===o?t:new o(function(e){e(t)})},o.reject=function(n){return new o(function(e,t){t(n)})},o.race=function(i){return new o(function(e,t){for(var n=0,r=i.length;n<r;n++)i[n].then(e,t)})},o._immediateFn="function"==typeof t&&function(e){t(e)}||function(e){n(e,0)},o._unhandledRejectionFn=function(e){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",e)},f.a=o}).call(this,d(21).setImmediate)},function(e,t,n){"use strict";function r(e,t){var n=document.createElement(e);t&&Array.prototype.forEach.call(Object.keys(t),function(e){n.setAttribute(e,t[e])});for(var r=arguments.length,i=new Array(2<r?r-2:0),o=2;o<r;o++)i[o-2]=arguments[o];return function t(e){Array.prototype.forEach.call(e,function(e){"string"==typeof e||"number"==typeof e?n.textContent+=e:Array.isArray(e)?t(e):void 0!==e.__html?n.innerHTML+=e.__html:e instanceof Node&&n.appendChild(e)})}(i),n}n.r(t),n.d(t,"createElement",function(){return r})},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){var r;r=function(){return function(n){var r={};function i(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,i),t.l=!0,t.exports}return i.m=n,i.c=r,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(t,e){if(1&e&&(t=i(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)i.d(n,r,function(e){return t[e]}.bind(null,r));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s=0)}([function(e,t,n){"use strict";var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}(),a=r(n(1)),s=r(n(3)),c=r(n(4));function r(e){return e&&e.__esModule?e:{default:e}}var l=function(e){function r(e,t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,r);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(r.__proto__||Object.getPrototypeOf(r)).call(this));return n.resolveOptions(t),n.listenClick(e),n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(r,s.default),o(r,[{key:"resolveOptions",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action="function"==typeof e.action?e.action:this.defaultAction,this.target="function"==typeof e.target?e.target:this.defaultTarget,this.text="function"==typeof e.text?e.text:this.defaultText,this.container="object"===i(e.container)?e.container:document.body}},{key:"listenClick",value:function(e){var t=this;this.listener=(0,c.default)(e,"click",function(e){return t.onClick(e)})}},{key:"onClick",value:function(e){var t=e.delegateTarget||e.currentTarget;this.clipboardAction&&(this.clipboardAction=null),this.clipboardAction=new a.default({action:this.action(t),target:this.target(t),text:this.text(t),container:this.container,trigger:t,emitter:this})}},{key:"defaultAction",value:function(e){return u("action",e)}},{key:"defaultTarget",value:function(e){var t=u("target",e);if(t)return document.querySelector(t)}},{key:"defaultText",value:function(e){return u("text",e)}},{key:"destroy",value:function(){this.listener.destroy(),this.clipboardAction&&(this.clipboardAction.destroy(),this.clipboardAction=null)}}],[{key:"isSupported",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:["copy","cut"],t="string"==typeof e?[e]:e,n=!!document.queryCommandSupported;return t.forEach(function(e){n=n&&!!document.queryCommandSupported(e)}),n}}]),r}();function u(e,t){var n="data-clipboard-"+e;if(t.hasAttribute(n))return t.getAttribute(n)}e.exports=l},function(e,t,n){"use strict";var r,i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function(){function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}}(),a=n(2),s=(r=a)&&r.__esModule?r:{default:r};var c=function(){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),this.resolveOptions(e),this.initSelection()}return o(t,[{key:"resolveOptions",value:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:{};this.action=e.action,this.container=e.container,this.emitter=e.emitter,this.target=e.target,this.text=e.text,this.trigger=e.trigger,this.selectedText=""}},{key:"initSelection",value:function(){this.text?this.selectFake():this.target&&this.selectTarget()}},{key:"selectFake",value:function(){var e=this,t="rtl"==document.documentElement.getAttribute("dir");this.removeFake(),this.fakeHandlerCallback=function(){return e.removeFake()},this.fakeHandler=this.container.addEventListener("click",this.fakeHandlerCallback)||!0,this.fakeElem=document.createElement("textarea"),this.fakeElem.style.fontSize="12pt",this.fakeElem.style.border="0",this.fakeElem.style.padding="0",this.fakeElem.style.margin="0",this.fakeElem.style.position="absolute",this.fakeElem.style[t?"right":"left"]="-9999px";var n=window.pageYOffset||document.documentElement.scrollTop;this.fakeElem.style.top=n+"px",this.fakeElem.setAttribute("readonly",""),this.fakeElem.value=this.text,this.container.appendChild(this.fakeElem),this.selectedText=(0,s.default)(this.fakeElem),this.copyText()}},{key:"removeFake",value:function(){this.fakeHandler&&(this.container.removeEventListener("click",this.fakeHandlerCallback),this.fakeHandler=null,this.fakeHandlerCallback=null),this.fakeElem&&(this.container.removeChild(this.fakeElem),this.fakeElem=null)}},{key:"selectTarget",value:function(){this.selectedText=(0,s.default)(this.target),this.copyText()}},{key:"copyText",value:function(){var t=void 0;try{t=document.execCommand(this.action)}catch(e){t=!1}this.handleResult(t)}},{key:"handleResult",value:function(e){this.emitter.emit(e?"success":"error",{action:this.action,text:this.selectedText,trigger:this.trigger,clearSelection:this.clearSelection.bind(this)})}},{key:"clearSelection",value:function(){this.trigger&&this.trigger.focus(),window.getSelection().removeAllRanges()}},{key:"destroy",value:function(){this.removeFake()}},{key:"action",set:function(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0]:"copy";if(this._action=e,"copy"!==this._action&&"cut"!==this._action)throw new Error('Invalid "action" value, use either "copy" or "cut"')},get:function(){return this._action}},{key:"target",set:function(e){if(void 0!==e){if(!e||"object"!==(void 0===e?"undefined":i(e))||1!==e.nodeType)throw new Error('Invalid "target" value, use a valid Element');if("copy"===this.action&&e.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if("cut"===this.action&&(e.hasAttribute("readonly")||e.hasAttribute("disabled")))throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes');this._target=e}},get:function(){return this._target}}]),t}();e.exports=c},function(e,t){e.exports=function(e){var t;if("SELECT"===e.nodeName)e.focus(),t=e.value;else if("INPUT"===e.nodeName||"TEXTAREA"===e.nodeName){var n=e.hasAttribute("readonly");n||e.setAttribute("readonly",""),e.select(),e.setSelectionRange(0,e.value.length),n||e.removeAttribute("readonly"),t=e.value}else{e.hasAttribute("contenteditable")&&e.focus();var r=window.getSelection(),i=document.createRange();i.selectNodeContents(e),r.removeAllRanges(),r.addRange(i),t=r.toString()}return t}},function(e,t){function n(){}n.prototype={on:function(e,t,n){var r=this.e||(this.e={});return(r[e]||(r[e]=[])).push({fn:t,ctx:n}),this},once:function(e,t,n){var r=this;function i(){r.off(e,i),t.apply(n,arguments)}return i._=t,this.on(e,i,n)},emit:function(e){for(var t=[].slice.call(arguments,1),n=((this.e||(this.e={}))[e]||[]).slice(),r=0,i=n.length;r<i;r++)n[r].fn.apply(n[r].ctx,t);return this},off:function(e,t){var n=this.e||(this.e={}),r=n[e],i=[];if(r&&t)for(var o=0,a=r.length;o<a;o++)r[o].fn!==t&&r[o].fn._!==t&&i.push(r[o]);return i.length?n[e]=i:delete n[e],this}},e.exports=n},function(e,t,n){var d=n(5),h=n(6);e.exports=function(e,t,n){if(!e&&!t&&!n)throw new Error("Missing required arguments");if(!d.string(t))throw new TypeError("Second argument must be a String");if(!d.fn(n))throw new TypeError("Third argument must be a Function");if(d.node(e))return u=t,f=n,(l=e).addEventListener(u,f),{destroy:function(){l.removeEventListener(u,f)}};if(d.nodeList(e))return a=e,s=t,c=n,Array.prototype.forEach.call(a,function(e){e.addEventListener(s,c)}),{destroy:function(){Array.prototype.forEach.call(a,function(e){e.removeEventListener(s,c)})}};if(d.string(e))return r=e,i=t,o=n,h(document.body,r,i,o);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList");var r,i,o,a,s,c,l,u,f}},function(e,n){n.node=function(e){return void 0!==e&&e instanceof HTMLElement&&1===e.nodeType},n.nodeList=function(e){var t=Object.prototype.toString.call(e);return void 0!==e&&("[object NodeList]"===t||"[object HTMLCollection]"===t)&&"length"in e&&(0===e.length||n.node(e[0]))},n.string=function(e){return"string"==typeof e||e instanceof String},n.fn=function(e){return"[object Function]"===Object.prototype.toString.call(e)}},function(e,t,n){var a=n(7);function o(e,t,n,r,i){var o=function(t,n,e,r){return function(e){e.delegateTarget=a(e.target,n),e.delegateTarget&&r.call(t,e)}}.apply(this,arguments);return e.addEventListener(n,o,i),{destroy:function(){e.removeEventListener(n,o,i)}}}e.exports=function(e,t,n,r,i){return"function"==typeof e.addEventListener?o.apply(null,arguments):"function"==typeof n?o.bind(null,document).apply(null,arguments):("string"==typeof e&&(e=document.querySelectorAll(e)),Array.prototype.map.call(e,function(e){return o(e,t,n,r,i)}))}},function(e,t){if("undefined"!=typeof Element&&!Element.prototype.matches){var n=Element.prototype;n.matches=n.matchesSelector||n.mozMatchesSelector||n.msMatchesSelector||n.oMatchesSelector||n.webkitMatchesSelector}e.exports=function(e,t){for(;e&&9!==e.nodeType;){if("function"==typeof e.matches&&e.matches(t))return e;e=e.parentNode}}}])},e.exports=r()},function(r,i,o){var a,s;!function(e){if(void 0===(s="function"==typeof(a=e)?a.call(i,o,i,r):a)||(r.exports=s),!0,r.exports=e(),!!0){var t=window.Cookies,n=window.Cookies=e();n.noConflict=function(){return window.Cookies=t,n}}}(function(){function m(){for(var e=0,t={};e<arguments.length;e++){var n=arguments[e];for(var r in n)t[r]=n[r]}return t}return function e(h){function p(e,t,n){var r;if("undefined"!=typeof document){if(1<arguments.length){if("number"==typeof(n=m({path:"/"},p.defaults,n)).expires){var i=new Date;i.setMilliseconds(i.getMilliseconds()+864e5*n.expires),n.expires=i}n.expires=n.expires?n.expires.toUTCString():"";try{r=JSON.stringify(t),/^[\{\[]/.test(r)&&(t=r)}catch(e){}t=h.write?h.write(t,e):encodeURIComponent(String(t)).replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g,decodeURIComponent),e=(e=(e=encodeURIComponent(String(e))).replace(/%(23|24|26|2B|5E|60|7C)/g,decodeURIComponent)).replace(/[\(\)]/g,escape);var o="";for(var a in n)n[a]&&(o+="; "+a,!0!==n[a]&&(o+="="+n[a]));return document.cookie=e+"="+t+o}e||(r={});for(var s=document.cookie?document.cookie.split("; "):[],c=/(%[0-9A-Z]{2})+/g,l=0;l<s.length;l++){var u=s[l].split("="),f=u.slice(1).join("=");this.json||'"'!==f.charAt(0)||(f=f.slice(1,-1));try{var d=u[0].replace(c,decodeURIComponent);if(f=h.read?h.read(f,d):h(f,d)||f.replace(c,decodeURIComponent),this.json)try{f=JSON.parse(f)}catch(e){}if(e===d){r=f;break}e||(r[d]=f)}catch(e){}}return r}}return(p.set=p).get=function(e){return p.call(p,e)},p.getJSON=function(){return p.apply({json:!0},[].slice.call(arguments))},p.defaults={},p.remove=function(e,t){p(e,"",m(t,{expires:-1}))},p.withConverter=e,p}(function(){})})},function(e,t,n){"use strict";n.r(t);var r="function"==typeof fetch?fetch.bind():function(i,o){return o=o||{},new Promise(function(e,t){var n=new XMLHttpRequest;for(var r in n.open(o.method||"get",i,!0),o.headers)n.setRequestHeader(r,o.headers[r]);function s(){var r,i=[],o=[],a={};return n.getAllResponseHeaders().replace(/^(.*?):[^\S\n]*([\s\S]*?)$/gm,function(e,t,n){i.push(t=t.toLowerCase()),o.push([t,n]),r=a[t],a[t]=r?r+","+n:n}),{ok:2==(n.status/100|0),status:n.status,statusText:n.statusText,url:n.responseURL,clone:s,text:function(){return Promise.resolve(n.responseText)},json:function(){return Promise.resolve(n.responseText).then(JSON.parse)},blob:function(){return Promise.resolve(new Blob([n.response]))},headers:{keys:function(){return i},entries:function(){return o},get:function(e){return a[e.toLowerCase()]},has:function(e){return e.toLowerCase()in a}}}}n.withCredentials="include"==o.credentials,n.onload=function(){e(s())},n.onerror=t,n.send(o.body||null)})};t.default=r},function(e,t,n){"use strict";t.a=function(t){var n=this.constructor;return this.then(function(e){return n.resolve(t()).then(function(){return e})},function(e){return n.resolve(t()).then(function(){return n.reject(e)})})}},function(e,n,r){"use strict";(function(f){r.d(n,"a",function(){return t});var e=r(1),d=r.n(e),h=function(e){var t=document.getElementsByName("lang:"+e)[0];if(!(t instanceof HTMLMetaElement))throw new ReferenceError;return t.content},t=function(){function e(e,t){var n="string"==typeof e?document.querySelector(e):e;if(!(n instanceof HTMLElement))throw new ReferenceError;this.el_=n;var r=Array.prototype.slice.call(this.el_.children),i=r[0],o=r[1];this.data_=t,this.meta_=i,this.list_=o,this.message_={placeholder:this.meta_.textContent,none:h("search.result.none"),one:h("search.result.one"),other:h("search.result.other")};var a=h("search.tokenizer");a.length&&(d.a.tokenizer.separator=a),this.lang_=h("search.language").split(",").filter(Boolean).map(function(e){return e.trim()})}return e.prototype.update=function(e){var t,a=this;if("focus"!==e.type||this.index_){if("focus"===e.type||"keyup"===e.type){var n=e.target;if(!(n instanceof HTMLInputElement))throw new ReferenceError;if(!this.index_||n.value===this.value_)return;for(;this.list_.firstChild;)this.list_.removeChild(this.list_.firstChild);if(this.value_=n.value,0===this.value_.length)return void(this.meta_.textContent=this.message_.placeholder);var r=this.index_.query(function(t){a.value_.toLowerCase().split(" ").filter(Boolean).forEach(function(e){t.term(e,{wildcard:d.a.Query.wildcard.TRAILING})})}).reduce(function(e,t){var n=a.docs_.get(t.ref);if(n.parent){var r=n.parent.location;e.set(r,(e.get(r)||[]).concat(t))}else{var i=n.location;e.set(i,e.get(i)||[])}return e},new Map),i=(t=this.value_.trim(),t.replace(/[|\\{}()[\]^$+*?.-]/g,"\\$&")).replace(new RegExp(d.a.tokenizer.separator,"img"),"|"),s=new RegExp("(^|"+d.a.tokenizer.separator+")("+i+")","img"),c=function(e,t,n){return t+"<em>"+n+"</em>"};this.stack_=[],r.forEach(function(e,t){var n,r=a.docs_.get(t),i=f.createElement("li",{class:"md-search-result__item"},f.createElement("a",{href:r.location,title:r.title,class:"md-search-result__link",tabindex:"-1"},f.createElement("article",{class:"md-search-result__article md-search-result__article--document"},f.createElement("h1",{class:"md-search-result__title"},{__html:r.title.replace(s,c)}),r.text.length?f.createElement("p",{class:"md-search-result__teaser"},{__html:r.text.replace(s,c)}):{}))),o=e.map(function(t){return function(){var e=a.docs_.get(t.ref);i.appendChild(f.createElement("a",{href:e.location,title:e.title,class:"md-search-result__link","data-md-rel":"anchor",tabindex:"-1"},f.createElement("article",{class:"md-search-result__article"},f.createElement("h1",{class:"md-search-result__title"},{__html:e.title.replace(s,c)}),e.text.length?f.createElement("p",{class:"md-search-result__teaser"},{__html:function(e,t){var n=t;if(e.length>n){for(;" "!==e[n]&&0<--n;);return e.substring(0,n)+"..."}return e}(e.text.replace(s,c),400)}):{})))}});(n=a.stack_).push.apply(n,[function(){return a.list_.appendChild(i)}].concat(o))});var o=this.el_.parentNode;if(!(o instanceof HTMLElement))throw new ReferenceError;for(;this.stack_.length&&o.offsetHeight>=o.scrollHeight-16;)this.stack_.shift()();var l=this.list_.querySelectorAll("[data-md-rel=anchor]");switch(Array.prototype.forEach.call(l,function(r){["click","keydown"].forEach(function(n){r.addEventListener(n,function(e){if("keydown"!==n||13===e.keyCode){var t=document.querySelector("[data-md-toggle=search]");if(!(t instanceof HTMLInputElement))throw new ReferenceError;t.checked&&(t.checked=!1,t.dispatchEvent(new CustomEvent("change"))),e.preventDefault(),setTimeout(function(){document.location.href=r.href},100)}})})}),r.size){case 0:this.meta_.textContent=this.message_.none;break;case 1:this.meta_.textContent=this.message_.one;break;default:this.meta_.textContent=this.message_.other.replace("#",r.size)}}}else{var u=function(e){a.docs_=e.reduce(function(e,t){var n,r,i,o=t.location.split("#"),a=o[0],s=o[1];return t.text=(n=t.text,r=document.createTextNode(n),(i=document.createElement("p")).appendChild(r),i.innerHTML),s&&(t.parent=e.get(a),t.parent&&!t.parent.done&&(t.parent.title=t.title,t.parent.text=t.text,t.parent.done=!0)),t.text=t.text.replace(/\n/g," ").replace(/\s+/g," ").replace(/\s+([,.:;!?])/g,function(e,t){return t}),t.parent&&t.parent.title===t.title||e.set(t.location,t),e},new Map);var i=a.docs_,o=a.lang_;a.stack_=[],a.index_=d()(function(){var e,t=this,n={"search.pipeline.trimmer":d.a.trimmer,"search.pipeline.stopwords":d.a.stopWordFilter},r=Object.keys(n).reduce(function(e,t){return h(t).match(/^false$/i)||e.push(n[t]),e},[]);this.pipeline.reset(),r&&(e=this.pipeline).add.apply(e,r),1===o.length&&"en"!==o[0]&&d.a[o[0]]?this.use(d.a[o[0]]):1<o.length&&this.use(d.a.multiLanguage.apply(d.a,o)),this.field("title",{boost:10}),this.field("text"),this.ref("location"),i.forEach(function(e){return t.add(e)})});var t=a.el_.parentNode;if(!(t instanceof HTMLElement))throw new ReferenceError;t.addEventListener("scroll",function(){for(;a.stack_.length&&t.scrollTop+t.offsetHeight>=t.scrollHeight-16;)a.stack_.splice(0,10).forEach(function(e){return e()})})};setTimeout(function(){return"function"==typeof a.data_?a.data_().then(u):u(a.data_)},250)}},e}()}).call(this,r(3))},function(e,n,r){"use strict";(function(t){r.d(n,"a",function(){return e});var e=function(){function e(e){var t="string"==typeof e?document.querySelector(e):e;if(!(t instanceof HTMLElement))throw new ReferenceError;this.el_=t}return e.prototype.initialize=function(e){e.length&&this.el_.children.length&&this.el_.children[this.el_.children.length-1].appendChild(t.createElement("ul",{class:"md-source__facts"},e.map(function(e){return t.createElement("li",{class:"md-source__fact"},e)}))),this.el_.dataset.mdState="done"},e}()}).call(this,r(3))},,,function(e,n,c){"use strict";c.r(n),function(o){c.d(n,"app",function(){return t});c(14),c(15),c(16),c(17),c(18),c(19),c(20);var r=c(2),e=c(5),a=c.n(e),i=c(0);window.Promise=window.Promise||r.a;var s=function(e){var t=document.getElementsByName("lang:"+e)[0];if(!(t instanceof HTMLMetaElement))throw new ReferenceError;return t.content};var t={initialize:function(t){new i.a.Event.Listener(document,"DOMContentLoaded",function(){if(!(document.body instanceof HTMLElement))throw new ReferenceError;Modernizr.addTest("ios",function(){return!!navigator.userAgent.match(/(iPad|iPhone|iPod)/g)});var e=document.querySelectorAll("table:not([class])");if(Array.prototype.forEach.call(e,function(e){var t=o.createElement("div",{class:"md-typeset__scrollwrap"},o.createElement("div",{class:"md-typeset__table"}));e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t.children[0].appendChild(e)}),a.a.isSupported()){var t=document.querySelectorAll(".codehilite > pre, pre > code");Array.prototype.forEach.call(t,function(e,t){var n="__code_"+t,r=o.createElement("button",{class:"md-clipboard",title:s("clipboard.copy"),"data-clipboard-target":"#"+n+" pre, #"+n+" code"},o.createElement("span",{class:"md-clipboard__message"})),i=e.parentNode;i.id=n,i.insertBefore(r,e)}),new a.a(".md-clipboard").on("success",function(e){var t=e.trigger.querySelector(".md-clipboard__message");if(!(t instanceof HTMLElement))throw new ReferenceError;e.clearSelection(),t.dataset.mdTimer&&clearTimeout(parseInt(t.dataset.mdTimer,10)),t.classList.add("md-clipboard__message--active"),t.innerHTML=s("clipboard.copied"),t.dataset.mdTimer=setTimeout(function(){t.classList.remove("md-clipboard__message--active"),t.dataset.mdTimer=""},2e3).toString()})}if(!Modernizr.details){var n=document.querySelectorAll("details > summary");Array.prototype.forEach.call(n,function(e){e.addEventListener("click",function(e){var t=e.target.parentNode;t.hasAttribute("open")?t.removeAttribute("open"):t.setAttribute("open","")})})}var r=function(){if(document.location.hash){var e=document.getElementById(document.location.hash.substring(1));if(!e)return;for(var t=e.parentNode;t&&!(t instanceof HTMLDetailsElement);)t=t.parentNode;if(t&&!t.open){t.open=!0;var n=location.hash;location.hash=" ",location.hash=n}}};if(window.addEventListener("hashchange",r),r(),Modernizr.ios){var i=document.querySelectorAll("[data-md-scrollfix]");Array.prototype.forEach.call(i,function(t){t.addEventListener("touchstart",function(){var e=t.scrollTop;0===e?t.scrollTop=1:e+t.offsetHeight===t.scrollHeight&&(t.scrollTop=e-1)})})}}).listen(),new i.a.Event.Listener(window,["scroll","resize","orientationchange"],new i.a.Header.Shadow("[data-md-component=container]","[data-md-component=header]")).listen(),new i.a.Event.Listener(window,["scroll","resize","orientationchange"],new i.a.Header.Title("[data-md-component=title]",".md-typeset h1")).listen(),document.querySelector("[data-md-component=hero]")&&new i.a.Event.Listener(window,["scroll","resize","orientationchange"],new i.a.Tabs.Toggle("[data-md-component=hero]")).listen(),document.querySelector("[data-md-component=tabs]")&&new i.a.Event.Listener(window,["scroll","resize","orientationchange"],new i.a.Tabs.Toggle("[data-md-component=tabs]")).listen(),new i.a.Event.MatchMedia("(min-width: 1220px)",new i.a.Event.Listener(window,["scroll","resize","orientationchange"],new i.a.Sidebar.Position("[data-md-component=navigation]","[data-md-component=header]"))),document.querySelector("[data-md-component=toc]")&&new i.a.Event.MatchMedia("(min-width: 960px)",new i.a.Event.Listener(window,["scroll","resize","orientationchange"],new i.a.Sidebar.Position("[data-md-component=toc]","[data-md-component=header]"))),new i.a.Event.MatchMedia("(min-width: 960px)",new i.a.Event.Listener(window,"scroll",new i.a.Nav.Blur("[data-md-component=toc] .md-nav__link")));var e=document.querySelectorAll("[data-md-component=collapsible]");Array.prototype.forEach.call(e,function(e){new i.a.Event.MatchMedia("(min-width: 1220px)",new i.a.Event.Listener(e.previousElementSibling,"click",new i.a.Nav.Collapse(e)))}),new i.a.Event.MatchMedia("(max-width: 1219px)",new i.a.Event.Listener("[data-md-component=navigation] [data-md-toggle]","change",new i.a.Nav.Scrolling("[data-md-component=navigation] nav"))),document.querySelector("[data-md-component=search]")&&(new i.a.Event.MatchMedia("(max-width: 959px)",new i.a.Event.Listener("[data-md-toggle=search]","change",new i.a.Search.Lock("[data-md-toggle=search]"))),new i.a.Event.Listener("[data-md-component=query]",["focus","keyup","change"],new i.a.Search.Result("[data-md-component=result]",function(){return fetch(t.url.base+"/search/search_index.json",{credentials:"same-origin"}).then(function(e){return e.json()}).then(function(e){return e.docs.map(function(e){return e.location=t.url.base+"/"+e.location,e})})})).listen(),new i.a.Event.Listener("[data-md-component=reset]","click",function(){setTimeout(function(){var e=document.querySelector("[data-md-component=query]");if(!(e instanceof HTMLInputElement))throw new ReferenceError;e.focus()},10)}).listen(),new i.a.Event.Listener("[data-md-toggle=search]","change",function(e){setTimeout(function(e){if(!(e instanceof HTMLInputElement))throw new ReferenceError;if(e.checked){var t=document.querySelector("[data-md-component=query]");if(!(t instanceof HTMLInputElement))throw new ReferenceError;t.focus()}},400,e.target)}).listen(),new i.a.Event.Listener("[data-md-component=query]","focus",function(){var e=document.querySelector("[data-md-toggle=search]");if(!(e instanceof HTMLInputElement))throw new ReferenceError;e.checked||(e.checked=!0,e.dispatchEvent(new CustomEvent("change")))}).listen(),new i.a.Event.Listener(window,"keydown",function(e){var t=document.querySelector("[data-md-toggle=search]");if(!(t instanceof HTMLInputElement))throw new ReferenceError;var n=document.querySelector("[data-md-component=query]");if(!(n instanceof HTMLInputElement))throw new ReferenceError;if(!(document.activeElement instanceof HTMLElement&&document.activeElement.isContentEditable||e.metaKey||e.ctrlKey))if(t.checked){if(13===e.keyCode){if(n===document.activeElement){e.preventDefault();var r=document.querySelector("[data-md-component=search] [href][data-md-state=active]");r instanceof HTMLLinkElement&&(window.location=r.getAttribute("href"),t.checked=!1,t.dispatchEvent(new CustomEvent("change")),n.blur())}}else if(9===e.keyCode||27===e.keyCode)t.checked=!1,t.dispatchEvent(new CustomEvent("change")),n.blur();else if(-1!==[8,37,39].indexOf(e.keyCode))n!==document.activeElement&&n.focus();else if(-1!==[38,40].indexOf(e.keyCode)){var i=e.keyCode,o=Array.prototype.slice.call(document.querySelectorAll("[data-md-component=query], [data-md-component=search] [href]")),a=o.find(function(e){if(!(e instanceof HTMLElement))throw new ReferenceError;return"active"===e.dataset.mdState});a&&(a.dataset.mdState="");var s=Math.max(0,(o.indexOf(a)+o.length+(38===i?-1:1))%o.length);return o[s]&&(o[s].dataset.mdState="active",o[s].focus()),e.preventDefault(),e.stopPropagation(),!1}}else if(document.activeElement&&!document.activeElement.form){if("TEXTAREA"===document.activeElement.tagName||"INPUT"===document.activeElement.tagName)return;70!==e.keyCode&&83!==e.keyCode||(n.focus(),e.preventDefault())}}).listen(),new i.a.Event.Listener(window,"keypress",function(){var e=document.querySelector("[data-md-toggle=search]");if(!(e instanceof HTMLInputElement))throw new ReferenceError;if(e.checked){var t=document.querySelector("[data-md-component=query]");if(!(t instanceof HTMLInputElement))throw new ReferenceError;t!==document.activeElement&&t.focus()}}).listen()),new i.a.Event.Listener(document.body,"keydown",function(e){if(9===e.keyCode){var t=document.querySelectorAll("[data-md-component=navigation] .md-nav__link[for]:not([tabindex])");Array.prototype.forEach.call(t,function(e){e.offsetHeight&&(e.tabIndex=0)})}}).listen(),new i.a.Event.Listener(document.body,"mousedown",function(){var e=document.querySelectorAll("[data-md-component=navigation] .md-nav__link[tabindex]");Array.prototype.forEach.call(e,function(e){e.removeAttribute("tabIndex")})}).listen(),document.body.addEventListener("click",function(){"tabbing"===document.body.dataset.mdState&&(document.body.dataset.mdState="")}),new i.a.Event.MatchMedia("(max-width: 959px)",new i.a.Event.Listener("[data-md-component=navigation] [href^='#']","click",function(){var e=document.querySelector("[data-md-toggle=drawer]");if(!(e instanceof HTMLInputElement))throw new ReferenceError;e.checked&&(e.checked=!1,e.dispatchEvent(new CustomEvent("change")))})),function(){var e=document.querySelector("[data-md-source]");if(!e)return r.a.resolve([]);if(!(e instanceof HTMLAnchorElement))throw new ReferenceError;switch(e.dataset.mdSource){case"github":return new i.a.Source.Adapter.GitHub(e).fetch();default:return r.a.resolve([])}}().then(function(t){var e=document.querySelectorAll("[data-md-source]");Array.prototype.forEach.call(e,function(e){new i.a.Source.Repository(e).initialize(t)})});var n=function(){var e=document.querySelectorAll("details");Array.prototype.forEach.call(e,function(e){e.setAttribute("open","")})};new i.a.Event.MatchMedia("print",{listen:n,unlisten:function(){}}),window.onbeforeprint=n}}}.call(this,c(3))},function(e,t,n){e.exports=n.p+"assets/images/icons/bitbucket.1b09e088.svg"},function(e,t,n){e.exports=n.p+"assets/images/icons/github.f0b8504a.svg"},function(e,t,n){e.exports=n.p+"assets/images/icons/gitlab.6dd19c00.svg"},function(e,t){e.exports="/home/travis/build/squidfunk/mkdocs-material/material/application.4031d38b.css"},function(e,t){e.exports="/home/travis/build/squidfunk/mkdocs-material/material/application-palette.224b79ff.css"},function(e,t){!function(){if("undefined"!=typeof window)try{var e=new window.CustomEvent("test",{cancelable:!0});if(e.preventDefault(),!0!==e.defaultPrevented)throw new Error("Could not prevent default")}catch(e){var t=function(e,t){var n,r;return(t=t||{}).bubbles=!!t.bubbles,t.cancelable=!!t.cancelable,(n=document.createEvent("CustomEvent")).initCustomEvent(e,t.bubbles,t.cancelable,t.detail),r=n.preventDefault,n.preventDefault=function(){r.call(this);try{Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}})}catch(e){this.defaultPrevented=!0}},n};t.prototype=window.Event.prototype,window.CustomEvent=t}}()},function(e,t,n){window.fetch||(window.fetch=n(7).default||n(7))},function(e,i,o){(function(e){var t=void 0!==e&&e||"undefined"!=typeof self&&self||window,n=Function.prototype.apply;function r(e,t){this._id=e,this._clearFn=t}i.setTimeout=function(){return new r(n.call(setTimeout,t,arguments),clearTimeout)},i.setInterval=function(){return new r(n.call(setInterval,t,arguments),clearInterval)},i.clearTimeout=i.clearInterval=function(e){e&&e.close()},r.prototype.unref=r.prototype.ref=function(){},r.prototype.close=function(){this._clearFn.call(t,this._id)},i.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},i.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},i._unrefActive=i.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;0<=t&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},o(22),i.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,i.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,o(4))},function(e,t,n){(function(e,p){!function(n,r){"use strict";if(!n.setImmediate){var i,o,t,a,e,s=1,c={},l=!1,u=n.document,f=Object.getPrototypeOf&&Object.getPrototypeOf(n);f=f&&f.setTimeout?f:n,i="[object process]"==={}.toString.call(n.process)?function(e){p.nextTick(function(){h(e)})}:function(){if(n.postMessage&&!n.importScripts){var e=!0,t=n.onmessage;return n.onmessage=function(){e=!1},n.postMessage("","*"),n.onmessage=t,e}}()?(a="setImmediate$"+Math.random()+"$",e=function(e){e.source===n&&"string"==typeof e.data&&0===e.data.indexOf(a)&&h(+e.data.slice(a.length))},n.addEventListener?n.addEventListener("message",e,!1):n.attachEvent("onmessage",e),function(e){n.postMessage(a+e,"*")}):n.MessageChannel?((t=new MessageChannel).port1.onmessage=function(e){h(e.data)},function(e){t.port2.postMessage(e)}):u&&"onreadystatechange"in u.createElement("script")?(o=u.documentElement,function(e){var t=u.createElement("script");t.onreadystatechange=function(){h(e),t.onreadystatechange=null,o.removeChild(t),t=null},o.appendChild(t)}):function(e){setTimeout(h,0,e)},f.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n<t.length;n++)t[n]=arguments[n+1];var r={callback:e,args:t};return c[s]=r,i(s),s++},f.clearImmediate=d}function d(e){delete c[e]}function h(e){if(l)setTimeout(h,0,e);else{var t=c[e];if(t){l=!0;try{!function(e){var t=e.callback,n=e.args;switch(n.length){case 0:t();break;case 1:t(n[0]);break;case 2:t(n[0],n[1]);break;case 3:t(n[0],n[1],n[2]);break;default:t.apply(r,n)}}(t)}finally{d(e),l=!1}}}}}("undefined"==typeof self?void 0===e?this:e:self)}).call(this,n(4),n(23))},function(e,t){var n,r,i=e.exports={};function o(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function s(t){if(n===setTimeout)return setTimeout(t,0);if((n===o||!n)&&setTimeout)return n=setTimeout,setTimeout(t,0);try{return n(t,0)}catch(e){try{return n.call(null,t,0)}catch(e){return n.call(this,t,0)}}}!function(){try{n="function"==typeof setTimeout?setTimeout:o}catch(e){n=o}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}}();var c,l=[],u=!1,f=-1;function d(){u&&c&&(u=!1,c.length?l=c.concat(l):f=-1,l.length&&h())}function h(){if(!u){var e=s(d);u=!0;for(var t=l.length;t;){for(c=l,l=[];++f<t;)c&&c[f].run();f=-1,t=l.length}c=null,u=!1,function(t){if(r===clearTimeout)return clearTimeout(t);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(t);try{r(t)}catch(e){try{return r.call(null,t)}catch(e){return r.call(this,t)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function m(){}i.nextTick=function(e){var t=new Array(arguments.length-1);if(1<arguments.length)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];l.push(new p(e,t)),1!==l.length||u||s(h)},p.prototype.run=function(){this.fun.apply(null,this.array)},i.title="browser",i.browser=!0,i.env={},i.argv=[],i.version="",i.versions={},i.on=m,i.addListener=m,i.once=m,i.off=m,i.removeListener=m,i.removeAllListeners=m,i.emit=m,i.prependListener=m,i.prependOnceListener=m,i.listeners=function(e){return[]},i.binding=function(e){throw new Error("process.binding is not supported")},i.cwd=function(){return"/"},i.chdir=function(e){throw new Error("process.chdir is not supported")},i.umask=function(){return 0}},function(i,o,a){var s,c;
-/**
- * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.6
- * Copyright (C) 2019 Oliver Nightingale
- * @license MIT
- */!function(){var t,l,u,e,n,f,d,h,p,m,y,v,g,w,_,E,x,b,k,S,T,L,R,O,C,r,D=function(e){var t=new D.Builder;return t.pipeline.add(D.trimmer,D.stopWordFilter,D.stemmer),t.searchPipeline.add(D.stemmer),e.call(t,t),t.build()};D.version="2.3.6",D.utils={},D.utils.warn=(t=this,function(e){t.console&&console.warn&&console.warn(e)}),D.utils.asString=function(e){return null==e?"":e.toString()},D.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),r=0;r<n.length;r++){var i=n[r],o=e[i];if(Array.isArray(o))t[i]=o.slice();else{if("string"!=typeof o&&"number"!=typeof o&&"boolean"!=typeof o)throw new TypeError("clone is not deep and does not support nested objects");t[i]=o}}return t},D.FieldRef=function(e,t,n){this.docRef=e,this.fieldName=t,this._stringValue=n},D.FieldRef.joiner="/",D.FieldRef.fromString=function(e){var t=e.indexOf(D.FieldRef.joiner);if(-1===t)throw"malformed field ref string";var n=e.slice(0,t),r=e.slice(t+1);return new D.FieldRef(r,n,e)},D.FieldRef.prototype.toString=function(){return null==this._stringValue&&(this._stringValue=this.fieldName+D.FieldRef.joiner+this.docRef),this._stringValue},D.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var t=0;t<this.length;t++)this.elements[e[t]]=!0}else this.length=0},D.Set.complete={intersect:function(e){return e},union:function(e){return e},contains:function(){return!0}},D.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},D.Set.prototype.contains=function(e){return!!this.elements[e]},D.Set.prototype.intersect=function(e){var t,n,r,i=[];if(e===D.Set.complete)return this;if(e===D.Set.empty)return e;n=this.length<e.length?(t=this,e):(t=e,this),r=Object.keys(t.elements);for(var o=0;o<r.length;o++){var a=r[o];a in n.elements&&i.push(a)}return new D.Set(i)},D.Set.prototype.union=function(e){return e===D.Set.complete?D.Set.complete:e===D.Set.empty?this:new D.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},D.idf=function(e,t){var n=0;for(var r in e)"_index"!=r&&(n+=Object.keys(e[r]).length);var i=(t-n+.5)/(n+.5);return Math.log(1+Math.abs(i))},D.Token=function(e,t){this.str=e||"",this.metadata=t||{}},D.Token.prototype.toString=function(){return this.str},D.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},D.Token.prototype.clone=function(e){return e=e||function(e){return e},new D.Token(e(this.str,this.metadata),this.metadata)},D.tokenizer=function(e,t){if(null==e||null==e)return[];if(Array.isArray(e))return e.map(function(e){return new D.Token(D.utils.asString(e).toLowerCase(),D.utils.clone(t))});for(var n=e.toString().trim().toLowerCase(),r=n.length,i=[],o=0,a=0;o<=r;o++){var s=o-a;if(n.charAt(o).match(D.tokenizer.separator)||o==r){if(0<s){var c=D.utils.clone(t)||{};c.position=[a,s],c.index=i.length,i.push(new D.Token(n.slice(a,o),c))}a=o+1}}return i},D.tokenizer.separator=/[\s\-]+/,D.Pipeline=function(){this._stack=[]},D.Pipeline.registeredFunctions=Object.create(null),D.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&D.utils.warn("Overwriting existing registered function: "+t),e.label=t,D.Pipeline.registeredFunctions[e.label]=e},D.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||D.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},D.Pipeline.load=function(e){var n=new D.Pipeline;return e.forEach(function(e){var t=D.Pipeline.registeredFunctions[e];if(!t)throw new Error("Cannot load unregistered function: "+e);n.add(t)}),n},D.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach(function(e){D.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)},this)},D.Pipeline.prototype.after=function(e,t){D.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},D.Pipeline.prototype.before=function(e,t){D.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},D.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},D.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n<t;n++){for(var r=this._stack[n],i=[],o=0;o<e.length;o++){var a=r(e[o],o,e);if(void 0!==a&&""!==a)if(Array.isArray(a))for(var s=0;s<a.length;s++)i.push(a[s]);else i.push(a)}e=i}return e},D.Pipeline.prototype.runString=function(e,t){var n=new D.Token(e,t);return this.run([n]).map(function(e){return e.toString()})},D.Pipeline.prototype.reset=function(){this._stack=[]},D.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return D.Pipeline.warnIfFunctionNotRegistered(e),e.label})},D.Vector=function(e){this._magnitude=0,this.elements=e||[]},D.Vector.prototype.positionForIndex=function(e){if(0==this.elements.length)return 0;for(var t=0,n=this.elements.length/2,r=n-t,i=Math.floor(r/2),o=this.elements[2*i];1<r&&(o<e&&(t=i),e<o&&(n=i),o!=e);)r=n-t,i=t+Math.floor(r/2),o=this.elements[2*i];return o==e?2*i:e<o?2*i:o<e?2*(i+1):void 0},D.Vector.prototype.insert=function(e,t){this.upsert(e,t,function(){throw"duplicate index"})},D.Vector.prototype.upsert=function(e,t,n){this._magnitude=0;var r=this.positionForIndex(e);this.elements[r]==e?this.elements[r+1]=n(this.elements[r+1],t):this.elements.splice(r,0,e,t)},D.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,t=this.elements.length,n=1;n<t;n+=2){var r=this.elements[n];e+=r*r}return this._magnitude=Math.sqrt(e)},D.Vector.prototype.dot=function(e){for(var t=0,n=this.elements,r=e.elements,i=n.length,o=r.length,a=0,s=0,c=0,l=0;c<i&&l<o;)(a=n[c])<(s=r[l])?c+=2:s<a?l+=2:a==s&&(t+=n[c+1]*r[l+1],c+=2,l+=2);return t},D.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},D.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t<this.elements.length;t+=2,n++)e[n]=this.elements[t];return e},D.Vector.prototype.toJSON=function(){return this.elements},D.stemmer=(l={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},u={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},e="[aeiouy]",n="[^aeiou][^aeiouy]*",f=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*"),d=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*[aeiouy][aeiou]*[^aeiou][^aeiouy]*"),h=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy][aeiou]*[^aeiou][^aeiouy]*([aeiouy][aeiou]*)?$"),p=new RegExp("^([^aeiou][^aeiouy]*)?[aeiouy]"),m=/^(.+?)(ss|i)es$/,y=/^(.+?)([^s])s$/,v=/^(.+?)eed$/,g=/^(.+?)(ed|ing)$/,w=/.$/,_=/(at|bl|iz)$/,E=new RegExp("([^aeiouylsz])\\1$"),x=new RegExp("^"+n+e+"[^aeiouwxy]$"),b=/^(.+?[^aeiou])y$/,k=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,S=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,T=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,L=/^(.+?)(s|t)(ion)$/,R=/^(.+?)e$/,O=/ll$/,C=new RegExp("^"+n+e+"[^aeiouwxy]$"),r=function(e){var t,n,r,i,o,a,s;if(e.length<3)return e;if("y"==(r=e.substr(0,1))&&(e=r.toUpperCase()+e.substr(1)),o=y,(i=m).test(e)?e=e.replace(i,"$1$2"):o.test(e)&&(e=e.replace(o,"$1$2")),o=g,(i=v).test(e)){var c=i.exec(e);(i=f).test(c[1])&&(i=w,e=e.replace(i,""))}else if(o.test(e)){t=(c=o.exec(e))[1],(o=p).test(t)&&(a=E,s=x,(o=_).test(e=t)?e+="e":a.test(e)?(i=w,e=e.replace(i,"")):s.test(e)&&(e+="e"))}(i=b).test(e)&&(e=(t=(c=i.exec(e))[1])+"i");(i=k).test(e)&&(t=(c=i.exec(e))[1],n=c[2],(i=f).test(t)&&(e=t+l[n]));(i=S).test(e)&&(t=(c=i.exec(e))[1],n=c[2],(i=f).test(t)&&(e=t+u[n]));if(o=L,(i=T).test(e))t=(c=i.exec(e))[1],(i=d).test(t)&&(e=t);else if(o.test(e)){t=(c=o.exec(e))[1]+c[2],(o=d).test(t)&&(e=t)}(i=R).test(e)&&(t=(c=i.exec(e))[1],o=h,a=C,((i=d).test(t)||o.test(t)&&!a.test(t))&&(e=t));return o=d,(i=O).test(e)&&o.test(e)&&(i=w,e=e.replace(i,"")),"y"==r&&(e=r.toLowerCase()+e.substr(1)),e},function(e){return e.update(r)}),D.Pipeline.registerFunction(D.stemmer,"stemmer"),D.generateStopWordFilter=function(e){var t=e.reduce(function(e,t){return e[t]=t,e},{});return function(e){if(e&&t[e.toString()]!==e.toString())return e}},D.stopWordFilter=D.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),D.Pipeline.registerFunction(D.stopWordFilter,"stopWordFilter"),D.trimmer=function(e){return e.update(function(e){return e.replace(/^\W+/,"").replace(/\W+$/,"")})},D.Pipeline.registerFunction(D.trimmer,"trimmer"),D.TokenSet=function(){this.final=!1,this.edges={},this.id=D.TokenSet._nextId,D.TokenSet._nextId+=1},D.TokenSet._nextId=1,D.TokenSet.fromArray=function(e){for(var t=new D.TokenSet.Builder,n=0,r=e.length;n<r;n++)t.insert(e[n]);return t.finish(),t.root},D.TokenSet.fromClause=function(e){return"editDistance"in e?D.TokenSet.fromFuzzyString(e.term,e.editDistance):D.TokenSet.fromString(e.term)},D.TokenSet.fromFuzzyString=function(e,t){for(var n=new D.TokenSet,r=[{node:n,editsRemaining:t,str:e}];r.length;){var i=r.pop();if(0<i.str.length){var o,a=i.str.charAt(0);a in i.node.edges?o=i.node.edges[a]:(o=new D.TokenSet,i.node.edges[a]=o),1==i.str.length&&(o.final=!0),r.push({node:o,editsRemaining:i.editsRemaining,str:i.str.slice(1)})}if(0!=i.editsRemaining){if("*"in i.node.edges)var s=i.node.edges["*"];else{s=new D.TokenSet;i.node.edges["*"]=s}if(0==i.str.length&&(s.final=!0),r.push({node:s,editsRemaining:i.editsRemaining-1,str:i.str}),1<i.str.length&&r.push({node:i.node,editsRemaining:i.editsRemaining-1,str:i.str.slice(1)}),1==i.str.length&&(i.node.final=!0),1<=i.str.length){if("*"in i.node.edges)var c=i.node.edges["*"];else{c=new D.TokenSet;i.node.edges["*"]=c}1==i.str.length&&(c.final=!0),r.push({node:c,editsRemaining:i.editsRemaining-1,str:i.str.slice(1)})}if(1<i.str.length){var l,u=i.str.charAt(0),f=i.str.charAt(1);f in i.node.edges?l=i.node.edges[f]:(l=new D.TokenSet,i.node.edges[f]=l),1==i.str.length&&(l.final=!0),r.push({node:l,editsRemaining:i.editsRemaining-1,str:u+i.str.slice(2)})}}}return n},D.TokenSet.fromString=function(e){for(var t=new D.TokenSet,n=t,r=0,i=e.length;r<i;r++){var o=e[r],a=r==i-1;if("*"==o)(t.edges[o]=t).final=a;else{var s=new D.TokenSet;s.final=a,t.edges[o]=s,t=s}}return n},D.TokenSet.prototype.toArray=function(){for(var e=[],t=[{prefix:"",node:this}];t.length;){var n=t.pop(),r=Object.keys(n.node.edges),i=r.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var o=0;o<i;o++){var a=r[o];t.push({prefix:n.prefix.concat(a),node:n.node.edges[a]})}}return e},D.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",t=Object.keys(this.edges).sort(),n=t.length,r=0;r<n;r++){var i=t[r];e=e+i+this.edges[i].id}return e},D.TokenSet.prototype.intersect=function(e){for(var t=new D.TokenSet,n=void 0,r=[{qNode:e,output:t,node:this}];r.length;){n=r.pop();for(var i=Object.keys(n.qNode.edges),o=i.length,a=Object.keys(n.node.edges),s=a.length,c=0;c<o;c++)for(var l=i[c],u=0;u<s;u++){var f=a[u];if(f==l||"*"==l){var d=n.node.edges[f],h=n.qNode.edges[l],p=d.final&&h.final,m=void 0;f in n.output.edges?(m=n.output.edges[f]).final=m.final||p:((m=new D.TokenSet).final=p,n.output.edges[f]=m),r.push({qNode:h,output:m,node:d})}}}return t},D.TokenSet.Builder=function(){this.previousWord="",this.root=new D.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},D.TokenSet.Builder.prototype.insert=function(e){var t,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var r=0;r<e.length&&r<this.previousWord.length&&e[r]==this.previousWord[r];r++)n++;this.minimize(n),t=0==this.uncheckedNodes.length?this.root:this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(r=n;r<e.length;r++){var i=new D.TokenSet,o=e[r];t.edges[o]=i,this.uncheckedNodes.push({parent:t,char:o,child:i}),t=i}t.final=!0,this.previousWord=e},D.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},D.TokenSet.Builder.prototype.minimize=function(e){for(var t=this.uncheckedNodes.length-1;e<=t;t--){var n=this.uncheckedNodes[t],r=n.child.toString();r in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[r]:(n.child._str=r,this.minimizedNodes[r]=n.child),this.uncheckedNodes.pop()}},D.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},D.Index.prototype.search=function(t){return this.query(function(e){new D.QueryParser(t,e).parse()})},D.Index.prototype.query=function(e){for(var t=new D.Query(this.fields),n=Object.create(null),r=Object.create(null),i=Object.create(null),o=Object.create(null),a=Object.create(null),s=0;s<this.fields.length;s++)r[this.fields[s]]=new D.Vector;e.call(t,t);for(s=0;s<t.clauses.length;s++){var c=t.clauses[s],l=null,u=D.Set.complete;l=c.usePipeline?this.pipeline.runString(c.term,{fields:c.fields}):[c.term];for(var f=0;f<l.length;f++){var d=l[f];c.term=d;var h=D.TokenSet.fromClause(c),p=this.tokenSet.intersect(h).toArray();if(0===p.length&&c.presence===D.Query.presence.REQUIRED){for(var m=0;m<c.fields.length;m++){o[Q=c.fields[m]]=D.Set.empty}break}for(var y=0;y<p.length;y++){var v=p[y],g=this.invertedIndex[v],w=g._index;for(m=0;m<c.fields.length;m++){var _=g[Q=c.fields[m]],E=Object.keys(_),x=v+"/"+Q,b=new D.Set(E);if(c.presence==D.Query.presence.REQUIRED&&(u=u.union(b),void 0===o[Q]&&(o[Q]=D.Set.complete)),c.presence!=D.Query.presence.PROHIBITED){if(r[Q].upsert(w,c.boost,function(e,t){return e+t}),!i[x]){for(var k=0;k<E.length;k++){var S,T=E[k],L=new D.FieldRef(T,Q),R=_[T];void 0===(S=n[L])?n[L]=new D.MatchData(v,Q,R):S.add(v,Q,R)}i[x]=!0}}else void 0===a[Q]&&(a[Q]=D.Set.empty),a[Q]=a[Q].union(b)}}}if(c.presence===D.Query.presence.REQUIRED)for(m=0;m<c.fields.length;m++){o[Q=c.fields[m]]=o[Q].intersect(u)}}var O=D.Set.complete,C=D.Set.empty;for(s=0;s<this.fields.length;s++){var Q;o[Q=this.fields[s]]&&(O=O.intersect(o[Q])),a[Q]&&(C=C.union(a[Q]))}var P=Object.keys(n),A=[],I=Object.create(null);if(t.isNegated()){P=Object.keys(this.fieldVectors);for(s=0;s<P.length;s++){L=P[s];var M=D.FieldRef.fromString(L);n[L]=new D.MatchData}}for(s=0;s<P.length;s++){var N=(M=D.FieldRef.fromString(P[s])).docRef;if(O.contains(N)&&!C.contains(N)){var j,F=this.fieldVectors[M],H=r[M.fieldName].similarity(F);if(void 0!==(j=I[N]))j.score+=H,j.matchData.combine(n[M]);else{var q={ref:N,score:H,matchData:n[M]};I[N]=q,A.push(q)}}}return A.sort(function(e,t){return t.score-e.score})},D.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map(function(e){return[e,this.invertedIndex[e]]},this),t=Object.keys(this.fieldVectors).map(function(e){return[e,this.fieldVectors[e].toJSON()]},this);return{version:D.version,fields:this.fields,fieldVectors:t,invertedIndex:e,pipeline:this.pipeline.toJSON()}},D.Index.load=function(e){var t={},n={},r=e.fieldVectors,i=Object.create(null),o=e.invertedIndex,a=new D.TokenSet.Builder,s=D.Pipeline.load(e.pipeline);e.version!=D.version&&D.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+D.version+"' does not match serialized index '"+e.version+"'");for(var c=0;c<r.length;c++){var l=(f=r[c])[0],u=f[1];n[l]=new D.Vector(u)}for(c=0;c<o.length;c++){var f,d=(f=o[c])[0],h=f[1];a.insert(d),i[d]=h}return a.finish(),t.fields=e.fields,t.fieldVectors=n,t.invertedIndex=i,t.tokenSet=a.root,t.pipeline=s,new D.Index(t)},D.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=D.tokenizer,this.pipeline=new D.Pipeline,this.searchPipeline=new D.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},D.Builder.prototype.ref=function(e){this._ref=e},D.Builder.prototype.field=function(e,t){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=t||{}},D.Builder.prototype.b=function(e){this._b=e<0?0:1<e?1:e},D.Builder.prototype.k1=function(e){this._k1=e},D.Builder.prototype.add=function(e,t){var n=e[this._ref],r=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var i=0;i<r.length;i++){var o=r[i],a=this._fields[o].extractor,s=a?a(e):e[o],c=this.tokenizer(s,{fields:[o]}),l=this.pipeline.run(c),u=new D.FieldRef(n,o),f=Object.create(null);this.fieldTermFrequencies[u]=f,this.fieldLengths[u]=0,this.fieldLengths[u]+=l.length;for(var d=0;d<l.length;d++){var h=l[d];if(null==f[h]&&(f[h]=0),f[h]+=1,null==this.invertedIndex[h]){var p=Object.create(null);p._index=this.termIndex,this.termIndex+=1;for(var m=0;m<r.length;m++)p[r[m]]=Object.create(null);this.invertedIndex[h]=p}null==this.invertedIndex[h][o][n]&&(this.invertedIndex[h][o][n]=Object.create(null));for(var y=0;y<this.metadataWhitelist.length;y++){var v=this.metadataWhitelist[y],g=h.metadata[v];null==this.invertedIndex[h][o][n][v]&&(this.invertedIndex[h][o][n][v]=[]),this.invertedIndex[h][o][n][v].push(g)}}}},D.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),t=e.length,n={},r={},i=0;i<t;i++){var o=D.FieldRef.fromString(e[i]),a=o.fieldName;r[a]||(r[a]=0),r[a]+=1,n[a]||(n[a]=0),n[a]+=this.fieldLengths[o]}var s=Object.keys(this._fields);for(i=0;i<s.length;i++){var c=s[i];n[c]=n[c]/r[c]}this.averageFieldLength=n},D.Builder.prototype.createFieldVectors=function(){for(var e={},t=Object.keys(this.fieldTermFrequencies),n=t.length,r=Object.create(null),i=0;i<n;i++){for(var o=D.FieldRef.fromString(t[i]),a=o.fieldName,s=this.fieldLengths[o],c=new D.Vector,l=this.fieldTermFrequencies[o],u=Object.keys(l),f=u.length,d=this._fields[a].boost||1,h=this._documents[o.docRef].boost||1,p=0;p<f;p++){var m,y,v,g=u[p],w=l[g],_=this.invertedIndex[g]._index;void 0===r[g]?(m=D.idf(this.invertedIndex[g],this.documentCount),r[g]=m):m=r[g],y=m*((this._k1+1)*w)/(this._k1*(1-this._b+this._b*(s/this.averageFieldLength[a]))+w),y*=d,y*=h,v=Math.round(1e3*y)/1e3,c.insert(_,v)}e[o]=c}this.fieldVectors=e},D.Builder.prototype.createTokenSet=function(){this.tokenSet=D.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},D.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new D.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},D.Builder.prototype.use=function(e){var t=Array.prototype.slice.call(arguments,1);t.unshift(this),e.apply(this,t)},D.MatchData=function(e,t,n){for(var r=Object.create(null),i=Object.keys(n||{}),o=0;o<i.length;o++){var a=i[o];r[a]=n[a].slice()}this.metadata=Object.create(null),void 0!==e&&(this.metadata[e]=Object.create(null),this.metadata[e][t]=r)},D.MatchData.prototype.combine=function(e){for(var t=Object.keys(e.metadata),n=0;n<t.length;n++){var r=t[n],i=Object.keys(e.metadata[r]);null==this.metadata[r]&&(this.metadata[r]=Object.create(null));for(var o=0;o<i.length;o++){var a=i[o],s=Object.keys(e.metadata[r][a]);null==this.metadata[r][a]&&(this.metadata[r][a]=Object.create(null));for(var c=0;c<s.length;c++){var l=s[c];null==this.metadata[r][a][l]?this.metadata[r][a][l]=e.metadata[r][a][l]:this.metadata[r][a][l]=this.metadata[r][a][l].concat(e.metadata[r][a][l])}}}},D.MatchData.prototype.add=function(e,t,n){if(!(e in this.metadata))return this.metadata[e]=Object.create(null),void(this.metadata[e][t]=n);if(t in this.metadata[e])for(var r=Object.keys(n),i=0;i<r.length;i++){var o=r[i];o in this.metadata[e][t]?this.metadata[e][t][o]=this.metadata[e][t][o].concat(n[o]):this.metadata[e][t][o]=n[o]}else this.metadata[e][t]=n},D.Query=function(e){this.clauses=[],this.allFields=e},D.Query.wildcard=new String("*"),D.Query.wildcard.NONE=0,D.Query.wildcard.LEADING=1,D.Query.wildcard.TRAILING=2,D.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},D.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=D.Query.wildcard.NONE),e.wildcard&D.Query.wildcard.LEADING&&e.term.charAt(0)!=D.Query.wildcard&&(e.term="*"+e.term),e.wildcard&D.Query.wildcard.TRAILING&&e.term.slice(-1)!=D.Query.wildcard&&(e.term=e.term+"*"),"presence"in e||(e.presence=D.Query.presence.OPTIONAL),this.clauses.push(e),this},D.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=D.Query.presence.PROHIBITED)return!1;return!0},D.Query.prototype.term=function(e,t){if(Array.isArray(e))return e.forEach(function(e){this.term(e,D.utils.clone(t))},this),this;var n=t||{};return n.term=e.toString(),this.clause(n),this},D.QueryParseError=function(e,t,n){this.name="QueryParseError",this.message=e,this.start=t,this.end=n},D.QueryParseError.prototype=new Error,D.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},D.QueryLexer.prototype.run=function(){for(var e=D.QueryLexer.lexText;e;)e=e(this)},D.QueryLexer.prototype.sliceString=function(){for(var e=[],t=this.start,n=this.pos,r=0;r<this.escapeCharPositions.length;r++)n=this.escapeCharPositions[r],e.push(this.str.slice(t,n)),t=n+1;return e.push(this.str.slice(t,this.pos)),this.escapeCharPositions.length=0,e.join("")},D.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},D.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},D.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return D.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},D.QueryLexer.prototype.width=function(){return this.pos-this.start},D.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},D.QueryLexer.prototype.backup=function(){this.pos-=1},D.QueryLexer.prototype.acceptDigitRun=function(){for(var e,t;47<(t=(e=this.next()).charCodeAt(0))&&t<58;);e!=D.QueryLexer.EOS&&this.backup()},D.QueryLexer.prototype.more=function(){return this.pos<this.length},D.QueryLexer.EOS="EOS",D.QueryLexer.FIELD="FIELD",D.QueryLexer.TERM="TERM",D.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",D.QueryLexer.BOOST="BOOST",D.QueryLexer.PRESENCE="PRESENCE",D.QueryLexer.lexField=function(e){return e.backup(),e.emit(D.QueryLexer.FIELD),e.ignore(),D.QueryLexer.lexText},D.QueryLexer.lexTerm=function(e){if(1<e.width()&&(e.backup(),e.emit(D.QueryLexer.TERM)),e.ignore(),e.more())return D.QueryLexer.lexText},D.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(D.QueryLexer.EDIT_DISTANCE),D.QueryLexer.lexText},D.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(D.QueryLexer.BOOST),D.QueryLexer.lexText},D.QueryLexer.lexEOS=function(e){0<e.width()&&e.emit(D.QueryLexer.TERM)},D.QueryLexer.termSeparator=D.tokenizer.separator,D.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==D.QueryLexer.EOS)return D.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return D.QueryLexer.lexField;if("~"==t)return e.backup(),0<e.width()&&e.emit(D.QueryLexer.TERM),D.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),0<e.width()&&e.emit(D.QueryLexer.TERM),D.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(D.QueryLexer.PRESENCE),D.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(D.QueryLexer.PRESENCE),D.QueryLexer.lexText;if(t.match(D.QueryLexer.termSeparator))return D.QueryLexer.lexTerm}else e.escapeCharacter()}},D.QueryParser=function(e,t){this.lexer=new D.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},D.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=D.QueryParser.parseClause;e;)e=e(this);return this.query},D.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},D.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},D.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},D.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case D.QueryLexer.PRESENCE:return D.QueryParser.parsePresence;case D.QueryLexer.FIELD:return D.QueryParser.parseField;case D.QueryLexer.TERM:return D.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw 1<=t.str.length&&(n+=" with value '"+t.str+"'"),new D.QueryParseError(n,t.start,t.end)}},D.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=D.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=D.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new D.QueryParseError(n,t.start,t.end)}var r=e.peekLexeme();if(null==r){n="expecting term or field, found nothing";throw new D.QueryParseError(n,t.start,t.end)}switch(r.type){case D.QueryLexer.FIELD:return D.QueryParser.parseField;case D.QueryLexer.TERM:return D.QueryParser.parseTerm;default:n="expecting term or field, found '"+r.type+"'";throw new D.QueryParseError(n,r.start,r.end)}}},D.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),r="unrecognised field '"+t.str+"', possible fields: "+n;throw new D.QueryParseError(r,t.start,t.end)}e.currentClause.fields=[t.str];var i=e.peekLexeme();if(null==i){r="expecting term, found nothing";throw new D.QueryParseError(r,t.start,t.end)}switch(i.type){case D.QueryLexer.TERM:return D.QueryParser.parseTerm;default:r="expecting term, found '"+i.type+"'";throw new D.QueryParseError(r,i.start,i.end)}}},D.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case D.QueryLexer.TERM:return e.nextClause(),D.QueryParser.parseTerm;case D.QueryLexer.FIELD:return e.nextClause(),D.QueryParser.parseField;case D.QueryLexer.EDIT_DISTANCE:return D.QueryParser.parseEditDistance;case D.QueryLexer.BOOST:return D.QueryParser.parseBoost;case D.QueryLexer.PRESENCE:return e.nextClause(),D.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+n.type+"'";throw new D.QueryParseError(r,n.start,n.end)}else e.nextClause()}},D.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="edit distance must be numeric";throw new D.QueryParseError(r,t.start,t.end)}e.currentClause.editDistance=n;var i=e.peekLexeme();if(null!=i)switch(i.type){case D.QueryLexer.TERM:return e.nextClause(),D.QueryParser.parseTerm;case D.QueryLexer.FIELD:return e.nextClause(),D.QueryParser.parseField;case D.QueryLexer.EDIT_DISTANCE:return D.QueryParser.parseEditDistance;case D.QueryLexer.BOOST:return D.QueryParser.parseBoost;case D.QueryLexer.PRESENCE:return e.nextClause(),D.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+i.type+"'";throw new D.QueryParseError(r,i.start,i.end)}else e.nextClause()}},D.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="boost must be numeric";throw new D.QueryParseError(r,t.start,t.end)}e.currentClause.boost=n;var i=e.peekLexeme();if(null!=i)switch(i.type){case D.QueryLexer.TERM:return e.nextClause(),D.QueryParser.parseTerm;case D.QueryLexer.FIELD:return e.nextClause(),D.QueryParser.parseField;case D.QueryLexer.EDIT_DISTANCE:return D.QueryParser.parseEditDistance;case D.QueryLexer.BOOST:return D.QueryParser.parseBoost;case D.QueryLexer.PRESENCE:return e.nextClause(),D.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+i.type+"'";throw new D.QueryParseError(r,i.start,i.end)}else e.nextClause()}},void 0===(c="function"==typeof(s=function(){return D})?s.call(o,a,o,i):s)||(i.exports=c)}()}]));
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.da.js b/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.da.js
deleted file mode 100644
index 34910dfe5faba7f2cd385dca52906898127628be..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.da.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r,m,i;e.da=function(){this.pipeline.reset(),this.pipeline.add(e.da.trimmer,e.da.stopWordFilter,e.da.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.da.stemmer))},e.da.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.da.trimmer=e.trimmerSupport.generateTrimmer(e.da.wordCharacters),e.Pipeline.registerFunction(e.da.trimmer,"trimmer-da"),e.da.stemmer=(r=e.stemmerSupport.Among,m=e.stemmerSupport.SnowballProgram,i=new function(){var i,t,n,s=[new r("hed",-1,1),new r("ethed",0,1),new r("ered",-1,1),new r("e",-1,1),new r("erede",3,1),new r("ende",3,1),new r("erende",5,1),new r("ene",3,1),new r("erne",3,1),new r("ere",3,1),new r("en",-1,1),new r("heden",10,1),new r("eren",10,1),new r("er",-1,1),new r("heder",13,1),new r("erer",13,1),new r("s",-1,2),new r("heds",16,1),new r("es",16,1),new r("endes",18,1),new r("erendes",19,1),new r("enes",18,1),new r("ernes",18,1),new r("eres",18,1),new r("ens",16,1),new r("hedens",24,1),new r("erens",24,1),new r("ers",16,1),new r("ets",16,1),new r("erets",28,1),new r("et",-1,1),new r("eret",30,1)],o=[new r("gd",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1)],a=[new r("ig",-1,1),new r("lig",0,1),new r("elig",1,1),new r("els",-1,1),new r("løst",-1,2)],d=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],u=[239,254,42,3,0,0,0,0,0,0,0,0,0,0,0,0,16],c=new m;function l(){var e,r=c.limit-c.cursor;c.cursor>=t&&(e=c.limit_backward,c.limit_backward=t,c.ket=c.cursor,c.find_among_b(o,4)?(c.bra=c.cursor,c.limit_backward=e,c.cursor=c.limit-r,c.cursor>c.limit_backward&&(c.cursor--,c.bra=c.cursor,c.slice_del())):c.limit_backward=e)}this.setCurrent=function(e){c.setCurrent(e)},this.getCurrent=function(){return c.getCurrent()},this.stem=function(){var e,r=c.cursor;return function(){var e,r=c.cursor+3;if(t=c.limit,0<=r&&r<=c.limit){for(i=r;;){if(e=c.cursor,c.in_grouping(d,97,248)){c.cursor=e;break}if((c.cursor=e)>=c.limit)return;c.cursor++}for(;!c.out_grouping(d,97,248);){if(c.cursor>=c.limit)return;c.cursor++}(t=c.cursor)<i&&(t=i)}}(),c.limit_backward=r,c.cursor=c.limit,function(){var e,r;if(c.cursor>=t&&(r=c.limit_backward,c.limit_backward=t,c.ket=c.cursor,e=c.find_among_b(s,32),c.limit_backward=r,e))switch(c.bra=c.cursor,e){case 1:c.slice_del();break;case 2:c.in_grouping_b(u,97,229)&&c.slice_del()}}(),c.cursor=c.limit,l(),c.cursor=c.limit,function(){var e,r,i,n=c.limit-c.cursor;if(c.ket=c.cursor,c.eq_s_b(2,"st")&&(c.bra=c.cursor,c.eq_s_b(2,"ig")&&c.slice_del()),c.cursor=c.limit-n,c.cursor>=t&&(r=c.limit_backward,c.limit_backward=t,c.ket=c.cursor,e=c.find_among_b(a,5),c.limit_backward=r,e))switch(c.bra=c.cursor,e){case 1:c.slice_del(),i=c.limit-c.cursor,l(),c.cursor=c.limit-i;break;case 2:c.slice_from("løs")}}(),c.cursor=c.limit,c.cursor>=t&&(e=c.limit_backward,c.limit_backward=t,c.ket=c.cursor,c.out_grouping_b(d,97,248)?(c.bra=c.cursor,n=c.slice_to(n),c.limit_backward=e,c.eq_v_b(n)&&c.slice_del()):c.limit_backward=e),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}),e.Pipeline.registerFunction(e.da.stemmer,"stemmer-da"),e.da.stopWordFilter=e.generateStopWordFilter("ad af alle alt anden at blev blive bliver da de dem den denne der deres det dette dig din disse dog du efter eller en end er et for fra ham han hans har havde have hende hendes her hos hun hvad hvis hvor i ikke ind jeg jer jo kunne man mange med meget men mig min mine mit mod ned noget nogle nu når og også om op os over på selv sig sin sine sit skal skulle som sådan thi til ud under var vi vil ville vor være været".split(" ")),e.Pipeline.registerFunction(e.da.stopWordFilter,"stopWordFilter-da")}});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.de.js b/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.de.js
deleted file mode 100644
index 1529892c823dfa8800da280360a0876cb8627834..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.de.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var _,p,r;e.de=function(){this.pipeline.reset(),this.pipeline.add(e.de.trimmer,e.de.stopWordFilter,e.de.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.de.stemmer))},e.de.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.de.trimmer=e.trimmerSupport.generateTrimmer(e.de.wordCharacters),e.Pipeline.registerFunction(e.de.trimmer,"trimmer-de"),e.de.stemmer=(_=e.stemmerSupport.Among,p=e.stemmerSupport.SnowballProgram,r=new function(){var r,n,i,s=[new _("",-1,6),new _("U",0,2),new _("Y",0,1),new _("ä",0,3),new _("ö",0,4),new _("ü",0,5)],o=[new _("e",-1,2),new _("em",-1,1),new _("en",-1,2),new _("ern",-1,1),new _("er",-1,1),new _("s",-1,3),new _("es",5,2)],c=[new _("en",-1,1),new _("er",-1,1),new _("st",-1,2),new _("est",2,1)],u=[new _("ig",-1,1),new _("lich",-1,1)],a=[new _("end",-1,1),new _("ig",-1,2),new _("ung",-1,1),new _("lich",-1,3),new _("isch",-1,2),new _("ik",-1,2),new _("heit",-1,3),new _("keit",-1,4)],t=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32,8],d=[117,30,5],l=[117,30,4],m=new p;function h(e,r,n){return!(!m.eq_s(1,e)||(m.ket=m.cursor,!m.in_grouping(t,97,252)))&&(m.slice_from(r),m.cursor=n,!0)}function w(){for(;!m.in_grouping(t,97,252);){if(m.cursor>=m.limit)return!0;m.cursor++}for(;!m.out_grouping(t,97,252);){if(m.cursor>=m.limit)return!0;m.cursor++}return!1}function f(){return i<=m.cursor}function b(){return n<=m.cursor}this.setCurrent=function(e){m.setCurrent(e)},this.getCurrent=function(){return m.getCurrent()},this.stem=function(){var e=m.cursor;return function(){for(var e,r,n,i,s=m.cursor;;)if(e=m.cursor,m.bra=e,m.eq_s(1,"ß"))m.ket=m.cursor,m.slice_from("ss");else{if(e>=m.limit)break;m.cursor=e+1}for(m.cursor=s;;)for(r=m.cursor;;){if(n=m.cursor,m.in_grouping(t,97,252)){if(i=m.cursor,m.bra=i,h("u","U",n))break;if(m.cursor=i,h("y","Y",n))break}if(n>=m.limit)return m.cursor=r;m.cursor=n+1}}(),m.cursor=e,function(){i=m.limit,n=i;var e=m.cursor+3;0<=e&&e<=m.limit&&(r=e,w()||((i=m.cursor)<r&&(i=r),w()||(n=m.cursor)))}(),m.limit_backward=e,m.cursor=m.limit,function(){var e,r,n,i,s=m.limit-m.cursor;if(m.ket=m.cursor,(e=m.find_among_b(o,7))&&(m.bra=m.cursor,f()))switch(e){case 1:m.slice_del();break;case 2:m.slice_del(),m.ket=m.cursor,m.eq_s_b(1,"s")&&(m.bra=m.cursor,m.eq_s_b(3,"nis")&&m.slice_del());break;case 3:m.in_grouping_b(d,98,116)&&m.slice_del()}if(m.cursor=m.limit-s,m.ket=m.cursor,(e=m.find_among_b(c,4))&&(m.bra=m.cursor,f()))switch(e){case 1:m.slice_del();break;case 2:if(m.in_grouping_b(l,98,116)){var t=m.cursor-3;m.limit_backward<=t&&t<=m.limit&&(m.cursor=t,m.slice_del())}}if(m.cursor=m.limit-s,m.ket=m.cursor,(e=m.find_among_b(a,8))&&(m.bra=m.cursor,b()))switch(e){case 1:m.slice_del(),m.ket=m.cursor,m.eq_s_b(2,"ig")&&(m.bra=m.cursor,r=m.limit-m.cursor,m.eq_s_b(1,"e")||(m.cursor=m.limit-r,b()&&m.slice_del()));break;case 2:n=m.limit-m.cursor,m.eq_s_b(1,"e")||(m.cursor=m.limit-n,m.slice_del());break;case 3:if(m.slice_del(),m.ket=m.cursor,i=m.limit-m.cursor,!m.eq_s_b(2,"er")&&(m.cursor=m.limit-i,!m.eq_s_b(2,"en")))break;m.bra=m.cursor,f()&&m.slice_del();break;case 4:m.slice_del(),m.ket=m.cursor,(e=m.find_among_b(u,2))&&(m.bra=m.cursor,b()&&1==e&&m.slice_del())}}(),m.cursor=m.limit_backward,function(){for(var e,r;;){if(r=m.cursor,m.bra=r,!(e=m.find_among(s,6)))return;switch(m.ket=m.cursor,e){case 1:m.slice_from("y");break;case 2:case 5:m.slice_from("u");break;case 3:m.slice_from("a");break;case 4:m.slice_from("o");break;case 6:if(m.cursor>=m.limit)return;m.cursor++}}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return r.setCurrent(e),r.stem(),r.getCurrent()}):(r.setCurrent(e),r.stem(),r.getCurrent())}),e.Pipeline.registerFunction(e.de.stemmer,"stemmer-de"),e.de.stopWordFilter=e.generateStopWordFilter("aber alle allem allen aller alles als also am an ander andere anderem anderen anderer anderes anderm andern anderr anders auch auf aus bei bin bis bist da damit dann das dasselbe dazu daß dein deine deinem deinen deiner deines dem demselben den denn denselben der derer derselbe derselben des desselben dessen dich die dies diese dieselbe dieselben diesem diesen dieser dieses dir doch dort du durch ein eine einem einen einer eines einig einige einigem einigen einiger einiges einmal er es etwas euch euer eure eurem euren eurer eures für gegen gewesen hab habe haben hat hatte hatten hier hin hinter ich ihm ihn ihnen ihr ihre ihrem ihren ihrer ihres im in indem ins ist jede jedem jeden jeder jedes jene jenem jenen jener jenes jetzt kann kein keine keinem keinen keiner keines können könnte machen man manche manchem manchen mancher manches mein meine meinem meinen meiner meines mich mir mit muss musste nach nicht nichts noch nun nur ob oder ohne sehr sein seine seinem seinen seiner seines selbst sich sie sind so solche solchem solchen solcher solches soll sollte sondern sonst um und uns unse unsem unsen unser unses unter viel vom von vor war waren warst was weg weil weiter welche welchem welchen welcher welches wenn werde werden wie wieder will wir wird wirst wo wollen wollte während würde würden zu zum zur zwar zwischen über".split(" ")),e.Pipeline.registerFunction(e.de.stopWordFilter,"stopWordFilter-de")}});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.du.js b/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.du.js
deleted file mode 100644
index 52632004a2414fe4aee1cf9f85696d0ae66eaa3e..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.du.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var v,q,r;console.warn('[Lunr Languages] Please use the "nl" instead of the "du". The "nl" code is the standard code for Dutch language, and "du" will be removed in the next major versions.'),e.du=function(){this.pipeline.reset(),this.pipeline.add(e.du.trimmer,e.du.stopWordFilter,e.du.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.du.stemmer))},e.du.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.du.trimmer=e.trimmerSupport.generateTrimmer(e.du.wordCharacters),e.Pipeline.registerFunction(e.du.trimmer,"trimmer-du"),e.du.stemmer=(v=e.stemmerSupport.Among,q=e.stemmerSupport.SnowballProgram,r=new function(){var r,i,u,o=[new v("",-1,6),new v("á",0,1),new v("ä",0,1),new v("é",0,2),new v("ë",0,2),new v("í",0,3),new v("ï",0,3),new v("ó",0,4),new v("ö",0,4),new v("ú",0,5),new v("ü",0,5)],n=[new v("",-1,3),new v("I",0,2),new v("Y",0,1)],t=[new v("dd",-1,-1),new v("kk",-1,-1),new v("tt",-1,-1)],c=[new v("ene",-1,2),new v("se",-1,3),new v("en",-1,2),new v("heden",2,1),new v("s",-1,3)],a=[new v("end",-1,1),new v("ig",-1,2),new v("ing",-1,1),new v("lijk",-1,3),new v("baar",-1,4),new v("bar",-1,5)],l=[new v("aa",-1,-1),new v("ee",-1,-1),new v("oo",-1,-1),new v("uu",-1,-1)],m=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],d=[1,0,0,17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],f=[17,67,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],_=new q;function s(e){return(_.cursor=e)>=_.limit||(_.cursor++,!1)}function w(){for(;!_.in_grouping(m,97,232);){if(_.cursor>=_.limit)return!0;_.cursor++}for(;!_.out_grouping(m,97,232);){if(_.cursor>=_.limit)return!0;_.cursor++}return!1}function b(){return i<=_.cursor}function p(){return r<=_.cursor}function g(){var e=_.limit-_.cursor;_.find_among_b(t,3)&&(_.cursor=_.limit-e,_.ket=_.cursor,_.cursor>_.limit_backward&&(_.cursor--,_.bra=_.cursor,_.slice_del()))}function h(){var e;u=!1,_.ket=_.cursor,_.eq_s_b(1,"e")&&(_.bra=_.cursor,b()&&(e=_.limit-_.cursor,_.out_grouping_b(m,97,232)&&(_.cursor=_.limit-e,_.slice_del(),u=!0,g())))}function k(){var e;b()&&(e=_.limit-_.cursor,_.out_grouping_b(m,97,232)&&(_.cursor=_.limit-e,_.eq_s_b(3,"gem")||(_.cursor=_.limit-e,_.slice_del(),g())))}this.setCurrent=function(e){_.setCurrent(e)},this.getCurrent=function(){return _.getCurrent()},this.stem=function(){var e=_.cursor;return function(){for(var e,r,i,n=_.cursor;;){if(_.bra=_.cursor,e=_.find_among(o,11))switch(_.ket=_.cursor,e){case 1:_.slice_from("a");continue;case 2:_.slice_from("e");continue;case 3:_.slice_from("i");continue;case 4:_.slice_from("o");continue;case 5:_.slice_from("u");continue;case 6:if(_.cursor>=_.limit)break;_.cursor++;continue}break}for(_.cursor=n,_.bra=n,_.eq_s(1,"y")?(_.ket=_.cursor,_.slice_from("Y")):_.cursor=n;;)if(r=_.cursor,_.in_grouping(m,97,232)){if(i=_.cursor,_.bra=i,_.eq_s(1,"i"))_.ket=_.cursor,_.in_grouping(m,97,232)&&(_.slice_from("I"),_.cursor=r);else if(_.cursor=i,_.eq_s(1,"y"))_.ket=_.cursor,_.slice_from("Y"),_.cursor=r;else if(s(r))break}else if(s(r))break}(),_.cursor=e,i=_.limit,r=i,w()||((i=_.cursor)<3&&(i=3),w()||(r=_.cursor)),_.limit_backward=e,_.cursor=_.limit,function(){var e,r,i,n,o,t,s=_.limit-_.cursor;if(_.ket=_.cursor,e=_.find_among_b(c,5))switch(_.bra=_.cursor,e){case 1:b()&&_.slice_from("heid");break;case 2:k();break;case 3:b()&&_.out_grouping_b(f,97,232)&&_.slice_del()}if(_.cursor=_.limit-s,h(),_.cursor=_.limit-s,_.ket=_.cursor,_.eq_s_b(4,"heid")&&(_.bra=_.cursor,p()&&(r=_.limit-_.cursor,_.eq_s_b(1,"c")||(_.cursor=_.limit-r,_.slice_del(),_.ket=_.cursor,_.eq_s_b(2,"en")&&(_.bra=_.cursor,k())))),_.cursor=_.limit-s,_.ket=_.cursor,e=_.find_among_b(a,6))switch(_.bra=_.cursor,e){case 1:if(p()){if(_.slice_del(),i=_.limit-_.cursor,_.ket=_.cursor,_.eq_s_b(2,"ig")&&(_.bra=_.cursor,p()&&(n=_.limit-_.cursor,!_.eq_s_b(1,"e")))){_.cursor=_.limit-n,_.slice_del();break}_.cursor=_.limit-i,g()}break;case 2:p()&&(o=_.limit-_.cursor,_.eq_s_b(1,"e")||(_.cursor=_.limit-o,_.slice_del()));break;case 3:p()&&(_.slice_del(),h());break;case 4:p()&&_.slice_del();break;case 5:p()&&u&&_.slice_del()}_.cursor=_.limit-s,_.out_grouping_b(d,73,232)&&(t=_.limit-_.cursor,_.find_among_b(l,4)&&_.out_grouping_b(m,97,232)&&(_.cursor=_.limit-t,_.ket=_.cursor,_.cursor>_.limit_backward&&(_.cursor--,_.bra=_.cursor,_.slice_del())))}(),_.cursor=_.limit_backward,function(){for(var e;;)if(_.bra=_.cursor,e=_.find_among(n,3))switch(_.ket=_.cursor,e){case 1:_.slice_from("y");break;case 2:_.slice_from("i");break;case 3:if(_.cursor>=_.limit)return;_.cursor++}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return r.setCurrent(e),r.stem(),r.getCurrent()}):(r.setCurrent(e),r.stem(),r.getCurrent())}),e.Pipeline.registerFunction(e.du.stemmer,"stemmer-du"),e.du.stopWordFilter=e.generateStopWordFilter(" aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou".split(" ")),e.Pipeline.registerFunction(e.du.stopWordFilter,"stopWordFilter-du")}});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.es.js b/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.es.js
deleted file mode 100644
index 9de6c09cb4238addb63e4a63a54bdf83b6c8d6ff..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.es.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,s){"function"==typeof define&&define.amd?define(s):"object"==typeof exports?module.exports=s():s()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var C,P,s;e.es=function(){this.pipeline.reset(),this.pipeline.add(e.es.trimmer,e.es.stopWordFilter,e.es.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.es.stemmer))},e.es.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.es.trimmer=e.trimmerSupport.generateTrimmer(e.es.wordCharacters),e.Pipeline.registerFunction(e.es.trimmer,"trimmer-es"),e.es.stemmer=(C=e.stemmerSupport.Among,P=e.stemmerSupport.SnowballProgram,s=new function(){var r,n,i,a=[new C("",-1,6),new C("á",0,1),new C("é",0,2),new C("í",0,3),new C("ó",0,4),new C("ú",0,5)],t=[new C("la",-1,-1),new C("sela",0,-1),new C("le",-1,-1),new C("me",-1,-1),new C("se",-1,-1),new C("lo",-1,-1),new C("selo",5,-1),new C("las",-1,-1),new C("selas",7,-1),new C("les",-1,-1),new C("los",-1,-1),new C("selos",10,-1),new C("nos",-1,-1)],o=[new C("ando",-1,6),new C("iendo",-1,6),new C("yendo",-1,7),new C("ándo",-1,2),new C("iéndo",-1,1),new C("ar",-1,6),new C("er",-1,6),new C("ir",-1,6),new C("ár",-1,3),new C("ér",-1,4),new C("ír",-1,5)],s=[new C("ic",-1,-1),new C("ad",-1,-1),new C("os",-1,-1),new C("iv",-1,1)],u=[new C("able",-1,1),new C("ible",-1,1),new C("ante",-1,1)],w=[new C("ic",-1,1),new C("abil",-1,1),new C("iv",-1,1)],c=[new C("ica",-1,1),new C("ancia",-1,2),new C("encia",-1,5),new C("adora",-1,2),new C("osa",-1,1),new C("ista",-1,1),new C("iva",-1,9),new C("anza",-1,1),new C("logía",-1,3),new C("idad",-1,8),new C("able",-1,1),new C("ible",-1,1),new C("ante",-1,2),new C("mente",-1,7),new C("amente",13,6),new C("ación",-1,2),new C("ución",-1,4),new C("ico",-1,1),new C("ismo",-1,1),new C("oso",-1,1),new C("amiento",-1,1),new C("imiento",-1,1),new C("ivo",-1,9),new C("ador",-1,2),new C("icas",-1,1),new C("ancias",-1,2),new C("encias",-1,5),new C("adoras",-1,2),new C("osas",-1,1),new C("istas",-1,1),new C("ivas",-1,9),new C("anzas",-1,1),new C("logías",-1,3),new C("idades",-1,8),new C("ables",-1,1),new C("ibles",-1,1),new C("aciones",-1,2),new C("uciones",-1,4),new C("adores",-1,2),new C("antes",-1,2),new C("icos",-1,1),new C("ismos",-1,1),new C("osos",-1,1),new C("amientos",-1,1),new C("imientos",-1,1),new C("ivos",-1,9)],m=[new C("ya",-1,1),new C("ye",-1,1),new C("yan",-1,1),new C("yen",-1,1),new C("yeron",-1,1),new C("yendo",-1,1),new C("yo",-1,1),new C("yas",-1,1),new C("yes",-1,1),new C("yais",-1,1),new C("yamos",-1,1),new C("yó",-1,1)],l=[new C("aba",-1,2),new C("ada",-1,2),new C("ida",-1,2),new C("ara",-1,2),new C("iera",-1,2),new C("ía",-1,2),new C("aría",5,2),new C("ería",5,2),new C("iría",5,2),new C("ad",-1,2),new C("ed",-1,2),new C("id",-1,2),new C("ase",-1,2),new C("iese",-1,2),new C("aste",-1,2),new C("iste",-1,2),new C("an",-1,2),new C("aban",16,2),new C("aran",16,2),new C("ieran",16,2),new C("ían",16,2),new C("arían",20,2),new C("erían",20,2),new C("irían",20,2),new C("en",-1,1),new C("asen",24,2),new C("iesen",24,2),new C("aron",-1,2),new C("ieron",-1,2),new C("arán",-1,2),new C("erán",-1,2),new C("irán",-1,2),new C("ado",-1,2),new C("ido",-1,2),new C("ando",-1,2),new C("iendo",-1,2),new C("ar",-1,2),new C("er",-1,2),new C("ir",-1,2),new C("as",-1,2),new C("abas",39,2),new C("adas",39,2),new C("idas",39,2),new C("aras",39,2),new C("ieras",39,2),new C("ías",39,2),new C("arías",45,2),new C("erías",45,2),new C("irías",45,2),new C("es",-1,1),new C("ases",49,2),new C("ieses",49,2),new C("abais",-1,2),new C("arais",-1,2),new C("ierais",-1,2),new C("íais",-1,2),new C("aríais",55,2),new C("eríais",55,2),new C("iríais",55,2),new C("aseis",-1,2),new C("ieseis",-1,2),new C("asteis",-1,2),new C("isteis",-1,2),new C("áis",-1,2),new C("éis",-1,1),new C("aréis",64,2),new C("eréis",64,2),new C("iréis",64,2),new C("ados",-1,2),new C("idos",-1,2),new C("amos",-1,2),new C("ábamos",70,2),new C("áramos",70,2),new C("iéramos",70,2),new C("íamos",70,2),new C("aríamos",74,2),new C("eríamos",74,2),new C("iríamos",74,2),new C("emos",-1,1),new C("aremos",78,2),new C("eremos",78,2),new C("iremos",78,2),new C("ásemos",78,2),new C("iésemos",78,2),new C("imos",-1,2),new C("arás",-1,2),new C("erás",-1,2),new C("irás",-1,2),new C("ís",-1,2),new C("ará",-1,2),new C("erá",-1,2),new C("irá",-1,2),new C("aré",-1,2),new C("eré",-1,2),new C("iré",-1,2),new C("ió",-1,2)],d=[new C("a",-1,1),new C("e",-1,2),new C("o",-1,1),new C("os",-1,1),new C("á",-1,1),new C("é",-1,2),new C("í",-1,1),new C("ó",-1,1)],b=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,4,10],f=new P;function _(){if(f.out_grouping(b,97,252)){for(;!f.in_grouping(b,97,252);){if(f.cursor>=f.limit)return!0;f.cursor++}return!1}return!0}function h(){var e,s=f.cursor;if(function(){if(f.in_grouping(b,97,252)){var e=f.cursor;if(_()){if(f.cursor=e,!f.in_grouping(b,97,252))return!0;for(;!f.out_grouping(b,97,252);){if(f.cursor>=f.limit)return!0;f.cursor++}}return!1}return!0}()){if(f.cursor=s,!f.out_grouping(b,97,252))return;if(e=f.cursor,_()){if(f.cursor=e,!f.in_grouping(b,97,252)||f.cursor>=f.limit)return;f.cursor++}}i=f.cursor}function v(){for(;!f.in_grouping(b,97,252);){if(f.cursor>=f.limit)return!1;f.cursor++}for(;!f.out_grouping(b,97,252);){if(f.cursor>=f.limit)return!1;f.cursor++}return!0}function p(){return i<=f.cursor}function g(){return r<=f.cursor}function k(e,s){if(!g())return!0;f.slice_del(),f.ket=f.cursor;var r=f.find_among_b(e,s);return r&&(f.bra=f.cursor,1==r&&g()&&f.slice_del()),!1}function y(e){return!g()||(f.slice_del(),f.ket=f.cursor,f.eq_s_b(2,e)&&(f.bra=f.cursor,g()&&f.slice_del()),!1)}function q(){var e;if(f.ket=f.cursor,e=f.find_among_b(c,46)){switch(f.bra=f.cursor,e){case 1:if(!g())return!1;f.slice_del();break;case 2:if(y("ic"))return!1;break;case 3:if(!g())return!1;f.slice_from("log");break;case 4:if(!g())return!1;f.slice_from("u");break;case 5:if(!g())return!1;f.slice_from("ente");break;case 6:if(!(n<=f.cursor))return!1;f.slice_del(),f.ket=f.cursor,(e=f.find_among_b(s,4))&&(f.bra=f.cursor,g()&&(f.slice_del(),1==e&&(f.ket=f.cursor,f.eq_s_b(2,"at")&&(f.bra=f.cursor,g()&&f.slice_del()))));break;case 7:if(k(u,3))return!1;break;case 8:if(k(w,3))return!1;break;case 9:if(y("at"))return!1}return!0}return!1}this.setCurrent=function(e){f.setCurrent(e)},this.getCurrent=function(){return f.getCurrent()},this.stem=function(){var e,s=f.cursor;return e=f.cursor,i=f.limit,r=n=i,h(),f.cursor=e,v()&&(n=f.cursor,v()&&(r=f.cursor)),f.limit_backward=s,f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,f.find_among_b(t,13)&&(f.bra=f.cursor,(e=f.find_among_b(o,11))&&p()))switch(e){case 1:f.bra=f.cursor,f.slice_from("iendo");break;case 2:f.bra=f.cursor,f.slice_from("ando");break;case 3:f.bra=f.cursor,f.slice_from("ar");break;case 4:f.bra=f.cursor,f.slice_from("er");break;case 5:f.bra=f.cursor,f.slice_from("ir");break;case 6:f.slice_del();break;case 7:f.eq_s_b(1,"u")&&f.slice_del()}}(),f.cursor=f.limit,q()||(f.cursor=f.limit,function(){var e,s;if(f.cursor>=i&&(s=f.limit_backward,f.limit_backward=i,f.ket=f.cursor,e=f.find_among_b(m,12),f.limit_backward=s,e)){if(f.bra=f.cursor,1==e){if(!f.eq_s_b(1,"u"))return!1;f.slice_del()}return!0}return!1}()||(f.cursor=f.limit,function(){var e,s,r,n;if(f.cursor>=i&&(s=f.limit_backward,f.limit_backward=i,f.ket=f.cursor,e=f.find_among_b(l,96),f.limit_backward=s,e))switch(f.bra=f.cursor,e){case 1:r=f.limit-f.cursor,f.eq_s_b(1,"u")?(n=f.limit-f.cursor,f.eq_s_b(1,"g")?f.cursor=f.limit-n:f.cursor=f.limit-r):f.cursor=f.limit-r,f.bra=f.cursor;case 2:f.slice_del()}}())),f.cursor=f.limit,function(){var e,s;if(f.ket=f.cursor,e=f.find_among_b(d,8))switch(f.bra=f.cursor,e){case 1:p()&&f.slice_del();break;case 2:p()&&(f.slice_del(),f.ket=f.cursor,f.eq_s_b(1,"u")&&(f.bra=f.cursor,s=f.limit-f.cursor,f.eq_s_b(1,"g")&&(f.cursor=f.limit-s,p()&&f.slice_del())))}}(),f.cursor=f.limit_backward,function(){for(var e;;){if(f.bra=f.cursor,e=f.find_among(a,6))switch(f.ket=f.cursor,e){case 1:f.slice_from("a");continue;case 2:f.slice_from("e");continue;case 3:f.slice_from("i");continue;case 4:f.slice_from("o");continue;case 5:f.slice_from("u");continue;case 6:if(f.cursor>=f.limit)break;f.cursor++;continue}break}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return s.setCurrent(e),s.stem(),s.getCurrent()}):(s.setCurrent(e),s.stem(),s.getCurrent())}),e.Pipeline.registerFunction(e.es.stemmer,"stemmer-es"),e.es.stopWordFilter=e.generateStopWordFilter("a al algo algunas algunos ante antes como con contra cual cuando de del desde donde durante e el ella ellas ellos en entre era erais eran eras eres es esa esas ese eso esos esta estaba estabais estaban estabas estad estada estadas estado estados estamos estando estar estaremos estará estarán estarás estaré estaréis estaría estaríais estaríamos estarían estarías estas este estemos esto estos estoy estuve estuviera estuvierais estuvieran estuvieras estuvieron estuviese estuvieseis estuviesen estuvieses estuvimos estuviste estuvisteis estuviéramos estuviésemos estuvo está estábamos estáis están estás esté estéis estén estés fue fuera fuerais fueran fueras fueron fuese fueseis fuesen fueses fui fuimos fuiste fuisteis fuéramos fuésemos ha habida habidas habido habidos habiendo habremos habrá habrán habrás habré habréis habría habríais habríamos habrían habrías habéis había habíais habíamos habían habías han has hasta hay haya hayamos hayan hayas hayáis he hemos hube hubiera hubierais hubieran hubieras hubieron hubiese hubieseis hubiesen hubieses hubimos hubiste hubisteis hubiéramos hubiésemos hubo la las le les lo los me mi mis mucho muchos muy más mí mía mías mío míos nada ni no nos nosotras nosotros nuestra nuestras nuestro nuestros o os otra otras otro otros para pero poco por porque que quien quienes qué se sea seamos sean seas seremos será serán serás seré seréis sería seríais seríamos serían serías seáis sido siendo sin sobre sois somos son soy su sus suya suyas suyo suyos sí también tanto te tendremos tendrá tendrán tendrás tendré tendréis tendría tendríais tendríamos tendrían tendrías tened tenemos tenga tengamos tengan tengas tengo tengáis tenida tenidas tenido tenidos teniendo tenéis tenía teníais teníamos tenían tenías ti tiene tienen tienes todo todos tu tus tuve tuviera tuvierais tuvieran tuvieras tuvieron tuviese tuvieseis tuviesen tuvieses tuvimos tuviste tuvisteis tuviéramos tuviésemos tuvo tuya tuyas tuyo tuyos tú un una uno unos vosotras vosotros vuestra vuestras vuestro vuestros y ya yo él éramos".split(" ")),e.Pipeline.registerFunction(e.es.stopWordFilter,"stopWordFilter-es")}});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.fi.js b/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.fi.js
deleted file mode 100644
index 2f9bf5aebdb39583df031edacfc61c32f399c4b8..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.fi.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(i,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():e()(i.lunr)}(this,function(){return function(i){if(void 0===i)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===i.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var v,C,e;i.fi=function(){this.pipeline.reset(),this.pipeline.add(i.fi.trimmer,i.fi.stopWordFilter,i.fi.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(i.fi.stemmer))},i.fi.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",i.fi.trimmer=i.trimmerSupport.generateTrimmer(i.fi.wordCharacters),i.Pipeline.registerFunction(i.fi.trimmer,"trimmer-fi"),i.fi.stemmer=(v=i.stemmerSupport.Among,C=i.stemmerSupport.SnowballProgram,e=new function(){var n,t,l,o,r=[new v("pa",-1,1),new v("sti",-1,2),new v("kaan",-1,1),new v("han",-1,1),new v("kin",-1,1),new v("hän",-1,1),new v("kään",-1,1),new v("ko",-1,1),new v("pä",-1,1),new v("kö",-1,1)],s=[new v("lla",-1,-1),new v("na",-1,-1),new v("ssa",-1,-1),new v("ta",-1,-1),new v("lta",3,-1),new v("sta",3,-1)],a=[new v("llä",-1,-1),new v("nä",-1,-1),new v("ssä",-1,-1),new v("tä",-1,-1),new v("ltä",3,-1),new v("stä",3,-1)],u=[new v("lle",-1,-1),new v("ine",-1,-1)],c=[new v("nsa",-1,3),new v("mme",-1,3),new v("nne",-1,3),new v("ni",-1,2),new v("si",-1,1),new v("an",-1,4),new v("en",-1,6),new v("än",-1,5),new v("nsä",-1,3)],i=[new v("aa",-1,-1),new v("ee",-1,-1),new v("ii",-1,-1),new v("oo",-1,-1),new v("uu",-1,-1),new v("ää",-1,-1),new v("öö",-1,-1)],m=[new v("a",-1,8),new v("lla",0,-1),new v("na",0,-1),new v("ssa",0,-1),new v("ta",0,-1),new v("lta",4,-1),new v("sta",4,-1),new v("tta",4,9),new v("lle",-1,-1),new v("ine",-1,-1),new v("ksi",-1,-1),new v("n",-1,7),new v("han",11,1),new v("den",11,-1,q),new v("seen",11,-1,j),new v("hen",11,2),new v("tten",11,-1,q),new v("hin",11,3),new v("siin",11,-1,q),new v("hon",11,4),new v("hän",11,5),new v("hön",11,6),new v("ä",-1,8),new v("llä",22,-1),new v("nä",22,-1),new v("ssä",22,-1),new v("tä",22,-1),new v("ltä",26,-1),new v("stä",26,-1),new v("ttä",26,9)],w=[new v("eja",-1,-1),new v("mma",-1,1),new v("imma",1,-1),new v("mpa",-1,1),new v("impa",3,-1),new v("mmi",-1,1),new v("immi",5,-1),new v("mpi",-1,1),new v("impi",7,-1),new v("ejä",-1,-1),new v("mmä",-1,1),new v("immä",10,-1),new v("mpä",-1,1),new v("impä",12,-1)],_=[new v("i",-1,-1),new v("j",-1,-1)],k=[new v("mma",-1,1),new v("imma",0,-1)],b=[17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8],d=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],e=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],f=[17,97,24,1,0,0,0,0,0,0,0,0,0,0,0,0,8,0,32],h=new C;function p(){for(var i;i=h.cursor,!h.in_grouping(d,97,246);){if((h.cursor=i)>=h.limit)return!0;h.cursor++}for(h.cursor=i;!h.out_grouping(d,97,246);){if(h.cursor>=h.limit)return!0;h.cursor++}return!1}function g(){var i,e;if(h.cursor>=o)if(e=h.limit_backward,h.limit_backward=o,h.ket=h.cursor,i=h.find_among_b(r,10)){switch(h.bra=h.cursor,h.limit_backward=e,i){case 1:if(!h.in_grouping_b(f,97,246))return;break;case 2:if(!(l<=h.cursor))return}h.slice_del()}else h.limit_backward=e}function j(){return h.find_among_b(i,7)}function q(){return h.eq_s_b(1,"i")&&h.in_grouping_b(e,97,246)}this.setCurrent=function(i){h.setCurrent(i)},this.getCurrent=function(){return h.getCurrent()},this.stem=function(){var i,e=h.cursor;return o=h.limit,l=o,p()||(o=h.cursor,p()||(l=h.cursor)),n=!1,h.limit_backward=e,h.cursor=h.limit,g(),h.cursor=h.limit,function(){var i,e,r;if(h.cursor>=o)if(e=h.limit_backward,h.limit_backward=o,h.ket=h.cursor,i=h.find_among_b(c,9))switch(h.bra=h.cursor,h.limit_backward=e,i){case 1:r=h.limit-h.cursor,h.eq_s_b(1,"k")||(h.cursor=h.limit-r,h.slice_del());break;case 2:h.slice_del(),h.ket=h.cursor,h.eq_s_b(3,"kse")&&(h.bra=h.cursor,h.slice_from("ksi"));break;case 3:h.slice_del();break;case 4:h.find_among_b(s,6)&&h.slice_del();break;case 5:h.find_among_b(a,6)&&h.slice_del();break;case 6:h.find_among_b(u,2)&&h.slice_del()}else h.limit_backward=e}(),h.cursor=h.limit,function(){var i,e,r;if(h.cursor>=o)if(e=h.limit_backward,h.limit_backward=o,h.ket=h.cursor,i=h.find_among_b(m,30)){switch(h.bra=h.cursor,h.limit_backward=e,i){case 1:if(!h.eq_s_b(1,"a"))return;break;case 2:case 9:if(!h.eq_s_b(1,"e"))return;break;case 3:if(!h.eq_s_b(1,"i"))return;break;case 4:if(!h.eq_s_b(1,"o"))return;break;case 5:if(!h.eq_s_b(1,"ä"))return;break;case 6:if(!h.eq_s_b(1,"ö"))return;break;case 7:if(r=h.limit-h.cursor,!j()&&(h.cursor=h.limit-r,!h.eq_s_b(2,"ie"))){h.cursor=h.limit-r;break}if(h.cursor=h.limit-r,h.cursor<=h.limit_backward){h.cursor=h.limit-r;break}h.cursor--,h.bra=h.cursor;break;case 8:if(!h.in_grouping_b(d,97,246)||!h.out_grouping_b(d,97,246))return}h.slice_del(),n=!0}else h.limit_backward=e}(),h.cursor=h.limit,function(){var i,e,r;if(h.cursor>=l)if(e=h.limit_backward,h.limit_backward=l,h.ket=h.cursor,i=h.find_among_b(w,14)){if(h.bra=h.cursor,h.limit_backward=e,1==i){if(r=h.limit-h.cursor,h.eq_s_b(2,"po"))return;h.cursor=h.limit-r}h.slice_del()}else h.limit_backward=e}(),h.cursor=h.limit,h.cursor=(n?h.cursor>=o&&(i=h.limit_backward,h.limit_backward=o,h.ket=h.cursor,h.find_among_b(_,2)?(h.bra=h.cursor,h.limit_backward=i,h.slice_del()):h.limit_backward=i):(h.cursor=h.limit,function(){var i,e,r,n,t,s;if(h.cursor>=o){if(e=h.limit_backward,h.limit_backward=o,h.ket=h.cursor,h.eq_s_b(1,"t")&&(h.bra=h.cursor,r=h.limit-h.cursor,h.in_grouping_b(d,97,246)&&(h.cursor=h.limit-r,h.slice_del(),h.limit_backward=e,n=h.limit-h.cursor,h.cursor>=l&&(h.cursor=l,t=h.limit_backward,h.limit_backward=h.cursor,h.cursor=h.limit-n,h.ket=h.cursor,i=h.find_among_b(k,2))))){if(h.bra=h.cursor,h.limit_backward=t,1==i){if(s=h.limit-h.cursor,h.eq_s_b(2,"po"))return;h.cursor=h.limit-s}return h.slice_del()}h.limit_backward=e}}()),h.limit),function(){var i,e,r,n;if(h.cursor>=o){for(i=h.limit_backward,h.limit_backward=o,e=h.limit-h.cursor,j()&&(h.cursor=h.limit-e,h.ket=h.cursor,h.cursor>h.limit_backward&&(h.cursor--,h.bra=h.cursor,h.slice_del())),h.cursor=h.limit-e,h.ket=h.cursor,h.in_grouping_b(b,97,228)&&(h.bra=h.cursor,h.out_grouping_b(d,97,246)&&h.slice_del()),h.cursor=h.limit-e,h.ket=h.cursor,h.eq_s_b(1,"j")&&(h.bra=h.cursor,r=h.limit-h.cursor,h.eq_s_b(1,"o")?h.slice_del():(h.cursor=h.limit-r,h.eq_s_b(1,"u")&&h.slice_del())),h.cursor=h.limit-e,h.ket=h.cursor,h.eq_s_b(1,"o")&&(h.bra=h.cursor,h.eq_s_b(1,"j")&&h.slice_del()),h.cursor=h.limit-e,h.limit_backward=i;;){if(n=h.limit-h.cursor,h.out_grouping_b(d,97,246)){h.cursor=h.limit-n;break}if(h.cursor=h.limit-n,h.cursor<=h.limit_backward)return;h.cursor--}h.ket=h.cursor,h.cursor>h.limit_backward&&(h.cursor--,h.bra=h.cursor,t=h.slice_to(),h.eq_v_b(t)&&h.slice_del())}}(),!0}},function(i){return"function"==typeof i.update?i.update(function(i){return e.setCurrent(i),e.stem(),e.getCurrent()}):(e.setCurrent(i),e.stem(),e.getCurrent())}),i.Pipeline.registerFunction(i.fi.stemmer,"stemmer-fi"),i.fi.stopWordFilter=i.generateStopWordFilter("ei eivät emme en et ette että he heidän heidät heihin heille heillä heiltä heissä heistä heitä hän häneen hänelle hänellä häneltä hänen hänessä hänestä hänet häntä itse ja johon joiden joihin joiksi joilla joille joilta joina joissa joista joita joka joksi jolla jolle jolta jona jonka jos jossa josta jota jotka kanssa keiden keihin keiksi keille keillä keiltä keinä keissä keistä keitä keneen keneksi kenelle kenellä keneltä kenen kenenä kenessä kenestä kenet ketkä ketkä ketä koska kuin kuka kun me meidän meidät meihin meille meillä meiltä meissä meistä meitä mihin miksi mikä mille millä miltä minkä minkä minua minulla minulle minulta minun minussa minusta minut minuun minä minä missä mistä mitkä mitä mukaan mutta ne niiden niihin niiksi niille niillä niiltä niin niin niinä niissä niistä niitä noiden noihin noiksi noilla noille noilta noin noina noissa noista noita nuo nyt näiden näihin näiksi näille näillä näiltä näinä näissä näistä näitä nämä ole olemme olen olet olette oli olimme olin olisi olisimme olisin olisit olisitte olisivat olit olitte olivat olla olleet ollut on ovat poikki se sekä sen siihen siinä siitä siksi sille sillä sillä siltä sinua sinulla sinulle sinulta sinun sinussa sinusta sinut sinuun sinä sinä sitä tai te teidän teidät teihin teille teillä teiltä teissä teistä teitä tuo tuohon tuoksi tuolla tuolle tuolta tuon tuona tuossa tuosta tuota tähän täksi tälle tällä tältä tämä tämän tänä tässä tästä tätä vaan vai vaikka yli".split(" ")),i.Pipeline.registerFunction(i.fi.stopWordFilter,"stopWordFilter-fi")}});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.fr.js b/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.fr.js
deleted file mode 100644
index 078d0cab706bad2c6548af839fe50f89ff29011d..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.fr.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r,y,s;e.fr=function(){this.pipeline.reset(),this.pipeline.add(e.fr.trimmer,e.fr.stopWordFilter,e.fr.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.fr.stemmer))},e.fr.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.fr.trimmer=e.trimmerSupport.generateTrimmer(e.fr.wordCharacters),e.Pipeline.registerFunction(e.fr.trimmer,"trimmer-fr"),e.fr.stemmer=(r=e.stemmerSupport.Among,y=e.stemmerSupport.SnowballProgram,s=new function(){var s,i,t,n=[new r("col",-1,-1),new r("par",-1,-1),new r("tap",-1,-1)],u=[new r("",-1,4),new r("I",0,1),new r("U",0,2),new r("Y",0,3)],o=[new r("iqU",-1,3),new r("abl",-1,3),new r("Ièr",-1,4),new r("ièr",-1,4),new r("eus",-1,2),new r("iv",-1,1)],c=[new r("ic",-1,2),new r("abil",-1,1),new r("iv",-1,3)],a=[new r("iqUe",-1,1),new r("atrice",-1,2),new r("ance",-1,1),new r("ence",-1,5),new r("logie",-1,3),new r("able",-1,1),new r("isme",-1,1),new r("euse",-1,11),new r("iste",-1,1),new r("ive",-1,8),new r("if",-1,8),new r("usion",-1,4),new r("ation",-1,2),new r("ution",-1,4),new r("ateur",-1,2),new r("iqUes",-1,1),new r("atrices",-1,2),new r("ances",-1,1),new r("ences",-1,5),new r("logies",-1,3),new r("ables",-1,1),new r("ismes",-1,1),new r("euses",-1,11),new r("istes",-1,1),new r("ives",-1,8),new r("ifs",-1,8),new r("usions",-1,4),new r("ations",-1,2),new r("utions",-1,4),new r("ateurs",-1,2),new r("ments",-1,15),new r("ements",30,6),new r("issements",31,12),new r("ités",-1,7),new r("ment",-1,15),new r("ement",34,6),new r("issement",35,12),new r("amment",34,13),new r("emment",34,14),new r("aux",-1,10),new r("eaux",39,9),new r("eux",-1,1),new r("ité",-1,7)],l=[new r("ira",-1,1),new r("ie",-1,1),new r("isse",-1,1),new r("issante",-1,1),new r("i",-1,1),new r("irai",4,1),new r("ir",-1,1),new r("iras",-1,1),new r("ies",-1,1),new r("îmes",-1,1),new r("isses",-1,1),new r("issantes",-1,1),new r("îtes",-1,1),new r("is",-1,1),new r("irais",13,1),new r("issais",13,1),new r("irions",-1,1),new r("issions",-1,1),new r("irons",-1,1),new r("issons",-1,1),new r("issants",-1,1),new r("it",-1,1),new r("irait",21,1),new r("issait",21,1),new r("issant",-1,1),new r("iraIent",-1,1),new r("issaIent",-1,1),new r("irent",-1,1),new r("issent",-1,1),new r("iront",-1,1),new r("ît",-1,1),new r("iriez",-1,1),new r("issiez",-1,1),new r("irez",-1,1),new r("issez",-1,1)],w=[new r("a",-1,3),new r("era",0,2),new r("asse",-1,3),new r("ante",-1,3),new r("ée",-1,2),new r("ai",-1,3),new r("erai",5,2),new r("er",-1,2),new r("as",-1,3),new r("eras",8,2),new r("âmes",-1,3),new r("asses",-1,3),new r("antes",-1,3),new r("âtes",-1,3),new r("ées",-1,2),new r("ais",-1,3),new r("erais",15,2),new r("ions",-1,1),new r("erions",17,2),new r("assions",17,3),new r("erons",-1,2),new r("ants",-1,3),new r("és",-1,2),new r("ait",-1,3),new r("erait",23,2),new r("ant",-1,3),new r("aIent",-1,3),new r("eraIent",26,2),new r("èrent",-1,2),new r("assent",-1,3),new r("eront",-1,2),new r("ât",-1,3),new r("ez",-1,2),new r("iez",32,2),new r("eriez",33,2),new r("assiez",33,3),new r("erez",32,2),new r("é",-1,2)],f=[new r("e",-1,3),new r("Ière",0,2),new r("ière",0,2),new r("ion",-1,1),new r("Ier",-1,2),new r("ier",-1,2),new r("ë",-1,4)],m=[new r("ell",-1,-1),new r("eill",-1,-1),new r("enn",-1,-1),new r("onn",-1,-1),new r("ett",-1,-1)],_=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,128,130,103,8,5],b=[1,65,20,0,0,0,0,0,0,0,0,0,0,0,0,0,128],d=new y;function k(e,r,s){return!(!d.eq_s(1,e)||(d.ket=d.cursor,!d.in_grouping(_,97,251)))&&(d.slice_from(r),d.cursor=s,!0)}function p(e,r,s){return!!d.eq_s(1,e)&&(d.ket=d.cursor,d.slice_from(r),d.cursor=s,!0)}function g(){for(;!d.in_grouping(_,97,251);){if(d.cursor>=d.limit)return!0;d.cursor++}for(;!d.out_grouping(_,97,251);){if(d.cursor>=d.limit)return!0;d.cursor++}return!1}function q(){return t<=d.cursor}function v(){return i<=d.cursor}function h(){return s<=d.cursor}function z(){if(!function(){var e,r;if(d.ket=d.cursor,e=d.find_among_b(a,43)){switch(d.bra=d.cursor,e){case 1:if(!h())return!1;d.slice_del();break;case 2:if(!h())return!1;d.slice_del(),d.ket=d.cursor,d.eq_s_b(2,"ic")&&(d.bra=d.cursor,h()?d.slice_del():d.slice_from("iqU"));break;case 3:if(!h())return!1;d.slice_from("log");break;case 4:if(!h())return!1;d.slice_from("u");break;case 5:if(!h())return!1;d.slice_from("ent");break;case 6:if(!q())return!1;if(d.slice_del(),d.ket=d.cursor,e=d.find_among_b(o,6))switch(d.bra=d.cursor,e){case 1:h()&&(d.slice_del(),d.ket=d.cursor,d.eq_s_b(2,"at")&&(d.bra=d.cursor,h()&&d.slice_del()));break;case 2:h()?d.slice_del():v()&&d.slice_from("eux");break;case 3:h()&&d.slice_del();break;case 4:q()&&d.slice_from("i")}break;case 7:if(!h())return!1;if(d.slice_del(),d.ket=d.cursor,e=d.find_among_b(c,3))switch(d.bra=d.cursor,e){case 1:h()?d.slice_del():d.slice_from("abl");break;case 2:h()?d.slice_del():d.slice_from("iqU");break;case 3:h()&&d.slice_del()}break;case 8:if(!h())return!1;if(d.slice_del(),d.ket=d.cursor,d.eq_s_b(2,"at")&&(d.bra=d.cursor,h()&&(d.slice_del(),d.ket=d.cursor,d.eq_s_b(2,"ic")))){d.bra=d.cursor,h()?d.slice_del():d.slice_from("iqU");break}break;case 9:d.slice_from("eau");break;case 10:if(!v())return!1;d.slice_from("al");break;case 11:if(h())d.slice_del();else{if(!v())return!1;d.slice_from("eux")}break;case 12:if(!v()||!d.out_grouping_b(_,97,251))return!1;d.slice_del();break;case 13:return q()&&d.slice_from("ant"),!1;case 14:return q()&&d.slice_from("ent"),!1;case 15:return r=d.limit-d.cursor,d.in_grouping_b(_,97,251)&&q()&&(d.cursor=d.limit-r,d.slice_del()),!1}return!0}return!1}()&&(d.cursor=d.limit,!function(){var e,r;if(d.cursor<t)return!1;if(r=d.limit_backward,d.limit_backward=t,d.ket=d.cursor,!(e=d.find_among_b(l,35)))return d.limit_backward=r,!1;if(d.bra=d.cursor,1==e){if(!d.out_grouping_b(_,97,251))return d.limit_backward=r,!1;d.slice_del()}return d.limit_backward=r,!0}()&&(d.cursor=d.limit,!function(){var e,r,s;if(d.cursor<t)return!1;if(r=d.limit_backward,d.limit_backward=t,d.ket=d.cursor,!(e=d.find_among_b(w,38)))return d.limit_backward=r,!1;switch(d.bra=d.cursor,e){case 1:if(!h())return d.limit_backward=r,!1;d.slice_del();break;case 2:d.slice_del();break;case 3:d.slice_del(),s=d.limit-d.cursor,d.ket=d.cursor,d.eq_s_b(1,"e")?(d.bra=d.cursor,d.slice_del()):d.cursor=d.limit-s}return d.limit_backward=r,!0}())))return d.cursor=d.limit,void function(){var e,r,s,i,n=d.limit-d.cursor;if(d.ket=d.cursor,d.eq_s_b(1,"s")?(d.bra=d.cursor,r=d.limit-d.cursor,d.out_grouping_b(b,97,232)?(d.cursor=d.limit-r,d.slice_del()):d.cursor=d.limit-n):d.cursor=d.limit-n,d.cursor>=t){if(s=d.limit_backward,d.limit_backward=t,d.ket=d.cursor,e=d.find_among_b(f,7))switch(d.bra=d.cursor,e){case 1:if(h()){if(i=d.limit-d.cursor,!d.eq_s_b(1,"s")&&(d.cursor=d.limit-i,!d.eq_s_b(1,"t")))break;d.slice_del()}break;case 2:d.slice_from("i");break;case 3:d.slice_del();break;case 4:d.eq_s_b(2,"gu")&&d.slice_del()}d.limit_backward=s}}();d.cursor=d.limit,d.ket=d.cursor,d.eq_s_b(1,"Y")?(d.bra=d.cursor,d.slice_from("i")):(d.cursor=d.limit,d.eq_s_b(1,"ç")&&(d.bra=d.cursor,d.slice_from("c")))}this.setCurrent=function(e){d.setCurrent(e)},this.getCurrent=function(){return d.getCurrent()},this.stem=function(){var e,r=d.cursor;return function(){for(var e,r;;){if(e=d.cursor,d.in_grouping(_,97,251)){if(d.bra=d.cursor,r=d.cursor,k("u","U",e))continue;if(d.cursor=r,k("i","I",e))continue;if(d.cursor=r,p("y","Y",e))continue}if(d.cursor=e,!k("y","Y",d.bra=e)){if(d.cursor=e,d.eq_s(1,"q")&&(d.bra=d.cursor,p("u","U",e)))continue;if((d.cursor=e)>=d.limit)return;d.cursor++}}}(),d.cursor=r,function(){var e=d.cursor;if(t=d.limit,s=i=t,d.in_grouping(_,97,251)&&d.in_grouping(_,97,251)&&d.cursor<d.limit)d.cursor++;else if(d.cursor=e,!d.find_among(n,3)){d.cursor=e;do{if(d.cursor>=d.limit){d.cursor=t;break}d.cursor++}while(!d.in_grouping(_,97,251))}t=d.cursor,d.cursor=e,g()||(i=d.cursor,g()||(s=d.cursor))}(),d.limit_backward=r,d.cursor=d.limit,z(),d.cursor=d.limit,e=d.limit-d.cursor,d.find_among_b(m,5)&&(d.cursor=d.limit-e,d.ket=d.cursor,d.cursor>d.limit_backward&&(d.cursor--,d.bra=d.cursor,d.slice_del())),d.cursor=d.limit,function(){for(var e,r=1;d.out_grouping_b(_,97,251);)r--;if(r<=0){if(d.ket=d.cursor,e=d.limit-d.cursor,!d.eq_s_b(1,"é")&&(d.cursor=d.limit-e,!d.eq_s_b(1,"è")))return;d.bra=d.cursor,d.slice_from("e")}}(),d.cursor=d.limit_backward,function(){for(var e,r;r=d.cursor,d.bra=r,e=d.find_among(u,4);)switch(d.ket=d.cursor,e){case 1:d.slice_from("i");break;case 2:d.slice_from("u");break;case 3:d.slice_from("y");break;case 4:if(d.cursor>=d.limit)return;d.cursor++}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return s.setCurrent(e),s.stem(),s.getCurrent()}):(s.setCurrent(e),s.stem(),s.getCurrent())}),e.Pipeline.registerFunction(e.fr.stemmer,"stemmer-fr"),e.fr.stopWordFilter=e.generateStopWordFilter("ai aie aient aies ait as au aura aurai auraient aurais aurait auras aurez auriez aurions aurons auront aux avaient avais avait avec avez aviez avions avons ayant ayez ayons c ce ceci celà ces cet cette d dans de des du elle en es est et eu eue eues eurent eus eusse eussent eusses eussiez eussions eut eux eûmes eût eûtes furent fus fusse fussent fusses fussiez fussions fut fûmes fût fûtes ici il ils j je l la le les leur leurs lui m ma mais me mes moi mon même n ne nos notre nous on ont ou par pas pour qu que quel quelle quelles quels qui s sa sans se sera serai seraient serais serait seras serez seriez serions serons seront ses soi soient sois soit sommes son sont soyez soyons suis sur t ta te tes toi ton tu un une vos votre vous y à étaient étais était étant étiez étions été étée étées étés êtes".split(" ")),e.Pipeline.registerFunction(e.fr.stopWordFilter,"stopWordFilter-fr")}});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.hu.js b/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.hu.js
deleted file mode 100644
index 56a4b0dc19f7c9e8b8423e544ed5e80fbb92abd7..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.hu.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():n()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var p,_,n;e.hu=function(){this.pipeline.reset(),this.pipeline.add(e.hu.trimmer,e.hu.stopWordFilter,e.hu.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.hu.stemmer))},e.hu.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.hu.trimmer=e.trimmerSupport.generateTrimmer(e.hu.wordCharacters),e.Pipeline.registerFunction(e.hu.trimmer,"trimmer-hu"),e.hu.stemmer=(p=e.stemmerSupport.Among,_=e.stemmerSupport.SnowballProgram,n=new function(){var r,i=[new p("cs",-1,-1),new p("dzs",-1,-1),new p("gy",-1,-1),new p("ly",-1,-1),new p("ny",-1,-1),new p("sz",-1,-1),new p("ty",-1,-1),new p("zs",-1,-1)],n=[new p("á",-1,1),new p("é",-1,2)],a=[new p("bb",-1,-1),new p("cc",-1,-1),new p("dd",-1,-1),new p("ff",-1,-1),new p("gg",-1,-1),new p("jj",-1,-1),new p("kk",-1,-1),new p("ll",-1,-1),new p("mm",-1,-1),new p("nn",-1,-1),new p("pp",-1,-1),new p("rr",-1,-1),new p("ccs",-1,-1),new p("ss",-1,-1),new p("zzs",-1,-1),new p("tt",-1,-1),new p("vv",-1,-1),new p("ggy",-1,-1),new p("lly",-1,-1),new p("nny",-1,-1),new p("tty",-1,-1),new p("ssz",-1,-1),new p("zz",-1,-1)],t=[new p("al",-1,1),new p("el",-1,2)],e=[new p("ba",-1,-1),new p("ra",-1,-1),new p("be",-1,-1),new p("re",-1,-1),new p("ig",-1,-1),new p("nak",-1,-1),new p("nek",-1,-1),new p("val",-1,-1),new p("vel",-1,-1),new p("ul",-1,-1),new p("nál",-1,-1),new p("nél",-1,-1),new p("ból",-1,-1),new p("ról",-1,-1),new p("tól",-1,-1),new p("bõl",-1,-1),new p("rõl",-1,-1),new p("tõl",-1,-1),new p("ül",-1,-1),new p("n",-1,-1),new p("an",19,-1),new p("ban",20,-1),new p("en",19,-1),new p("ben",22,-1),new p("képpen",22,-1),new p("on",19,-1),new p("ön",19,-1),new p("képp",-1,-1),new p("kor",-1,-1),new p("t",-1,-1),new p("at",29,-1),new p("et",29,-1),new p("ként",29,-1),new p("anként",32,-1),new p("enként",32,-1),new p("onként",32,-1),new p("ot",29,-1),new p("ért",29,-1),new p("öt",29,-1),new p("hez",-1,-1),new p("hoz",-1,-1),new p("höz",-1,-1),new p("vá",-1,-1),new p("vé",-1,-1)],s=[new p("án",-1,2),new p("én",-1,1),new p("ánként",-1,3)],c=[new p("stul",-1,2),new p("astul",0,1),new p("ástul",0,3),new p("stül",-1,2),new p("estül",3,1),new p("éstül",3,4)],w=[new p("á",-1,1),new p("é",-1,2)],o=[new p("k",-1,7),new p("ak",0,4),new p("ek",0,6),new p("ok",0,5),new p("ák",0,1),new p("ék",0,2),new p("ök",0,3)],l=[new p("éi",-1,7),new p("áéi",0,6),new p("ééi",0,5),new p("é",-1,9),new p("ké",3,4),new p("aké",4,1),new p("eké",4,1),new p("oké",4,1),new p("áké",4,3),new p("éké",4,2),new p("öké",4,1),new p("éé",3,8)],u=[new p("a",-1,18),new p("ja",0,17),new p("d",-1,16),new p("ad",2,13),new p("ed",2,13),new p("od",2,13),new p("ád",2,14),new p("éd",2,15),new p("öd",2,13),new p("e",-1,18),new p("je",9,17),new p("nk",-1,4),new p("unk",11,1),new p("ánk",11,2),new p("énk",11,3),new p("ünk",11,1),new p("uk",-1,8),new p("juk",16,7),new p("ájuk",17,5),new p("ük",-1,8),new p("jük",19,7),new p("éjük",20,6),new p("m",-1,12),new p("am",22,9),new p("em",22,9),new p("om",22,9),new p("ám",22,10),new p("ém",22,11),new p("o",-1,18),new p("á",-1,19),new p("é",-1,20)],m=[new p("id",-1,10),new p("aid",0,9),new p("jaid",1,6),new p("eid",0,9),new p("jeid",3,6),new p("áid",0,7),new p("éid",0,8),new p("i",-1,15),new p("ai",7,14),new p("jai",8,11),new p("ei",7,14),new p("jei",10,11),new p("ái",7,12),new p("éi",7,13),new p("itek",-1,24),new p("eitek",14,21),new p("jeitek",15,20),new p("éitek",14,23),new p("ik",-1,29),new p("aik",18,26),new p("jaik",19,25),new p("eik",18,26),new p("jeik",21,25),new p("áik",18,27),new p("éik",18,28),new p("ink",-1,20),new p("aink",25,17),new p("jaink",26,16),new p("eink",25,17),new p("jeink",28,16),new p("áink",25,18),new p("éink",25,19),new p("aitok",-1,21),new p("jaitok",32,20),new p("áitok",-1,22),new p("im",-1,5),new p("aim",35,4),new p("jaim",36,1),new p("eim",35,4),new p("jeim",38,1),new p("áim",35,2),new p("éim",35,3)],k=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,52,14],f=new _;function b(){return r<=f.cursor}function d(){var e=f.limit-f.cursor;return!!f.find_among_b(a,23)&&(f.cursor=f.limit-e,!0)}function g(){if(f.cursor>f.limit_backward){f.cursor--,f.ket=f.cursor;var e=f.cursor-1;f.limit_backward<=e&&e<=f.limit&&(f.cursor=e,f.bra=e,f.slice_del())}}function h(){f.ket=f.cursor,f.find_among_b(e,44)&&(f.bra=f.cursor,b()&&(f.slice_del(),function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(n,2))&&(f.bra=f.cursor,b()))switch(e){case 1:f.slice_from("a");break;case 2:f.slice_from("e")}}()))}this.setCurrent=function(e){f.setCurrent(e)},this.getCurrent=function(){return f.getCurrent()},this.stem=function(){var e=f.cursor;return function(){var e,n=f.cursor;if(r=f.limit,f.in_grouping(k,97,252))for(;;){if(e=f.cursor,f.out_grouping(k,97,252))return f.cursor=e,f.find_among(i,8)||(f.cursor=e)<f.limit&&f.cursor++,r=f.cursor;if((f.cursor=e)>=f.limit)return r=e;f.cursor++}if(f.cursor=n,f.out_grouping(k,97,252)){for(;!f.in_grouping(k,97,252);){if(f.cursor>=f.limit)return;f.cursor++}r=f.cursor}}(),f.limit_backward=e,f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(t,2))&&(f.bra=f.cursor,b())){if((1==e||2==e)&&!d())return;f.slice_del(),g()}}(),f.cursor=f.limit,h(),f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(s,3))&&(f.bra=f.cursor,b()))switch(e){case 1:f.slice_from("e");break;case 2:case 3:f.slice_from("a")}}(),f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(c,6))&&(f.bra=f.cursor,b()))switch(e){case 1:case 2:f.slice_del();break;case 3:f.slice_from("a");break;case 4:f.slice_from("e")}}(),f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(w,2))&&(f.bra=f.cursor,b())){if((1==e||2==e)&&!d())return;f.slice_del(),g()}}(),f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(l,12))&&(f.bra=f.cursor,b()))switch(e){case 1:case 4:case 7:case 9:f.slice_del();break;case 2:case 5:case 8:f.slice_from("e");break;case 3:case 6:f.slice_from("a")}}(),f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(u,31))&&(f.bra=f.cursor,b()))switch(e){case 1:case 4:case 7:case 8:case 9:case 12:case 13:case 16:case 17:case 18:f.slice_del();break;case 2:case 5:case 10:case 14:case 19:f.slice_from("a");break;case 3:case 6:case 11:case 15:case 20:f.slice_from("e")}}(),f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(m,42))&&(f.bra=f.cursor,b()))switch(e){case 1:case 4:case 5:case 6:case 9:case 10:case 11:case 14:case 15:case 16:case 17:case 20:case 21:case 24:case 25:case 26:case 29:f.slice_del();break;case 2:case 7:case 12:case 18:case 22:case 27:f.slice_from("a");break;case 3:case 8:case 13:case 19:case 23:case 28:f.slice_from("e")}}(),f.cursor=f.limit,function(){var e;if(f.ket=f.cursor,(e=f.find_among_b(o,7))&&(f.bra=f.cursor,b()))switch(e){case 1:f.slice_from("a");break;case 2:f.slice_from("e");break;case 3:case 4:case 5:case 6:case 7:f.slice_del()}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}),e.Pipeline.registerFunction(e.hu.stemmer,"stemmer-hu"),e.hu.stopWordFilter=e.generateStopWordFilter("a abban ahhoz ahogy ahol aki akik akkor alatt amely amelyek amelyekben amelyeket amelyet amelynek ami amikor amit amolyan amíg annak arra arról az azok azon azonban azt aztán azután azzal azért be belül benne bár cikk cikkek cikkeket csak de e ebben eddig egy egyes egyetlen egyik egyre egyéb egész ehhez ekkor el ellen elsõ elég elõ elõször elõtt emilyen ennek erre ez ezek ezen ezt ezzel ezért fel felé hanem hiszen hogy hogyan igen ill ill. illetve ilyen ilyenkor ismét ison itt jobban jó jól kell kellett keressünk keresztül ki kívül között közül legalább legyen lehet lehetett lenne lenni lesz lett maga magát majd majd meg mellett mely melyek mert mi mikor milyen minden mindenki mindent mindig mint mintha mit mivel miért most már más másik még míg nagy nagyobb nagyon ne nekem neki nem nincs néha néhány nélkül olyan ott pedig persze rá s saját sem semmi sok sokat sokkal szemben szerint szinte számára talán tehát teljes tovább továbbá több ugyanis utolsó után utána vagy vagyis vagyok valaki valami valamint való van vannak vele vissza viszont volna volt voltak voltam voltunk által általában át én éppen és így õ õk õket össze úgy új újabb újra".split(" ")),e.Pipeline.registerFunction(e.hu.stopWordFilter,"stopWordFilter-hu")}});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.it.js b/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.it.js
deleted file mode 100644
index 50dddaa04b87af93b515dd6b33d32d0040254307..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.it.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var z,P,r;e.it=function(){this.pipeline.reset(),this.pipeline.add(e.it.trimmer,e.it.stopWordFilter,e.it.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.it.stemmer))},e.it.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.it.trimmer=e.trimmerSupport.generateTrimmer(e.it.wordCharacters),e.Pipeline.registerFunction(e.it.trimmer,"trimmer-it"),e.it.stemmer=(z=e.stemmerSupport.Among,P=e.stemmerSupport.SnowballProgram,r=new function(){var o,t,s,a=[new z("",-1,7),new z("qu",0,6),new z("á",0,1),new z("é",0,2),new z("í",0,3),new z("ó",0,4),new z("ú",0,5)],u=[new z("",-1,3),new z("I",0,1),new z("U",0,2)],c=[new z("la",-1,-1),new z("cela",0,-1),new z("gliela",0,-1),new z("mela",0,-1),new z("tela",0,-1),new z("vela",0,-1),new z("le",-1,-1),new z("cele",6,-1),new z("gliele",6,-1),new z("mele",6,-1),new z("tele",6,-1),new z("vele",6,-1),new z("ne",-1,-1),new z("cene",12,-1),new z("gliene",12,-1),new z("mene",12,-1),new z("sene",12,-1),new z("tene",12,-1),new z("vene",12,-1),new z("ci",-1,-1),new z("li",-1,-1),new z("celi",20,-1),new z("glieli",20,-1),new z("meli",20,-1),new z("teli",20,-1),new z("veli",20,-1),new z("gli",20,-1),new z("mi",-1,-1),new z("si",-1,-1),new z("ti",-1,-1),new z("vi",-1,-1),new z("lo",-1,-1),new z("celo",31,-1),new z("glielo",31,-1),new z("melo",31,-1),new z("telo",31,-1),new z("velo",31,-1)],w=[new z("ando",-1,1),new z("endo",-1,1),new z("ar",-1,2),new z("er",-1,2),new z("ir",-1,2)],r=[new z("ic",-1,-1),new z("abil",-1,-1),new z("os",-1,-1),new z("iv",-1,1)],n=[new z("ic",-1,1),new z("abil",-1,1),new z("iv",-1,1)],i=[new z("ica",-1,1),new z("logia",-1,3),new z("osa",-1,1),new z("ista",-1,1),new z("iva",-1,9),new z("anza",-1,1),new z("enza",-1,5),new z("ice",-1,1),new z("atrice",7,1),new z("iche",-1,1),new z("logie",-1,3),new z("abile",-1,1),new z("ibile",-1,1),new z("usione",-1,4),new z("azione",-1,2),new z("uzione",-1,4),new z("atore",-1,2),new z("ose",-1,1),new z("ante",-1,1),new z("mente",-1,1),new z("amente",19,7),new z("iste",-1,1),new z("ive",-1,9),new z("anze",-1,1),new z("enze",-1,5),new z("ici",-1,1),new z("atrici",25,1),new z("ichi",-1,1),new z("abili",-1,1),new z("ibili",-1,1),new z("ismi",-1,1),new z("usioni",-1,4),new z("azioni",-1,2),new z("uzioni",-1,4),new z("atori",-1,2),new z("osi",-1,1),new z("anti",-1,1),new z("amenti",-1,6),new z("imenti",-1,6),new z("isti",-1,1),new z("ivi",-1,9),new z("ico",-1,1),new z("ismo",-1,1),new z("oso",-1,1),new z("amento",-1,6),new z("imento",-1,6),new z("ivo",-1,9),new z("ità",-1,8),new z("istà",-1,1),new z("istè",-1,1),new z("istì",-1,1)],l=[new z("isca",-1,1),new z("enda",-1,1),new z("ata",-1,1),new z("ita",-1,1),new z("uta",-1,1),new z("ava",-1,1),new z("eva",-1,1),new z("iva",-1,1),new z("erebbe",-1,1),new z("irebbe",-1,1),new z("isce",-1,1),new z("ende",-1,1),new z("are",-1,1),new z("ere",-1,1),new z("ire",-1,1),new z("asse",-1,1),new z("ate",-1,1),new z("avate",16,1),new z("evate",16,1),new z("ivate",16,1),new z("ete",-1,1),new z("erete",20,1),new z("irete",20,1),new z("ite",-1,1),new z("ereste",-1,1),new z("ireste",-1,1),new z("ute",-1,1),new z("erai",-1,1),new z("irai",-1,1),new z("isci",-1,1),new z("endi",-1,1),new z("erei",-1,1),new z("irei",-1,1),new z("assi",-1,1),new z("ati",-1,1),new z("iti",-1,1),new z("eresti",-1,1),new z("iresti",-1,1),new z("uti",-1,1),new z("avi",-1,1),new z("evi",-1,1),new z("ivi",-1,1),new z("isco",-1,1),new z("ando",-1,1),new z("endo",-1,1),new z("Yamo",-1,1),new z("iamo",-1,1),new z("avamo",-1,1),new z("evamo",-1,1),new z("ivamo",-1,1),new z("eremo",-1,1),new z("iremo",-1,1),new z("assimo",-1,1),new z("ammo",-1,1),new z("emmo",-1,1),new z("eremmo",54,1),new z("iremmo",54,1),new z("immo",-1,1),new z("ano",-1,1),new z("iscano",58,1),new z("avano",58,1),new z("evano",58,1),new z("ivano",58,1),new z("eranno",-1,1),new z("iranno",-1,1),new z("ono",-1,1),new z("iscono",65,1),new z("arono",65,1),new z("erono",65,1),new z("irono",65,1),new z("erebbero",-1,1),new z("irebbero",-1,1),new z("assero",-1,1),new z("essero",-1,1),new z("issero",-1,1),new z("ato",-1,1),new z("ito",-1,1),new z("uto",-1,1),new z("avo",-1,1),new z("evo",-1,1),new z("ivo",-1,1),new z("ar",-1,1),new z("ir",-1,1),new z("erà",-1,1),new z("irà",-1,1),new z("erò",-1,1),new z("irò",-1,1)],m=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,128,128,8,2,1],f=[17,65,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,8,2],v=[17],b=new P;function d(e,r,n){return!(!b.eq_s(1,e)||(b.ket=b.cursor,!b.in_grouping(m,97,249)))&&(b.slice_from(r),b.cursor=n,!0)}function _(e){if(b.cursor=e,!b.in_grouping(m,97,249))return!1;for(;!b.out_grouping(m,97,249);){if(b.cursor>=b.limit)return!1;b.cursor++}return!0}function g(){var e,r=b.cursor;if(!function(){if(b.in_grouping(m,97,249)){var e=b.cursor;if(b.out_grouping(m,97,249)){for(;!b.in_grouping(m,97,249);){if(b.cursor>=b.limit)return _(e);b.cursor++}return!0}return _(e)}return!1}()){if(b.cursor=r,!b.out_grouping(m,97,249))return;if(e=b.cursor,b.out_grouping(m,97,249)){for(;!b.in_grouping(m,97,249);){if(b.cursor>=b.limit)return b.cursor=e,void(b.in_grouping(m,97,249)&&b.cursor<b.limit&&b.cursor++);b.cursor++}return void(s=b.cursor)}if(b.cursor=e,!b.in_grouping(m,97,249)||b.cursor>=b.limit)return;b.cursor++}s=b.cursor}function p(){for(;!b.in_grouping(m,97,249);){if(b.cursor>=b.limit)return!1;b.cursor++}for(;!b.out_grouping(m,97,249);){if(b.cursor>=b.limit)return!1;b.cursor++}return!0}function k(){return s<=b.cursor}function h(){return o<=b.cursor}function q(){var e;if(b.ket=b.cursor,!(e=b.find_among_b(i,51)))return!1;switch(b.bra=b.cursor,e){case 1:if(!h())return!1;b.slice_del();break;case 2:if(!h())return!1;b.slice_del(),b.ket=b.cursor,b.eq_s_b(2,"ic")&&(b.bra=b.cursor,h()&&b.slice_del());break;case 3:if(!h())return!1;b.slice_from("log");break;case 4:if(!h())return!1;b.slice_from("u");break;case 5:if(!h())return!1;b.slice_from("ente");break;case 6:if(!k())return!1;b.slice_del();break;case 7:if(!(t<=b.cursor))return!1;b.slice_del(),b.ket=b.cursor,(e=b.find_among_b(r,4))&&(b.bra=b.cursor,h()&&(b.slice_del(),1==e&&(b.ket=b.cursor,b.eq_s_b(2,"at")&&(b.bra=b.cursor,h()&&b.slice_del()))));break;case 8:if(!h())return!1;b.slice_del(),b.ket=b.cursor,(e=b.find_among_b(n,3))&&(b.bra=b.cursor,1==e&&h()&&b.slice_del());break;case 9:if(!h())return!1;b.slice_del(),b.ket=b.cursor,b.eq_s_b(2,"at")&&(b.bra=b.cursor,h()&&(b.slice_del(),b.ket=b.cursor,b.eq_s_b(2,"ic")&&(b.bra=b.cursor,h()&&b.slice_del())))}return!0}function C(){var e;e=b.limit-b.cursor,b.ket=b.cursor,b.in_grouping_b(f,97,242)&&(b.bra=b.cursor,k()&&(b.slice_del(),b.ket=b.cursor,b.eq_s_b(1,"i")&&(b.bra=b.cursor,k())))?b.slice_del():b.cursor=b.limit-e,b.ket=b.cursor,b.eq_s_b(1,"h")&&(b.bra=b.cursor,b.in_grouping_b(v,99,103)&&k()&&b.slice_del())}this.setCurrent=function(e){b.setCurrent(e)},this.getCurrent=function(){return b.getCurrent()},this.stem=function(){var e,r,n,i=b.cursor;return function(){for(var e,r,n,i,o=b.cursor;;){if(b.bra=b.cursor,e=b.find_among(a,7))switch(b.ket=b.cursor,e){case 1:b.slice_from("à");continue;case 2:b.slice_from("è");continue;case 3:b.slice_from("ì");continue;case 4:b.slice_from("ò");continue;case 5:b.slice_from("ù");continue;case 6:b.slice_from("qU");continue;case 7:if(b.cursor>=b.limit)break;b.cursor++;continue}break}for(b.cursor=o;;)for(r=b.cursor;;){if(n=b.cursor,b.in_grouping(m,97,249)){if(b.bra=b.cursor,i=b.cursor,d("u","U",n))break;if(b.cursor=i,d("i","I",n))break}if(b.cursor=n,b.cursor>=b.limit)return b.cursor=r;b.cursor++}}(),b.cursor=i,e=b.cursor,s=b.limit,o=t=s,g(),b.cursor=e,p()&&(t=b.cursor,p()&&(o=b.cursor)),b.limit_backward=i,b.cursor=b.limit,function(){var e;if(b.ket=b.cursor,b.find_among_b(c,37)&&(b.bra=b.cursor,(e=b.find_among_b(w,5))&&k()))switch(e){case 1:b.slice_del();break;case 2:b.slice_from("e")}}(),b.cursor=b.limit,q()||(b.cursor=b.limit,b.cursor>=s&&(n=b.limit_backward,b.limit_backward=s,b.ket=b.cursor,(r=b.find_among_b(l,87))&&(b.bra=b.cursor,1==r&&b.slice_del()),b.limit_backward=n)),b.cursor=b.limit,C(),b.cursor=b.limit_backward,function(){for(var e;b.bra=b.cursor,e=b.find_among(u,3);)switch(b.ket=b.cursor,e){case 1:b.slice_from("i");break;case 2:b.slice_from("u");break;case 3:if(b.cursor>=b.limit)return;b.cursor++}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return r.setCurrent(e),r.stem(),r.getCurrent()}):(r.setCurrent(e),r.stem(),r.getCurrent())}),e.Pipeline.registerFunction(e.it.stemmer,"stemmer-it"),e.it.stopWordFilter=e.generateStopWordFilter("a abbia abbiamo abbiano abbiate ad agl agli ai al all alla alle allo anche avemmo avendo avesse avessero avessi avessimo aveste avesti avete aveva avevamo avevano avevate avevi avevo avrai avranno avrebbe avrebbero avrei avremmo avremo avreste avresti avrete avrà avrò avuta avute avuti avuto c che chi ci coi col come con contro cui da dagl dagli dai dal dall dalla dalle dallo degl degli dei del dell della delle dello di dov dove e ebbe ebbero ebbi ed era erano eravamo eravate eri ero essendo faccia facciamo facciano facciate faccio facemmo facendo facesse facessero facessi facessimo faceste facesti faceva facevamo facevano facevate facevi facevo fai fanno farai faranno farebbe farebbero farei faremmo faremo fareste faresti farete farà farò fece fecero feci fosse fossero fossi fossimo foste fosti fu fui fummo furono gli ha hai hanno ho i il in io l la le lei li lo loro lui ma mi mia mie miei mio ne negl negli nei nel nell nella nelle nello noi non nostra nostre nostri nostro o per perché più quale quanta quante quanti quanto quella quelle quelli quello questa queste questi questo sarai saranno sarebbe sarebbero sarei saremmo saremo sareste saresti sarete sarà sarò se sei si sia siamo siano siate siete sono sta stai stando stanno starai staranno starebbe starebbero starei staremmo staremo stareste staresti starete starà starò stava stavamo stavano stavate stavi stavo stemmo stesse stessero stessi stessimo steste stesti stette stettero stetti stia stiamo stiano stiate sto su sua sue sugl sugli sui sul sull sulla sulle sullo suo suoi ti tra tu tua tue tuo tuoi tutti tutto un una uno vi voi vostra vostre vostri vostro è".split(" ")),e.Pipeline.registerFunction(e.it.stopWordFilter,"stopWordFilter-it")}});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.ja.js b/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.ja.js
deleted file mode 100644
index 69f620250d95bc3982dd8a6bd46689759a54c2a3..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.ja.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(m){if(void 0===m)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===m.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var l="2"==m.version[0];m.ja=function(){this.pipeline.reset(),this.pipeline.add(m.ja.trimmer,m.ja.stopWordFilter,m.ja.stemmer),l?this.tokenizer=m.ja.tokenizer:(m.tokenizer&&(m.tokenizer=m.ja.tokenizer),this.tokenizerFn&&(this.tokenizerFn=m.ja.tokenizer))};var j=new m.TinySegmenter;m.ja.tokenizer=function(e){var r,t,i,n,o,s,p,a,u;if(!arguments.length||null==e||null==e)return[];if(Array.isArray(e))return e.map(function(e){return l?new m.Token(e.toLowerCase()):e.toLowerCase()});for(r=(t=e.toString().toLowerCase().replace(/^\s+/,"")).length-1;0<=r;r--)if(/\S/.test(t.charAt(r))){t=t.substring(0,r+1);break}for(o=[],i=t.length,p=a=0;a<=i;a++)if(s=a-p,t.charAt(a).match(/\s/)||a==i){if(0<s)for(n=j.segment(t.slice(p,a)).filter(function(e){return!!e}),u=p,r=0;r<n.length;r++)l?o.push(new m.Token(n[r],{position:[u,n[r].length],index:o.length})):o.push(n[r]),u+=n[r].length;p=a+1}return o},m.ja.stemmer=function(e){return e},m.Pipeline.registerFunction(m.ja.stemmer,"stemmer-ja"),m.ja.wordCharacters="一二三四五六七八九十百千万億兆一-龠々〆ヵヶぁ-んァ-ヴーア-ン゙a-zA-Za-zA-Z0-90-9",m.ja.trimmer=m.trimmerSupport.generateTrimmer(m.ja.wordCharacters),m.Pipeline.registerFunction(m.ja.trimmer,"trimmer-ja"),m.ja.stopWordFilter=m.generateStopWordFilter("これ それ あれ この その あの ここ そこ あそこ こちら どこ だれ なに なん 何 私 貴方 貴方方 我々 私達 あの人 あのかた 彼女 彼 です あります おります います は が の に を で え から まで より も どの と し それで しかし".split(" ")),m.Pipeline.registerFunction(m.ja.stopWordFilter,"stopWordFilter-ja"),m.jp=m.ja,m.Pipeline.registerFunction(m.jp.stemmer,"stemmer-jp"),m.Pipeline.registerFunction(m.jp.trimmer,"trimmer-jp"),m.Pipeline.registerFunction(m.jp.stopWordFilter,"stopWordFilter-jp")}});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.jp.js b/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.jp.js
deleted file mode 100644
index c055ebaf37a904fafc2815f4f8d0e810db0b0984..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.jp.js
+++ /dev/null
@@ -1 +0,0 @@
-module.exports=require("./lunr.ja");
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.multi.js b/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.multi.js
deleted file mode 100644
index 8a145c9117e791bbd0c472ee442cb74a90888656..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.multi.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(e.lunr)}(this,function(){return function(o){o.multiLanguage=function(){for(var e=Array.prototype.slice.call(arguments),i=e.join("-"),t="",r=[],n=[],s=0;s<e.length;++s)"en"==e[s]?(t+="\\w",r.unshift(o.stopWordFilter),r.push(o.stemmer),n.push(o.stemmer)):(t+=o[e[s]].wordCharacters,r.unshift(o[e[s]].stopWordFilter),r.push(o[e[s]].stemmer),n.push(o[e[s]].stemmer));var p=o.trimmerSupport.generateTrimmer(t);return o.Pipeline.registerFunction(p,"lunr-multi-trimmer-"+i),r.unshift(p),function(){this.pipeline.reset(),this.pipeline.add.apply(this.pipeline,r),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add.apply(this.searchPipeline,n))}}}});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.nl.js b/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.nl.js
deleted file mode 100644
index 273f4ad0beb8fba582b1e2390c2b7e9d406020a1..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.nl.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(r,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e():e()(r.lunr)}(this,function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var v,q,e;r.nl=function(){this.pipeline.reset(),this.pipeline.add(r.nl.trimmer,r.nl.stopWordFilter,r.nl.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(r.nl.stemmer))},r.nl.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",r.nl.trimmer=r.trimmerSupport.generateTrimmer(r.nl.wordCharacters),r.Pipeline.registerFunction(r.nl.trimmer,"trimmer-nl"),r.nl.stemmer=(v=r.stemmerSupport.Among,q=r.stemmerSupport.SnowballProgram,e=new function(){var e,i,u,o=[new v("",-1,6),new v("á",0,1),new v("ä",0,1),new v("é",0,2),new v("ë",0,2),new v("í",0,3),new v("ï",0,3),new v("ó",0,4),new v("ö",0,4),new v("ú",0,5),new v("ü",0,5)],n=[new v("",-1,3),new v("I",0,2),new v("Y",0,1)],t=[new v("dd",-1,-1),new v("kk",-1,-1),new v("tt",-1,-1)],c=[new v("ene",-1,2),new v("se",-1,3),new v("en",-1,2),new v("heden",2,1),new v("s",-1,3)],a=[new v("end",-1,1),new v("ig",-1,2),new v("ing",-1,1),new v("lijk",-1,3),new v("baar",-1,4),new v("bar",-1,5)],l=[new v("aa",-1,-1),new v("ee",-1,-1),new v("oo",-1,-1),new v("uu",-1,-1)],m=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],d=[1,0,0,17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],f=[17,67,16,1,0,0,0,0,0,0,0,0,0,0,0,0,128],_=new q;function s(r){return(_.cursor=r)>=_.limit||(_.cursor++,!1)}function w(){for(;!_.in_grouping(m,97,232);){if(_.cursor>=_.limit)return!0;_.cursor++}for(;!_.out_grouping(m,97,232);){if(_.cursor>=_.limit)return!0;_.cursor++}return!1}function b(){return i<=_.cursor}function p(){return e<=_.cursor}function g(){var r=_.limit-_.cursor;_.find_among_b(t,3)&&(_.cursor=_.limit-r,_.ket=_.cursor,_.cursor>_.limit_backward&&(_.cursor--,_.bra=_.cursor,_.slice_del()))}function h(){var r;u=!1,_.ket=_.cursor,_.eq_s_b(1,"e")&&(_.bra=_.cursor,b()&&(r=_.limit-_.cursor,_.out_grouping_b(m,97,232)&&(_.cursor=_.limit-r,_.slice_del(),u=!0,g())))}function k(){var r;b()&&(r=_.limit-_.cursor,_.out_grouping_b(m,97,232)&&(_.cursor=_.limit-r,_.eq_s_b(3,"gem")||(_.cursor=_.limit-r,_.slice_del(),g())))}this.setCurrent=function(r){_.setCurrent(r)},this.getCurrent=function(){return _.getCurrent()},this.stem=function(){var r=_.cursor;return function(){for(var r,e,i,n=_.cursor;;){if(_.bra=_.cursor,r=_.find_among(o,11))switch(_.ket=_.cursor,r){case 1:_.slice_from("a");continue;case 2:_.slice_from("e");continue;case 3:_.slice_from("i");continue;case 4:_.slice_from("o");continue;case 5:_.slice_from("u");continue;case 6:if(_.cursor>=_.limit)break;_.cursor++;continue}break}for(_.cursor=n,_.bra=n,_.eq_s(1,"y")?(_.ket=_.cursor,_.slice_from("Y")):_.cursor=n;;)if(e=_.cursor,_.in_grouping(m,97,232)){if(i=_.cursor,_.bra=i,_.eq_s(1,"i"))_.ket=_.cursor,_.in_grouping(m,97,232)&&(_.slice_from("I"),_.cursor=e);else if(_.cursor=i,_.eq_s(1,"y"))_.ket=_.cursor,_.slice_from("Y"),_.cursor=e;else if(s(e))break}else if(s(e))break}(),_.cursor=r,i=_.limit,e=i,w()||((i=_.cursor)<3&&(i=3),w()||(e=_.cursor)),_.limit_backward=r,_.cursor=_.limit,function(){var r,e,i,n,o,t,s=_.limit-_.cursor;if(_.ket=_.cursor,r=_.find_among_b(c,5))switch(_.bra=_.cursor,r){case 1:b()&&_.slice_from("heid");break;case 2:k();break;case 3:b()&&_.out_grouping_b(f,97,232)&&_.slice_del()}if(_.cursor=_.limit-s,h(),_.cursor=_.limit-s,_.ket=_.cursor,_.eq_s_b(4,"heid")&&(_.bra=_.cursor,p()&&(e=_.limit-_.cursor,_.eq_s_b(1,"c")||(_.cursor=_.limit-e,_.slice_del(),_.ket=_.cursor,_.eq_s_b(2,"en")&&(_.bra=_.cursor,k())))),_.cursor=_.limit-s,_.ket=_.cursor,r=_.find_among_b(a,6))switch(_.bra=_.cursor,r){case 1:if(p()){if(_.slice_del(),i=_.limit-_.cursor,_.ket=_.cursor,_.eq_s_b(2,"ig")&&(_.bra=_.cursor,p()&&(n=_.limit-_.cursor,!_.eq_s_b(1,"e")))){_.cursor=_.limit-n,_.slice_del();break}_.cursor=_.limit-i,g()}break;case 2:p()&&(o=_.limit-_.cursor,_.eq_s_b(1,"e")||(_.cursor=_.limit-o,_.slice_del()));break;case 3:p()&&(_.slice_del(),h());break;case 4:p()&&_.slice_del();break;case 5:p()&&u&&_.slice_del()}_.cursor=_.limit-s,_.out_grouping_b(d,73,232)&&(t=_.limit-_.cursor,_.find_among_b(l,4)&&_.out_grouping_b(m,97,232)&&(_.cursor=_.limit-t,_.ket=_.cursor,_.cursor>_.limit_backward&&(_.cursor--,_.bra=_.cursor,_.slice_del())))}(),_.cursor=_.limit_backward,function(){for(var r;;)if(_.bra=_.cursor,r=_.find_among(n,3))switch(_.ket=_.cursor,r){case 1:_.slice_from("y");break;case 2:_.slice_from("i");break;case 3:if(_.cursor>=_.limit)return;_.cursor++}}(),!0}},function(r){return"function"==typeof r.update?r.update(function(r){return e.setCurrent(r),e.stem(),e.getCurrent()}):(e.setCurrent(r),e.stem(),e.getCurrent())}),r.Pipeline.registerFunction(r.nl.stemmer,"stemmer-nl"),r.nl.stopWordFilter=r.generateStopWordFilter(" aan al alles als altijd andere ben bij daar dan dat de der deze die dit doch doen door dus een eens en er ge geen geweest haar had heb hebben heeft hem het hier hij hoe hun iemand iets ik in is ja je kan kon kunnen maar me meer men met mij mijn moet na naar niet niets nog nu of om omdat onder ons ook op over reeds te tegen toch toen tot u uit uw van veel voor want waren was wat werd wezen wie wil worden wordt zal ze zelf zich zij zijn zo zonder zou".split(" ")),r.Pipeline.registerFunction(r.nl.stopWordFilter,"stopWordFilter-nl")}});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.no.js b/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.no.js
deleted file mode 100644
index 3d156b9c191cd246879a67c56e46baa4cfb2e17d..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.no.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r,n,i;e.no=function(){this.pipeline.reset(),this.pipeline.add(e.no.trimmer,e.no.stopWordFilter,e.no.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.no.stemmer))},e.no.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.no.trimmer=e.trimmerSupport.generateTrimmer(e.no.wordCharacters),e.Pipeline.registerFunction(e.no.trimmer,"trimmer-no"),e.no.stemmer=(r=e.stemmerSupport.Among,n=e.stemmerSupport.SnowballProgram,i=new function(){var o,s,a=[new r("a",-1,1),new r("e",-1,1),new r("ede",1,1),new r("ande",1,1),new r("ende",1,1),new r("ane",1,1),new r("ene",1,1),new r("hetene",6,1),new r("erte",1,3),new r("en",-1,1),new r("heten",9,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",12,1),new r("s",-1,2),new r("as",14,1),new r("es",14,1),new r("edes",16,1),new r("endes",16,1),new r("enes",16,1),new r("hetenes",19,1),new r("ens",14,1),new r("hetens",21,1),new r("ers",14,1),new r("ets",14,1),new r("et",-1,1),new r("het",25,1),new r("ert",-1,3),new r("ast",-1,1)],m=[new r("dt",-1,-1),new r("vt",-1,-1)],l=[new r("leg",-1,1),new r("eleg",0,1),new r("ig",-1,1),new r("eig",2,1),new r("lig",2,1),new r("elig",4,1),new r("els",-1,1),new r("lov",-1,1),new r("elov",7,1),new r("slov",7,1),new r("hetslov",9,1)],u=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,48,0,128],d=[119,125,149,1],c=new n;this.setCurrent=function(e){c.setCurrent(e)},this.getCurrent=function(){return c.getCurrent()},this.stem=function(){var e,r,n,i,t=c.cursor;return function(){var e,r=c.cursor+3;if(s=c.limit,0<=r||r<=c.limit){for(o=r;;){if(e=c.cursor,c.in_grouping(u,97,248)){c.cursor=e;break}if(e>=c.limit)return;c.cursor=e+1}for(;!c.out_grouping(u,97,248);){if(c.cursor>=c.limit)return;c.cursor++}(s=c.cursor)<o&&(s=o)}}(),c.limit_backward=t,c.cursor=c.limit,function(){var e,r,n;if(c.cursor>=s&&(r=c.limit_backward,c.limit_backward=s,c.ket=c.cursor,e=c.find_among_b(a,29),c.limit_backward=r,e))switch(c.bra=c.cursor,e){case 1:c.slice_del();break;case 2:n=c.limit-c.cursor,c.in_grouping_b(d,98,122)?c.slice_del():(c.cursor=c.limit-n,c.eq_s_b(1,"k")&&c.out_grouping_b(u,97,248)&&c.slice_del());break;case 3:c.slice_from("er")}}(),c.cursor=c.limit,r=c.limit-c.cursor,c.cursor>=s&&(e=c.limit_backward,c.limit_backward=s,c.ket=c.cursor,c.find_among_b(m,2)?(c.bra=c.cursor,c.limit_backward=e,c.cursor=c.limit-r,c.cursor>c.limit_backward&&(c.cursor--,c.bra=c.cursor,c.slice_del())):c.limit_backward=e),c.cursor=c.limit,c.cursor>=s&&(i=c.limit_backward,c.limit_backward=s,c.ket=c.cursor,(n=c.find_among_b(l,11))?(c.bra=c.cursor,c.limit_backward=i,1==n&&c.slice_del()):c.limit_backward=i),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}),e.Pipeline.registerFunction(e.no.stemmer,"stemmer-no"),e.no.stopWordFilter=e.generateStopWordFilter("alle at av bare begge ble blei bli blir blitt både båe da de deg dei deim deira deires dem den denne der dere deres det dette di din disse ditt du dykk dykkar då eg ein eit eitt eller elles en enn er et ett etter for fordi fra før ha hadde han hans har hennar henne hennes her hjå ho hoe honom hoss hossen hun hva hvem hver hvilke hvilken hvis hvor hvordan hvorfor i ikke ikkje ikkje ingen ingi inkje inn inni ja jeg kan kom korleis korso kun kunne kva kvar kvarhelst kven kvi kvifor man mange me med medan meg meget mellom men mi min mine mitt mot mykje ned no noe noen noka noko nokon nokor nokre nå når og også om opp oss over på samme seg selv si si sia sidan siden sin sine sitt sjøl skal skulle slik so som som somme somt så sånn til um upp ut uten var vart varte ved vere verte vi vil ville vore vors vort vår være være vært å".split(" ")),e.Pipeline.registerFunction(e.no.stopWordFilter,"stopWordFilter-no")}});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.pt.js b/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.pt.js
deleted file mode 100644
index f50fc9fa6d5a0f1a479676d9c0ab72c44125d08c..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.pt.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var j,C,r;e.pt=function(){this.pipeline.reset(),this.pipeline.add(e.pt.trimmer,e.pt.stopWordFilter,e.pt.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.pt.stemmer))},e.pt.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.pt.trimmer=e.trimmerSupport.generateTrimmer(e.pt.wordCharacters),e.Pipeline.registerFunction(e.pt.trimmer,"trimmer-pt"),e.pt.stemmer=(j=e.stemmerSupport.Among,C=e.stemmerSupport.SnowballProgram,r=new function(){var s,n,i,o=[new j("",-1,3),new j("ã",0,1),new j("õ",0,2)],a=[new j("",-1,3),new j("a~",0,1),new j("o~",0,2)],r=[new j("ic",-1,-1),new j("ad",-1,-1),new j("os",-1,-1),new j("iv",-1,1)],t=[new j("ante",-1,1),new j("avel",-1,1),new j("ível",-1,1)],u=[new j("ic",-1,1),new j("abil",-1,1),new j("iv",-1,1)],w=[new j("ica",-1,1),new j("ância",-1,1),new j("ência",-1,4),new j("ira",-1,9),new j("adora",-1,1),new j("osa",-1,1),new j("ista",-1,1),new j("iva",-1,8),new j("eza",-1,1),new j("logía",-1,2),new j("idade",-1,7),new j("ante",-1,1),new j("mente",-1,6),new j("amente",12,5),new j("ável",-1,1),new j("ível",-1,1),new j("ución",-1,3),new j("ico",-1,1),new j("ismo",-1,1),new j("oso",-1,1),new j("amento",-1,1),new j("imento",-1,1),new j("ivo",-1,8),new j("aça~o",-1,1),new j("ador",-1,1),new j("icas",-1,1),new j("ências",-1,4),new j("iras",-1,9),new j("adoras",-1,1),new j("osas",-1,1),new j("istas",-1,1),new j("ivas",-1,8),new j("ezas",-1,1),new j("logías",-1,2),new j("idades",-1,7),new j("uciones",-1,3),new j("adores",-1,1),new j("antes",-1,1),new j("aço~es",-1,1),new j("icos",-1,1),new j("ismos",-1,1),new j("osos",-1,1),new j("amentos",-1,1),new j("imentos",-1,1),new j("ivos",-1,8)],m=[new j("ada",-1,1),new j("ida",-1,1),new j("ia",-1,1),new j("aria",2,1),new j("eria",2,1),new j("iria",2,1),new j("ara",-1,1),new j("era",-1,1),new j("ira",-1,1),new j("ava",-1,1),new j("asse",-1,1),new j("esse",-1,1),new j("isse",-1,1),new j("aste",-1,1),new j("este",-1,1),new j("iste",-1,1),new j("ei",-1,1),new j("arei",16,1),new j("erei",16,1),new j("irei",16,1),new j("am",-1,1),new j("iam",20,1),new j("ariam",21,1),new j("eriam",21,1),new j("iriam",21,1),new j("aram",20,1),new j("eram",20,1),new j("iram",20,1),new j("avam",20,1),new j("em",-1,1),new j("arem",29,1),new j("erem",29,1),new j("irem",29,1),new j("assem",29,1),new j("essem",29,1),new j("issem",29,1),new j("ado",-1,1),new j("ido",-1,1),new j("ando",-1,1),new j("endo",-1,1),new j("indo",-1,1),new j("ara~o",-1,1),new j("era~o",-1,1),new j("ira~o",-1,1),new j("ar",-1,1),new j("er",-1,1),new j("ir",-1,1),new j("as",-1,1),new j("adas",47,1),new j("idas",47,1),new j("ias",47,1),new j("arias",50,1),new j("erias",50,1),new j("irias",50,1),new j("aras",47,1),new j("eras",47,1),new j("iras",47,1),new j("avas",47,1),new j("es",-1,1),new j("ardes",58,1),new j("erdes",58,1),new j("irdes",58,1),new j("ares",58,1),new j("eres",58,1),new j("ires",58,1),new j("asses",58,1),new j("esses",58,1),new j("isses",58,1),new j("astes",58,1),new j("estes",58,1),new j("istes",58,1),new j("is",-1,1),new j("ais",71,1),new j("eis",71,1),new j("areis",73,1),new j("ereis",73,1),new j("ireis",73,1),new j("áreis",73,1),new j("éreis",73,1),new j("íreis",73,1),new j("ásseis",73,1),new j("ésseis",73,1),new j("ísseis",73,1),new j("áveis",73,1),new j("íeis",73,1),new j("aríeis",84,1),new j("eríeis",84,1),new j("iríeis",84,1),new j("ados",-1,1),new j("idos",-1,1),new j("amos",-1,1),new j("áramos",90,1),new j("éramos",90,1),new j("íramos",90,1),new j("ávamos",90,1),new j("íamos",90,1),new j("aríamos",95,1),new j("eríamos",95,1),new j("iríamos",95,1),new j("emos",-1,1),new j("aremos",99,1),new j("eremos",99,1),new j("iremos",99,1),new j("ássemos",99,1),new j("êssemos",99,1),new j("íssemos",99,1),new j("imos",-1,1),new j("armos",-1,1),new j("ermos",-1,1),new j("irmos",-1,1),new j("ámos",-1,1),new j("arás",-1,1),new j("erás",-1,1),new j("irás",-1,1),new j("eu",-1,1),new j("iu",-1,1),new j("ou",-1,1),new j("ará",-1,1),new j("erá",-1,1),new j("irá",-1,1)],c=[new j("a",-1,1),new j("i",-1,1),new j("o",-1,1),new j("os",-1,1),new j("á",-1,1),new j("í",-1,1),new j("ó",-1,1)],l=[new j("e",-1,1),new j("ç",-1,2),new j("é",-1,1),new j("ê",-1,1)],f=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,3,19,12,2],d=new C;function v(){if(d.out_grouping(f,97,250)){for(;!d.in_grouping(f,97,250);){if(d.cursor>=d.limit)return!0;d.cursor++}return!1}return!0}function p(){var e,r,s=d.cursor;if(d.in_grouping(f,97,250))if(e=d.cursor,v()){if(d.cursor=e,function(){if(d.in_grouping(f,97,250))for(;!d.out_grouping(f,97,250);){if(d.cursor>=d.limit)return!1;d.cursor++}return i=d.cursor,!0}())return}else i=d.cursor;if(d.cursor=s,d.out_grouping(f,97,250)){if(r=d.cursor,v()){if(d.cursor=r,!d.in_grouping(f,97,250)||d.cursor>=d.limit)return;d.cursor++}i=d.cursor}}function _(){for(;!d.in_grouping(f,97,250);){if(d.cursor>=d.limit)return!1;d.cursor++}for(;!d.out_grouping(f,97,250);){if(d.cursor>=d.limit)return!1;d.cursor++}return!0}function h(){return i<=d.cursor}function b(){return s<=d.cursor}function g(){var e;if(d.ket=d.cursor,!(e=d.find_among_b(w,45)))return!1;switch(d.bra=d.cursor,e){case 1:if(!b())return!1;d.slice_del();break;case 2:if(!b())return!1;d.slice_from("log");break;case 3:if(!b())return!1;d.slice_from("u");break;case 4:if(!b())return!1;d.slice_from("ente");break;case 5:if(!(n<=d.cursor))return!1;d.slice_del(),d.ket=d.cursor,(e=d.find_among_b(r,4))&&(d.bra=d.cursor,b()&&(d.slice_del(),1==e&&(d.ket=d.cursor,d.eq_s_b(2,"at")&&(d.bra=d.cursor,b()&&d.slice_del()))));break;case 6:if(!b())return!1;d.slice_del(),d.ket=d.cursor,(e=d.find_among_b(t,3))&&(d.bra=d.cursor,1==e&&b()&&d.slice_del());break;case 7:if(!b())return!1;d.slice_del(),d.ket=d.cursor,(e=d.find_among_b(u,3))&&(d.bra=d.cursor,1==e&&b()&&d.slice_del());break;case 8:if(!b())return!1;d.slice_del(),d.ket=d.cursor,d.eq_s_b(2,"at")&&(d.bra=d.cursor,b()&&d.slice_del());break;case 9:if(!h()||!d.eq_s_b(1,"e"))return!1;d.slice_from("ir")}return!0}function k(e,r){if(d.eq_s_b(1,e)){d.bra=d.cursor;var s=d.limit-d.cursor;if(d.eq_s_b(1,r))return d.cursor=d.limit-s,h()&&d.slice_del(),!1}return!0}function q(){if(!g()&&(d.cursor=d.limit,!function(){var e,r;if(d.cursor>=i){if(r=d.limit_backward,d.limit_backward=i,d.ket=d.cursor,e=d.find_among_b(m,120))return d.bra=d.cursor,1==e&&d.slice_del(),d.limit_backward=r,!0;d.limit_backward=r}return!1}()))return d.cursor=d.limit,d.ket=d.cursor,void((e=d.find_among_b(c,7))&&(d.bra=d.cursor,1==e&&h()&&d.slice_del()));var e;d.cursor=d.limit,d.ket=d.cursor,d.eq_s_b(1,"i")&&(d.bra=d.cursor,d.eq_s_b(1,"c")&&(d.cursor=d.limit,h()&&d.slice_del()))}this.setCurrent=function(e){d.setCurrent(e)},this.getCurrent=function(){return d.getCurrent()},this.stem=function(){var e,r=d.cursor;return function(){for(var e;;){if(d.bra=d.cursor,e=d.find_among(o,3))switch(d.ket=d.cursor,e){case 1:d.slice_from("a~");continue;case 2:d.slice_from("o~");continue;case 3:if(d.cursor>=d.limit)break;d.cursor++;continue}break}}(),d.cursor=r,e=d.cursor,i=d.limit,s=n=i,p(),d.cursor=e,_()&&(n=d.cursor,_()&&(s=d.cursor)),d.limit_backward=r,d.cursor=d.limit,q(),d.cursor=d.limit,function(){var e;if(d.ket=d.cursor,e=d.find_among_b(l,4))switch(d.bra=d.cursor,e){case 1:h()&&(d.slice_del(),d.ket=d.cursor,d.limit,d.cursor,k("u","g")&&k("i","c"));break;case 2:d.slice_from("c")}}(),d.cursor=d.limit_backward,function(){for(var e;;){if(d.bra=d.cursor,e=d.find_among(a,3))switch(d.ket=d.cursor,e){case 1:d.slice_from("ã");continue;case 2:d.slice_from("õ");continue;case 3:if(d.cursor>=d.limit)break;d.cursor++;continue}break}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return r.setCurrent(e),r.stem(),r.getCurrent()}):(r.setCurrent(e),r.stem(),r.getCurrent())}),e.Pipeline.registerFunction(e.pt.stemmer,"stemmer-pt"),e.pt.stopWordFilter=e.generateStopWordFilter("a ao aos aquela aquelas aquele aqueles aquilo as até com como da das de dela delas dele deles depois do dos e ela elas ele eles em entre era eram essa essas esse esses esta estamos estas estava estavam este esteja estejam estejamos estes esteve estive estivemos estiver estivera estiveram estiverem estivermos estivesse estivessem estivéramos estivéssemos estou está estávamos estão eu foi fomos for fora foram forem formos fosse fossem fui fôramos fôssemos haja hajam hajamos havemos hei houve houvemos houver houvera houveram houverei houverem houveremos houveria houveriam houvermos houverá houverão houveríamos houvesse houvessem houvéramos houvéssemos há hão isso isto já lhe lhes mais mas me mesmo meu meus minha minhas muito na nas nem no nos nossa nossas nosso nossos num numa não nós o os ou para pela pelas pelo pelos por qual quando que quem se seja sejam sejamos sem serei seremos seria seriam será serão seríamos seu seus somos sou sua suas são só também te tem temos tenha tenham tenhamos tenho terei teremos teria teriam terá terão teríamos teu teus teve tinha tinham tive tivemos tiver tivera tiveram tiverem tivermos tivesse tivessem tivéramos tivéssemos tu tua tuas tém tínhamos um uma você vocês vos à às éramos".split(" ")),e.Pipeline.registerFunction(e.pt.stopWordFilter,"stopWordFilter-pt")}});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.ro.js b/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.ro.js
deleted file mode 100644
index b19627e1b35eb0240db39497c70b509624c0da09..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.ro.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var h,z,i;e.ro=function(){this.pipeline.reset(),this.pipeline.add(e.ro.trimmer,e.ro.stopWordFilter,e.ro.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ro.stemmer))},e.ro.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.ro.trimmer=e.trimmerSupport.generateTrimmer(e.ro.wordCharacters),e.Pipeline.registerFunction(e.ro.trimmer,"trimmer-ro"),e.ro.stemmer=(h=e.stemmerSupport.Among,z=e.stemmerSupport.SnowballProgram,i=new function(){var r,n,t,a,o=[new h("",-1,3),new h("I",0,1),new h("U",0,2)],s=[new h("ea",-1,3),new h("aţia",-1,7),new h("aua",-1,2),new h("iua",-1,4),new h("aţie",-1,7),new h("ele",-1,3),new h("ile",-1,5),new h("iile",6,4),new h("iei",-1,4),new h("atei",-1,6),new h("ii",-1,4),new h("ului",-1,1),new h("ul",-1,1),new h("elor",-1,3),new h("ilor",-1,4),new h("iilor",14,4)],c=[new h("icala",-1,4),new h("iciva",-1,4),new h("ativa",-1,5),new h("itiva",-1,6),new h("icale",-1,4),new h("aţiune",-1,5),new h("iţiune",-1,6),new h("atoare",-1,5),new h("itoare",-1,6),new h("ătoare",-1,5),new h("icitate",-1,4),new h("abilitate",-1,1),new h("ibilitate",-1,2),new h("ivitate",-1,3),new h("icive",-1,4),new h("ative",-1,5),new h("itive",-1,6),new h("icali",-1,4),new h("atori",-1,5),new h("icatori",18,4),new h("itori",-1,6),new h("ători",-1,5),new h("icitati",-1,4),new h("abilitati",-1,1),new h("ivitati",-1,3),new h("icivi",-1,4),new h("ativi",-1,5),new h("itivi",-1,6),new h("icităi",-1,4),new h("abilităi",-1,1),new h("ivităi",-1,3),new h("icităţi",-1,4),new h("abilităţi",-1,1),new h("ivităţi",-1,3),new h("ical",-1,4),new h("ator",-1,5),new h("icator",35,4),new h("itor",-1,6),new h("ător",-1,5),new h("iciv",-1,4),new h("ativ",-1,5),new h("itiv",-1,6),new h("icală",-1,4),new h("icivă",-1,4),new h("ativă",-1,5),new h("itivă",-1,6)],u=[new h("ica",-1,1),new h("abila",-1,1),new h("ibila",-1,1),new h("oasa",-1,1),new h("ata",-1,1),new h("ita",-1,1),new h("anta",-1,1),new h("ista",-1,3),new h("uta",-1,1),new h("iva",-1,1),new h("ic",-1,1),new h("ice",-1,1),new h("abile",-1,1),new h("ibile",-1,1),new h("isme",-1,3),new h("iune",-1,2),new h("oase",-1,1),new h("ate",-1,1),new h("itate",17,1),new h("ite",-1,1),new h("ante",-1,1),new h("iste",-1,3),new h("ute",-1,1),new h("ive",-1,1),new h("ici",-1,1),new h("abili",-1,1),new h("ibili",-1,1),new h("iuni",-1,2),new h("atori",-1,1),new h("osi",-1,1),new h("ati",-1,1),new h("itati",30,1),new h("iti",-1,1),new h("anti",-1,1),new h("isti",-1,3),new h("uti",-1,1),new h("işti",-1,3),new h("ivi",-1,1),new h("ităi",-1,1),new h("oşi",-1,1),new h("ităţi",-1,1),new h("abil",-1,1),new h("ibil",-1,1),new h("ism",-1,3),new h("ator",-1,1),new h("os",-1,1),new h("at",-1,1),new h("it",-1,1),new h("ant",-1,1),new h("ist",-1,3),new h("ut",-1,1),new h("iv",-1,1),new h("ică",-1,1),new h("abilă",-1,1),new h("ibilă",-1,1),new h("oasă",-1,1),new h("ată",-1,1),new h("ită",-1,1),new h("antă",-1,1),new h("istă",-1,3),new h("ută",-1,1),new h("ivă",-1,1)],w=[new h("ea",-1,1),new h("ia",-1,1),new h("esc",-1,1),new h("ăsc",-1,1),new h("ind",-1,1),new h("ând",-1,1),new h("are",-1,1),new h("ere",-1,1),new h("ire",-1,1),new h("âre",-1,1),new h("se",-1,2),new h("ase",10,1),new h("sese",10,2),new h("ise",10,1),new h("use",10,1),new h("âse",10,1),new h("eşte",-1,1),new h("ăşte",-1,1),new h("eze",-1,1),new h("ai",-1,1),new h("eai",19,1),new h("iai",19,1),new h("sei",-1,2),new h("eşti",-1,1),new h("ăşti",-1,1),new h("ui",-1,1),new h("ezi",-1,1),new h("âi",-1,1),new h("aşi",-1,1),new h("seşi",-1,2),new h("aseşi",29,1),new h("seseşi",29,2),new h("iseşi",29,1),new h("useşi",29,1),new h("âseşi",29,1),new h("işi",-1,1),new h("uşi",-1,1),new h("âşi",-1,1),new h("aţi",-1,2),new h("eaţi",38,1),new h("iaţi",38,1),new h("eţi",-1,2),new h("iţi",-1,2),new h("âţi",-1,2),new h("arăţi",-1,1),new h("serăţi",-1,2),new h("aserăţi",45,1),new h("seserăţi",45,2),new h("iserăţi",45,1),new h("userăţi",45,1),new h("âserăţi",45,1),new h("irăţi",-1,1),new h("urăţi",-1,1),new h("ârăţi",-1,1),new h("am",-1,1),new h("eam",54,1),new h("iam",54,1),new h("em",-1,2),new h("asem",57,1),new h("sesem",57,2),new h("isem",57,1),new h("usem",57,1),new h("âsem",57,1),new h("im",-1,2),new h("âm",-1,2),new h("ăm",-1,2),new h("arăm",65,1),new h("serăm",65,2),new h("aserăm",67,1),new h("seserăm",67,2),new h("iserăm",67,1),new h("userăm",67,1),new h("âserăm",67,1),new h("irăm",65,1),new h("urăm",65,1),new h("ârăm",65,1),new h("au",-1,1),new h("eau",76,1),new h("iau",76,1),new h("indu",-1,1),new h("ându",-1,1),new h("ez",-1,1),new h("ească",-1,1),new h("ară",-1,1),new h("seră",-1,2),new h("aseră",84,1),new h("seseră",84,2),new h("iseră",84,1),new h("useră",84,1),new h("âseră",84,1),new h("iră",-1,1),new h("ură",-1,1),new h("âră",-1,1),new h("ează",-1,1)],i=[new h("a",-1,1),new h("e",-1,1),new h("ie",1,1),new h("i",-1,1),new h("ă",-1,1)],m=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,2,32,0,0,4],l=new z;function f(e,i){l.eq_s(1,e)&&(l.ket=l.cursor,l.in_grouping(m,97,259)&&l.slice_from(i))}function p(){if(l.out_grouping(m,97,259)){for(;!l.in_grouping(m,97,259);){if(l.cursor>=l.limit)return!0;l.cursor++}return!1}return!0}function d(){var e,i,r=l.cursor;if(l.in_grouping(m,97,259)){if(e=l.cursor,!p())return void(a=l.cursor);if(l.cursor=e,!function(){if(l.in_grouping(m,97,259))for(;!l.out_grouping(m,97,259);){if(l.cursor>=l.limit)return!0;l.cursor++}return!1}())return void(a=l.cursor)}l.cursor=r,l.out_grouping(m,97,259)&&(i=l.cursor,p()&&(l.cursor=i,l.in_grouping(m,97,259)&&l.cursor<l.limit&&l.cursor++),a=l.cursor)}function b(){for(;!l.in_grouping(m,97,259);){if(l.cursor>=l.limit)return!1;l.cursor++}for(;!l.out_grouping(m,97,259);){if(l.cursor>=l.limit)return!1;l.cursor++}return!0}function v(){return t<=l.cursor}function _(){var e,i=l.limit-l.cursor;if(l.ket=l.cursor,(e=l.find_among_b(c,46))&&(l.bra=l.cursor,v())){switch(e){case 1:l.slice_from("abil");break;case 2:l.slice_from("ibil");break;case 3:l.slice_from("iv");break;case 4:l.slice_from("ic");break;case 5:l.slice_from("at");break;case 6:l.slice_from("it")}return r=!0,l.cursor=l.limit-i,!0}return!1}function g(){var e,i;for(r=!1;;)if(i=l.limit-l.cursor,!_()){l.cursor=l.limit-i;break}if(l.ket=l.cursor,(e=l.find_among_b(u,62))&&(l.bra=l.cursor,n<=l.cursor)){switch(e){case 1:l.slice_del();break;case 2:l.eq_s_b(1,"ţ")&&(l.bra=l.cursor,l.slice_from("t"));break;case 3:l.slice_from("ist")}r=!0}}function k(){var e;l.ket=l.cursor,(e=l.find_among_b(i,5))&&(l.bra=l.cursor,a<=l.cursor&&1==e&&l.slice_del())}this.setCurrent=function(e){l.setCurrent(e)},this.getCurrent=function(){return l.getCurrent()},this.stem=function(){var e,i=l.cursor;return function(){for(var e,i;e=l.cursor,l.in_grouping(m,97,259)&&(i=l.cursor,l.bra=i,f("u","U"),l.cursor=i,f("i","I")),l.cursor=e,!(l.cursor>=l.limit);)l.cursor++}(),l.cursor=i,e=l.cursor,a=l.limit,n=t=a,d(),l.cursor=e,b()&&(t=l.cursor,b()&&(n=l.cursor)),l.limit_backward=i,l.cursor=l.limit,function(){var e,i;if(l.ket=l.cursor,(e=l.find_among_b(s,16))&&(l.bra=l.cursor,v()))switch(e){case 1:l.slice_del();break;case 2:l.slice_from("a");break;case 3:l.slice_from("e");break;case 4:l.slice_from("i");break;case 5:i=l.limit-l.cursor,l.eq_s_b(2,"ab")||(l.cursor=l.limit-i,l.slice_from("i"));break;case 6:l.slice_from("at");break;case 7:l.slice_from("aţi")}}(),l.cursor=l.limit,g(),l.cursor=l.limit,r||(l.cursor=l.limit,function(){var e,i,r;if(l.cursor>=a){if(i=l.limit_backward,l.limit_backward=a,l.ket=l.cursor,e=l.find_among_b(w,94))switch(l.bra=l.cursor,e){case 1:if(r=l.limit-l.cursor,!l.out_grouping_b(m,97,259)&&(l.cursor=l.limit-r,!l.eq_s_b(1,"u")))break;case 2:l.slice_del()}l.limit_backward=i}}(),l.cursor=l.limit),k(),l.cursor=l.limit_backward,function(){for(var e;;){if(l.bra=l.cursor,e=l.find_among(o,3))switch(l.ket=l.cursor,e){case 1:l.slice_from("i");continue;case 2:l.slice_from("u");continue;case 3:if(l.cursor>=l.limit)break;l.cursor++;continue}break}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return i.setCurrent(e),i.stem(),i.getCurrent()}):(i.setCurrent(e),i.stem(),i.getCurrent())}),e.Pipeline.registerFunction(e.ro.stemmer,"stemmer-ro"),e.ro.stopWordFilter=e.generateStopWordFilter("acea aceasta această aceea acei aceia acel acela acele acelea acest acesta aceste acestea aceşti aceştia acolo acord acum ai aia aibă aici al ale alea altceva altcineva am ar are asemenea asta astea astăzi asupra au avea avem aveţi azi aş aşadar aţi bine bucur bună ca care caut ce cel ceva chiar cinci cine cineva contra cu cum cumva curând curînd când cât câte câtva câţi cînd cît cîte cîtva cîţi că căci cărei căror cărui către da dacă dar datorită dată dau de deci deja deoarece departe deşi din dinaintea dintr- dintre doi doilea două drept după dă ea ei el ele eram este eu eşti face fata fi fie fiecare fii fim fiu fiţi frumos fără graţie halbă iar ieri la le li lor lui lângă lîngă mai mea mei mele mereu meu mi mie mine mult multă mulţi mulţumesc mâine mîine mă ne nevoie nici nicăieri nimeni nimeri nimic nişte noastre noastră noi noroc nostru nouă noştri nu opt ori oricare orice oricine oricum oricând oricât oricînd oricît oriunde patra patru patrulea pe pentru peste pic poate pot prea prima primul prin puţin puţina puţină până pînă rog sa sale sau se spate spre sub sunt suntem sunteţi sută sînt sîntem sînteţi să săi său ta tale te timp tine toate toată tot totuşi toţi trei treia treilea tu tăi tău un una unde undeva unei uneia unele uneori unii unor unora unu unui unuia unul vi voastre voastră voi vostru vouă voştri vreme vreo vreun vă zece zero zi zice îi îl îmi împotriva în  înainte înaintea încotro încât încît între întrucât întrucît îţi ăla ălea ăsta ăstea ăştia şapte şase şi ştiu ţi ţie".split(" ")),e.Pipeline.registerFunction(e.ro.stopWordFilter,"stopWordFilter-ro")}});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.ru.js b/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.ru.js
deleted file mode 100644
index ac99248044a350007567ce177ba3e2ae286bef63..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.ru.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,n){"function"==typeof define&&define.amd?define(n):"object"==typeof exports?module.exports=n():n()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var h,g,n;e.ru=function(){this.pipeline.reset(),this.pipeline.add(e.ru.trimmer,e.ru.stopWordFilter,e.ru.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.ru.stemmer))},e.ru.wordCharacters="Ѐ-҄҇-ԯᴫᵸⷠ-ⷿꙀ-ꚟ︮︯",e.ru.trimmer=e.trimmerSupport.generateTrimmer(e.ru.wordCharacters),e.Pipeline.registerFunction(e.ru.trimmer,"trimmer-ru"),e.ru.stemmer=(h=e.stemmerSupport.Among,g=e.stemmerSupport.SnowballProgram,n=new function(){var n,e,r=[new h("в",-1,1),new h("ив",0,2),new h("ыв",0,2),new h("вши",-1,1),new h("ивши",3,2),new h("ывши",3,2),new h("вшись",-1,1),new h("ившись",6,2),new h("ывшись",6,2)],t=[new h("ее",-1,1),new h("ие",-1,1),new h("ое",-1,1),new h("ые",-1,1),new h("ими",-1,1),new h("ыми",-1,1),new h("ей",-1,1),new h("ий",-1,1),new h("ой",-1,1),new h("ый",-1,1),new h("ем",-1,1),new h("им",-1,1),new h("ом",-1,1),new h("ым",-1,1),new h("его",-1,1),new h("ого",-1,1),new h("ему",-1,1),new h("ому",-1,1),new h("их",-1,1),new h("ых",-1,1),new h("ею",-1,1),new h("ою",-1,1),new h("ую",-1,1),new h("юю",-1,1),new h("ая",-1,1),new h("яя",-1,1)],w=[new h("ем",-1,1),new h("нн",-1,1),new h("вш",-1,1),new h("ивш",2,2),new h("ывш",2,2),new h("щ",-1,1),new h("ющ",5,1),new h("ующ",6,2)],i=[new h("сь",-1,1),new h("ся",-1,1)],u=[new h("ла",-1,1),new h("ила",0,2),new h("ыла",0,2),new h("на",-1,1),new h("ена",3,2),new h("ете",-1,1),new h("ите",-1,2),new h("йте",-1,1),new h("ейте",7,2),new h("уйте",7,2),new h("ли",-1,1),new h("или",10,2),new h("ыли",10,2),new h("й",-1,1),new h("ей",13,2),new h("уй",13,2),new h("л",-1,1),new h("ил",16,2),new h("ыл",16,2),new h("ем",-1,1),new h("им",-1,2),new h("ым",-1,2),new h("н",-1,1),new h("ен",22,2),new h("ло",-1,1),new h("ило",24,2),new h("ыло",24,2),new h("но",-1,1),new h("ено",27,2),new h("нно",27,1),new h("ет",-1,1),new h("ует",30,2),new h("ит",-1,2),new h("ыт",-1,2),new h("ют",-1,1),new h("уют",34,2),new h("ят",-1,2),new h("ны",-1,1),new h("ены",37,2),new h("ть",-1,1),new h("ить",39,2),new h("ыть",39,2),new h("ешь",-1,1),new h("ишь",-1,2),new h("ю",-1,2),new h("ую",44,2)],s=[new h("а",-1,1),new h("ев",-1,1),new h("ов",-1,1),new h("е",-1,1),new h("ие",3,1),new h("ье",3,1),new h("и",-1,1),new h("еи",6,1),new h("ии",6,1),new h("ами",6,1),new h("ями",6,1),new h("иями",10,1),new h("й",-1,1),new h("ей",12,1),new h("ией",13,1),new h("ий",12,1),new h("ой",12,1),new h("ам",-1,1),new h("ем",-1,1),new h("ием",18,1),new h("ом",-1,1),new h("ям",-1,1),new h("иям",21,1),new h("о",-1,1),new h("у",-1,1),new h("ах",-1,1),new h("ях",-1,1),new h("иях",26,1),new h("ы",-1,1),new h("ь",-1,1),new h("ю",-1,1),new h("ию",30,1),new h("ью",30,1),new h("я",-1,1),new h("ия",33,1),new h("ья",33,1)],o=[new h("ост",-1,1),new h("ость",-1,1)],c=[new h("ейше",-1,1),new h("н",-1,2),new h("ейш",-1,1),new h("ь",-1,3)],m=[33,65,8,232],l=new g;function f(){for(;!l.in_grouping(m,1072,1103);){if(l.cursor>=l.limit)return!1;l.cursor++}return!0}function a(){for(;!l.out_grouping(m,1072,1103);){if(l.cursor>=l.limit)return!1;l.cursor++}return!0}function p(e,n){var r,t;if(l.ket=l.cursor,r=l.find_among_b(e,n)){switch(l.bra=l.cursor,r){case 1:if(t=l.limit-l.cursor,!l.eq_s_b(1,"а")&&(l.cursor=l.limit-t,!l.eq_s_b(1,"я")))return!1;case 2:l.slice_del()}return!0}return!1}function d(e,n){var r;return l.ket=l.cursor,!!(r=l.find_among_b(e,n))&&(l.bra=l.cursor,1==r&&l.slice_del(),!0)}function _(){return!!d(t,26)&&(p(w,8),!0)}function b(){var e;l.ket=l.cursor,(e=l.find_among_b(o,2))&&(l.bra=l.cursor,n<=l.cursor&&1==e&&l.slice_del())}this.setCurrent=function(e){l.setCurrent(e)},this.getCurrent=function(){return l.getCurrent()},this.stem=function(){return e=l.limit,n=e,f()&&(e=l.cursor,a()&&f()&&a()&&(n=l.cursor)),l.cursor=l.limit,!(l.cursor<e)&&(l.limit_backward=e,p(r,9)||(l.cursor=l.limit,d(i,2)||(l.cursor=l.limit),_()||(l.cursor=l.limit,p(u,46)||(l.cursor=l.limit,d(s,36)))),l.cursor=l.limit,l.ket=l.cursor,l.eq_s_b(1,"и")?(l.bra=l.cursor,l.slice_del()):l.cursor=l.limit,b(),l.cursor=l.limit,function(){var e;if(l.ket=l.cursor,e=l.find_among_b(c,4))switch(l.bra=l.cursor,e){case 1:if(l.slice_del(),l.ket=l.cursor,!l.eq_s_b(1,"н"))break;l.bra=l.cursor;case 2:if(!l.eq_s_b(1,"н"))break;case 3:l.slice_del()}}(),!0)}},function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}),e.Pipeline.registerFunction(e.ru.stemmer,"stemmer-ru"),e.ru.stopWordFilter=e.generateStopWordFilter("алло без близко более больше будем будет будете будешь будто буду будут будь бы бывает бывь был была были было быть в важная важное важные важный вам вами вас ваш ваша ваше ваши вверх вдали вдруг ведь везде весь вниз внизу во вокруг вон восемнадцатый восемнадцать восемь восьмой вот впрочем времени время все всегда всего всем всеми всему всех всею всю всюду вся всё второй вы г где говорил говорит год года году да давно даже далеко дальше даром два двадцатый двадцать две двенадцатый двенадцать двух девятнадцатый девятнадцать девятый девять действительно дел день десятый десять для до довольно долго должно другая другие других друго другое другой е его ее ей ему если есть еще ещё ею её ж же жизнь за занят занята занято заняты затем зато зачем здесь значит и из или им именно иметь ими имя иногда их к каждая каждое каждые каждый кажется как какая какой кем когда кого ком кому конечно которая которого которой которые который которых кроме кругом кто куда лет ли лишь лучше люди м мало между меля менее меньше меня миллионов мимо мира мне много многочисленная многочисленное многочисленные многочисленный мной мною мог могут мож может можно можхо мои мой мор мочь моя моё мы на наверху над надо назад наиболее наконец нам нами нас начала наш наша наше наши не него недавно недалеко нее ней нельзя нем немного нему непрерывно нередко несколько нет нею неё ни нибудь ниже низко никогда никуда ними них ничего но ну нужно нх о об оба обычно один одиннадцатый одиннадцать однажды однако одного одной около он она они оно опять особенно от отовсюду отсюда очень первый перед по под пожалуйста позже пока пор пора после посреди потом потому почему почти прекрасно при про просто против процентов пятнадцатый пятнадцать пятый пять раз разве рано раньше рядом с сам сама сами самим самими самих само самого самой самом самому саму свое своего своей свои своих свою сеаой себе себя сегодня седьмой сейчас семнадцатый семнадцать семь сих сказал сказала сказать сколько слишком сначала снова со собой собою совсем спасибо стал суть т та так такая также такие такое такой там твой твоя твоё те тебе тебя тем теми теперь тех то тобой тобою тогда того тоже только том тому тот тою третий три тринадцатый тринадцать ту туда тут ты тысяч у уж уже уметь хорошо хотеть хоть хотя хочешь часто чаще чего человек чем чему через четвертый четыре четырнадцатый четырнадцать что чтоб чтобы чуть шестнадцатый шестнадцать шестой шесть эта эти этим этими этих это этого этой этом этому этот эту я \ufeffа".split(" ")),e.Pipeline.registerFunction(e.ru.stopWordFilter,"stopWordFilter-ru")}});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.stemmer.support.js b/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.stemmer.support.js
deleted file mode 100644
index 55fd4172c46835b24bc52edecb319a02e5652963..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.stemmer.support.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(r,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(r.lunr)}(this,function(){return function(r){r.stemmerSupport={Among:function(r,t,i,s){if(this.toCharArray=function(r){for(var t=r.length,i=new Array(t),s=0;s<t;s++)i[s]=r.charCodeAt(s);return i},!r&&""!=r||!t&&0!=t||!i)throw"Bad Among initialisation: s:"+r+", substring_i: "+t+", result: "+i;this.s_size=r.length,this.s=this.toCharArray(r),this.substring_i=t,this.result=i,this.method=s},SnowballProgram:function(){var b;return{bra:0,ket:0,limit:0,cursor:0,limit_backward:0,setCurrent:function(r){b=r,this.cursor=0,this.limit=r.length,this.limit_backward=0,this.bra=this.cursor,this.ket=this.limit},getCurrent:function(){var r=b;return b=null,r},in_grouping:function(r,t,i){if(this.cursor<this.limit){var s=b.charCodeAt(this.cursor);if(s<=i&&t<=s&&r[(s-=t)>>3]&1<<(7&s))return this.cursor++,!0}return!1},in_grouping_b:function(r,t,i){if(this.cursor>this.limit_backward){var s=b.charCodeAt(this.cursor-1);if(s<=i&&t<=s&&r[(s-=t)>>3]&1<<(7&s))return this.cursor--,!0}return!1},out_grouping:function(r,t,i){if(this.cursor<this.limit){var s=b.charCodeAt(this.cursor);if(i<s||s<t)return this.cursor++,!0;if(!(r[(s-=t)>>3]&1<<(7&s)))return this.cursor++,!0}return!1},out_grouping_b:function(r,t,i){if(this.cursor>this.limit_backward){var s=b.charCodeAt(this.cursor-1);if(i<s||s<t)return this.cursor--,!0;if(!(r[(s-=t)>>3]&1<<(7&s)))return this.cursor--,!0}return!1},eq_s:function(r,t){if(this.limit-this.cursor<r)return!1;for(var i=0;i<r;i++)if(b.charCodeAt(this.cursor+i)!=t.charCodeAt(i))return!1;return this.cursor+=r,!0},eq_s_b:function(r,t){if(this.cursor-this.limit_backward<r)return!1;for(var i=0;i<r;i++)if(b.charCodeAt(this.cursor-r+i)!=t.charCodeAt(i))return!1;return this.cursor-=r,!0},find_among:function(r,t){for(var i=0,s=t,e=this.cursor,n=this.limit,u=0,o=0,h=!1;;){for(var c=i+(s-i>>1),a=0,f=u<o?u:o,l=r[c],_=f;_<l.s_size;_++){if(e+f==n){a=-1;break}if(a=b.charCodeAt(e+f)-l.s[_])break;f++}if(a<0?(s=c,o=f):(i=c,u=f),s-i<=1){if(0<i||s==i||h)break;h=!0}}for(;;){if(u>=(l=r[i]).s_size){if(this.cursor=e+l.s_size,!l.method)return l.result;var m=l.method();if(this.cursor=e+l.s_size,m)return l.result}if((i=l.substring_i)<0)return 0}},find_among_b:function(r,t){for(var i=0,s=t,e=this.cursor,n=this.limit_backward,u=0,o=0,h=!1;;){for(var c=i+(s-i>>1),a=0,f=u<o?u:o,l=(_=r[c]).s_size-1-f;0<=l;l--){if(e-f==n){a=-1;break}if(a=b.charCodeAt(e-1-f)-_.s[l])break;f++}if(a<0?(s=c,o=f):(i=c,u=f),s-i<=1){if(0<i||s==i||h)break;h=!0}}for(;;){var _;if(u>=(_=r[i]).s_size){if(this.cursor=e-_.s_size,!_.method)return _.result;var m=_.method();if(this.cursor=e-_.s_size,m)return _.result}if((i=_.substring_i)<0)return 0}},replace_s:function(r,t,i){var s=i.length-(t-r);return b=b.substring(0,r)+i+b.substring(t),this.limit+=s,this.cursor>=t?this.cursor+=s:this.cursor>r&&(this.cursor=r),s},slice_check:function(){if(this.bra<0||this.bra>this.ket||this.ket>this.limit||this.limit>b.length)throw"faulty slice operation"},slice_from:function(r){this.slice_check(),this.replace_s(this.bra,this.ket,r)},slice_del:function(){this.slice_from("")},insert:function(r,t,i){var s=this.replace_s(r,t,i);r<=this.bra&&(this.bra+=s),r<=this.ket&&(this.ket+=s)},slice_to:function(){return this.slice_check(),b.substring(this.bra,this.ket)},eq_v_b:function(r){return this.eq_s_b(r.length,r)}}}},r.trimmerSupport={generateTrimmer:function(r){var t=new RegExp("^[^"+r+"]+"),i=new RegExp("[^"+r+"]+$");return function(r){return"function"==typeof r.update?r.update(function(r){return r.replace(t,"").replace(i,"")}):r.replace(t,"").replace(i,"")}}}}});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.sv.js b/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.sv.js
deleted file mode 100644
index 6daf5f9d807ec44fb0cfba836a21c17dd888f8da..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.sv.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(e){if(void 0===e)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===e.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var r,l,n;e.sv=function(){this.pipeline.reset(),this.pipeline.add(e.sv.trimmer,e.sv.stopWordFilter,e.sv.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(e.sv.stemmer))},e.sv.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",e.sv.trimmer=e.trimmerSupport.generateTrimmer(e.sv.wordCharacters),e.Pipeline.registerFunction(e.sv.trimmer,"trimmer-sv"),e.sv.stemmer=(r=e.stemmerSupport.Among,l=e.stemmerSupport.SnowballProgram,n=new function(){var n,t,i=[new r("a",-1,1),new r("arna",0,1),new r("erna",0,1),new r("heterna",2,1),new r("orna",0,1),new r("ad",-1,1),new r("e",-1,1),new r("ade",6,1),new r("ande",6,1),new r("arne",6,1),new r("are",6,1),new r("aste",6,1),new r("en",-1,1),new r("anden",12,1),new r("aren",12,1),new r("heten",12,1),new r("ern",-1,1),new r("ar",-1,1),new r("er",-1,1),new r("heter",18,1),new r("or",-1,1),new r("s",-1,2),new r("as",21,1),new r("arnas",22,1),new r("ernas",22,1),new r("ornas",22,1),new r("es",21,1),new r("ades",26,1),new r("andes",26,1),new r("ens",21,1),new r("arens",29,1),new r("hetens",29,1),new r("erns",21,1),new r("at",-1,1),new r("andet",-1,1),new r("het",-1,1),new r("ast",-1,1)],s=[new r("dd",-1,-1),new r("gd",-1,-1),new r("nn",-1,-1),new r("dt",-1,-1),new r("gt",-1,-1),new r("kt",-1,-1),new r("tt",-1,-1)],a=[new r("ig",-1,1),new r("lig",0,1),new r("els",-1,1),new r("fullt",-1,3),new r("löst",-1,2)],o=[17,65,16,1,0,0,0,0,0,0,0,0,0,0,0,0,24,0,32],u=[119,127,149],m=new l;this.setCurrent=function(e){m.setCurrent(e)},this.getCurrent=function(){return m.getCurrent()},this.stem=function(){var e,r=m.cursor;return function(){var e,r=m.cursor+3;if(t=m.limit,0<=r||r<=m.limit){for(n=r;;){if(e=m.cursor,m.in_grouping(o,97,246)){m.cursor=e;break}if(m.cursor=e,m.cursor>=m.limit)return;m.cursor++}for(;!m.out_grouping(o,97,246);){if(m.cursor>=m.limit)return;m.cursor++}(t=m.cursor)<n&&(t=n)}}(),m.limit_backward=r,m.cursor=m.limit,function(){var e,r=m.limit_backward;if(m.cursor>=t&&(m.limit_backward=t,m.cursor=m.limit,m.ket=m.cursor,e=m.find_among_b(i,37),m.limit_backward=r,e))switch(m.bra=m.cursor,e){case 1:m.slice_del();break;case 2:m.in_grouping_b(u,98,121)&&m.slice_del()}}(),m.cursor=m.limit,e=m.limit_backward,m.cursor>=t&&(m.limit_backward=t,m.cursor=m.limit,m.find_among_b(s,7)&&(m.cursor=m.limit,m.ket=m.cursor,m.cursor>m.limit_backward&&(m.bra=--m.cursor,m.slice_del())),m.limit_backward=e),m.cursor=m.limit,function(){var e,r;if(m.cursor>=t){if(r=m.limit_backward,m.limit_backward=t,m.cursor=m.limit,m.ket=m.cursor,e=m.find_among_b(a,5))switch(m.bra=m.cursor,e){case 1:m.slice_del();break;case 2:m.slice_from("lös");break;case 3:m.slice_from("full")}m.limit_backward=r}}(),!0}},function(e){return"function"==typeof e.update?e.update(function(e){return n.setCurrent(e),n.stem(),n.getCurrent()}):(n.setCurrent(e),n.stem(),n.getCurrent())}),e.Pipeline.registerFunction(e.sv.stemmer,"stemmer-sv"),e.sv.stopWordFilter=e.generateStopWordFilter("alla allt att av blev bli blir blivit de dem den denna deras dess dessa det detta dig din dina ditt du där då efter ej eller en er era ert ett från för ha hade han hans har henne hennes hon honom hur här i icke ingen inom inte jag ju kan kunde man med mellan men mig min mina mitt mot mycket ni nu när någon något några och om oss på samma sedan sig sin sina sitta själv skulle som så sådan sådana sådant till under upp ut utan vad var vara varför varit varje vars vart vem vi vid vilka vilkas vilken vilket vår våra vårt än är åt över".split(" ")),e.Pipeline.registerFunction(e.sv.stopWordFilter,"stopWordFilter-sv")}});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.th.js b/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.th.js
deleted file mode 100644
index ee8ef373a0d0a4aa2609d7382d7b6bb605824fe6..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.th.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,r){"function"==typeof define&&define.amd?define(r):"object"==typeof exports?module.exports=r():r()(e.lunr)}(this,function(){return function(t){if(void 0===t)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===t.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var i="2"==t.version[0];t.th=function(){this.pipeline.reset(),this.pipeline.add(t.th.trimmer),i?this.tokenizer=t.th.tokenizer:(t.tokenizer&&(t.tokenizer=t.th.tokenizer),this.tokenizerFn&&(this.tokenizerFn=t.th.tokenizer))},t.th.wordCharacters="[฀-๿]",t.th.trimmer=t.trimmerSupport.generateTrimmer(t.th.wordCharacters),t.Pipeline.registerFunction(t.th.trimmer,"trimmer-th");var n=t.wordcut;n.init(),t.th.tokenizer=function(e){if(!arguments.length||null==e||null==e)return[];if(Array.isArray(e))return e.map(function(e){return i?new t.Token(e):e});var r=e.toString().replace(/^\s+/,"");return n.cut(r).split("|")}}});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.tr.js b/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.tr.js
deleted file mode 100644
index e8fb5a7df64cf44eee42ab10ad6386bb57fa9e3d..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/lunr/lunr.tr.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(r,i){"function"==typeof define&&define.amd?define(i):"object"==typeof exports?module.exports=i():i()(r.lunr)}(this,function(){return function(r){if(void 0===r)throw new Error("Lunr is not present. Please include / require Lunr before this script.");if(void 0===r.stemmerSupport)throw new Error("Lunr stemmer support is not present. Please include / require Lunr stemmer support before this script.");var mr,dr,i;r.tr=function(){this.pipeline.reset(),this.pipeline.add(r.tr.trimmer,r.tr.stopWordFilter,r.tr.stemmer),this.searchPipeline&&(this.searchPipeline.reset(),this.searchPipeline.add(r.tr.stemmer))},r.tr.wordCharacters="A-Za-zªºÀ-ÖØ-öø-ʸˠ-ˤᴀ-ᴥᴬ-ᵜᵢ-ᵥᵫ-ᵷᵹ-ᶾḀ-ỿⁱⁿₐ-ₜKÅℲⅎⅠ-ↈⱠ-ⱿꜢ-ꞇꞋ-ꞭꞰ-ꞷꟷ-ꟿꬰ-ꭚꭜ-ꭤff-stA-Za-z",r.tr.trimmer=r.trimmerSupport.generateTrimmer(r.tr.wordCharacters),r.Pipeline.registerFunction(r.tr.trimmer,"trimmer-tr"),r.tr.stemmer=(mr=r.stemmerSupport.Among,dr=r.stemmerSupport.SnowballProgram,i=new function(){var t,r=[new mr("m",-1,-1),new mr("n",-1,-1),new mr("miz",-1,-1),new mr("niz",-1,-1),new mr("muz",-1,-1),new mr("nuz",-1,-1),new mr("müz",-1,-1),new mr("nüz",-1,-1),new mr("mız",-1,-1),new mr("nız",-1,-1)],i=[new mr("leri",-1,-1),new mr("ları",-1,-1)],e=[new mr("ni",-1,-1),new mr("nu",-1,-1),new mr("nü",-1,-1),new mr("nı",-1,-1)],n=[new mr("in",-1,-1),new mr("un",-1,-1),new mr("ün",-1,-1),new mr("ın",-1,-1)],u=[new mr("a",-1,-1),new mr("e",-1,-1)],o=[new mr("na",-1,-1),new mr("ne",-1,-1)],s=[new mr("da",-1,-1),new mr("ta",-1,-1),new mr("de",-1,-1),new mr("te",-1,-1)],c=[new mr("nda",-1,-1),new mr("nde",-1,-1)],l=[new mr("dan",-1,-1),new mr("tan",-1,-1),new mr("den",-1,-1),new mr("ten",-1,-1)],a=[new mr("ndan",-1,-1),new mr("nden",-1,-1)],m=[new mr("la",-1,-1),new mr("le",-1,-1)],d=[new mr("ca",-1,-1),new mr("ce",-1,-1)],f=[new mr("im",-1,-1),new mr("um",-1,-1),new mr("üm",-1,-1),new mr("ım",-1,-1)],b=[new mr("sin",-1,-1),new mr("sun",-1,-1),new mr("sün",-1,-1),new mr("sın",-1,-1)],w=[new mr("iz",-1,-1),new mr("uz",-1,-1),new mr("üz",-1,-1),new mr("ız",-1,-1)],_=[new mr("siniz",-1,-1),new mr("sunuz",-1,-1),new mr("sünüz",-1,-1),new mr("sınız",-1,-1)],k=[new mr("lar",-1,-1),new mr("ler",-1,-1)],p=[new mr("niz",-1,-1),new mr("nuz",-1,-1),new mr("nüz",-1,-1),new mr("nız",-1,-1)],g=[new mr("dir",-1,-1),new mr("tir",-1,-1),new mr("dur",-1,-1),new mr("tur",-1,-1),new mr("dür",-1,-1),new mr("tür",-1,-1),new mr("dır",-1,-1),new mr("tır",-1,-1)],y=[new mr("casına",-1,-1),new mr("cesine",-1,-1)],z=[new mr("di",-1,-1),new mr("ti",-1,-1),new mr("dik",-1,-1),new mr("tik",-1,-1),new mr("duk",-1,-1),new mr("tuk",-1,-1),new mr("dük",-1,-1),new mr("tük",-1,-1),new mr("dık",-1,-1),new mr("tık",-1,-1),new mr("dim",-1,-1),new mr("tim",-1,-1),new mr("dum",-1,-1),new mr("tum",-1,-1),new mr("düm",-1,-1),new mr("tüm",-1,-1),new mr("dım",-1,-1),new mr("tım",-1,-1),new mr("din",-1,-1),new mr("tin",-1,-1),new mr("dun",-1,-1),new mr("tun",-1,-1),new mr("dün",-1,-1),new mr("tün",-1,-1),new mr("dın",-1,-1),new mr("tın",-1,-1),new mr("du",-1,-1),new mr("tu",-1,-1),new mr("dü",-1,-1),new mr("tü",-1,-1),new mr("dı",-1,-1),new mr("tı",-1,-1)],h=[new mr("sa",-1,-1),new mr("se",-1,-1),new mr("sak",-1,-1),new mr("sek",-1,-1),new mr("sam",-1,-1),new mr("sem",-1,-1),new mr("san",-1,-1),new mr("sen",-1,-1)],v=[new mr("miş",-1,-1),new mr("muş",-1,-1),new mr("müş",-1,-1),new mr("mış",-1,-1)],q=[new mr("b",-1,1),new mr("c",-1,2),new mr("d",-1,3),new mr("ğ",-1,4)],C=[17,65,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,8,0,0,0,0,0,0,1],P=[1,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,1],F=[65],S=[65],W=[["a",[1,64,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],97,305],["e",[17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130],101,252],["ı",[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],97,305],["i",[17],101,105],["o",F,111,117],["ö",S,246,252],["u",F,111,117]],L=new dr;function x(r,i,e){for(;;){var n=L.limit-L.cursor;if(L.in_grouping_b(r,i,e)){L.cursor=L.limit-n;break}if(L.cursor=L.limit-n,L.cursor<=L.limit_backward)return!1;L.cursor--}return!0}function A(){var r,i;r=L.limit-L.cursor,x(C,97,305);for(var e=0;e<W.length;e++){i=L.limit-L.cursor;var n=W[e];if(L.eq_s_b(1,n[0])&&x(n[1],n[2],n[3]))return L.cursor=L.limit-r,!0;L.cursor=L.limit-i}return L.cursor=L.limit-i,!(!L.eq_s_b(1,"ü")||!x(S,246,252))&&(L.cursor=L.limit-r,!0)}function E(r,i){var e,n=L.limit-L.cursor;return r()&&(L.cursor=L.limit-n,L.cursor>L.limit_backward&&(L.cursor--,e=L.limit-L.cursor,i()))?(L.cursor=L.limit-e,!0):(L.cursor=L.limit-n,r()?(L.cursor=L.limit-n,!1):(L.cursor=L.limit-n,!(L.cursor<=L.limit_backward)&&(L.cursor--,!!i()&&(L.cursor=L.limit-n,!0))))}function j(r){return E(r,function(){return L.in_grouping_b(C,97,305)})}function T(){return j(function(){return L.eq_s_b(1,"n")})}function Z(){return j(function(){return L.eq_s_b(1,"y")})}function B(){return L.find_among_b(r,10)&&E(function(){return L.in_grouping_b(P,105,305)},function(){return L.out_grouping_b(C,97,305)})}function D(){return A()&&L.in_grouping_b(P,105,305)&&j(function(){return L.eq_s_b(1,"s")})}function G(){return L.find_among_b(i,2)}function H(){return A()&&L.find_among_b(n,4)&&T()}function I(){return A()&&L.find_among_b(s,4)}function J(){return A()&&L.find_among_b(c,2)}function K(){return A()&&L.find_among_b(f,4)&&Z()}function M(){return A()&&L.find_among_b(b,4)}function N(){return A()&&L.find_among_b(w,4)&&Z()}function O(){return L.find_among_b(_,4)}function Q(){return A()&&L.find_among_b(k,2)}function R(){return A()&&L.find_among_b(g,8)}function U(){return A()&&L.find_among_b(z,32)&&Z()}function V(){return L.find_among_b(h,8)&&Z()}function X(){return A()&&L.find_among_b(v,4)&&Z()}function Y(){var r=L.limit-L.cursor;return!(X()||(L.cursor=L.limit-r,U()||(L.cursor=L.limit-r,V()||(L.cursor=L.limit-r,L.eq_s_b(3,"ken")&&Z()))))}function $(){if(L.find_among_b(y,2)){var r=L.limit-L.cursor;if(O()||(L.cursor=L.limit-r,Q()||(L.cursor=L.limit-r,K()||(L.cursor=L.limit-r,M()||(L.cursor=L.limit-r,N()||(L.cursor=L.limit-r))))),X())return!1}return!0}function rr(){if(!A()||!L.find_among_b(p,4))return!0;var r=L.limit-L.cursor;return!U()&&(L.cursor=L.limit-r,!V())}function ir(){var r,i,e,n=L.limit-L.cursor;if(L.ket=L.cursor,t=!0,Y()&&(L.cursor=L.limit-n,$()&&(L.cursor=L.limit-n,function(){if(Q()){L.bra=L.cursor,L.slice_del();var r=L.limit-L.cursor;return L.ket=L.cursor,R()||(L.cursor=L.limit-r,U()||(L.cursor=L.limit-r,V()||(L.cursor=L.limit-r,X()||(L.cursor=L.limit-r)))),t=!1}return!0}()&&(L.cursor=L.limit-n,rr()&&(L.cursor=L.limit-n,e=L.limit-L.cursor,!(O()||(L.cursor=L.limit-e,N()||(L.cursor=L.limit-e,M()||(L.cursor=L.limit-e,K()))))||(L.bra=L.cursor,L.slice_del(),i=L.limit-L.cursor,L.ket=L.cursor,X()||(L.cursor=L.limit-i),0)))))){if(L.cursor=L.limit-n,!R())return;L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,r=L.limit-L.cursor,O()||(L.cursor=L.limit-r,Q()||(L.cursor=L.limit-r,K()||(L.cursor=L.limit-r,M()||(L.cursor=L.limit-r,N()||(L.cursor=L.limit-r))))),X()||(L.cursor=L.limit-r)}L.bra=L.cursor,L.slice_del()}function er(){var r,i,e,n;if(L.ket=L.cursor,L.eq_s_b(2,"ki")){if(r=L.limit-L.cursor,I())return L.bra=L.cursor,L.slice_del(),i=L.limit-L.cursor,L.ket=L.cursor,Q()?(L.bra=L.cursor,L.slice_del(),er()):(L.cursor=L.limit-i,B()&&(L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er()))),!0;if(L.cursor=L.limit-r,H()){if(L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,e=L.limit-L.cursor,G())L.bra=L.cursor,L.slice_del();else{if(L.cursor=L.limit-e,L.ket=L.cursor,!B()&&(L.cursor=L.limit-e,!D()&&(L.cursor=L.limit-e,!er())))return!0;L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er())}return!0}if(L.cursor=L.limit-r,J()){if(n=L.limit-L.cursor,G())L.bra=L.cursor,L.slice_del();else if(L.cursor=L.limit-n,D())L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er());else if(L.cursor=L.limit-n,!er())return!1;return!0}}return!1}function nr(r){if(L.ket=L.cursor,!J()&&(L.cursor=L.limit-r,!A()||!L.find_among_b(o,2)))return!1;var i=L.limit-L.cursor;if(G())L.bra=L.cursor,L.slice_del();else if(L.cursor=L.limit-i,D())L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er());else if(L.cursor=L.limit-i,!er())return!1;return!0}function tr(r){if(L.ket=L.cursor,!(A()&&L.find_among_b(a,2)||(L.cursor=L.limit-r,A()&&L.find_among_b(e,4))))return!1;var i=L.limit-L.cursor;return!(!D()&&(L.cursor=L.limit-i,!G()))&&(L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er()),!0)}function ur(){var r,i=L.limit-L.cursor;return L.ket=L.cursor,!!(H()||(L.cursor=L.limit-i,A()&&L.find_among_b(m,2)&&Z()))&&(L.bra=L.cursor,L.slice_del(),r=L.limit-L.cursor,L.ket=L.cursor,!(!Q()||(L.bra=L.cursor,L.slice_del(),!er()))||(L.cursor=L.limit-r,L.ket=L.cursor,(B()||(L.cursor=L.limit-r,D()||(L.cursor=L.limit-r,er())))&&(L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er())),!0))}function or(){var r,i,e=L.limit-L.cursor;if(L.ket=L.cursor,!(I()||(L.cursor=L.limit-e,A()&&L.in_grouping_b(P,105,305)&&Z()||(L.cursor=L.limit-e,A()&&L.find_among_b(u,2)&&Z()))))return!1;if(L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,r=L.limit-L.cursor,B())L.bra=L.cursor,L.slice_del(),i=L.limit-L.cursor,L.ket=L.cursor,Q()||(L.cursor=L.limit-i);else if(L.cursor=L.limit-r,!Q())return!0;return L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,er(),!0}function sr(){var r,i,e=L.limit-L.cursor;if(L.ket=L.cursor,Q())return L.bra=L.cursor,L.slice_del(),void er();if(L.cursor=L.limit-e,L.ket=L.cursor,A()&&L.find_among_b(d,2)&&T())if(L.bra=L.cursor,L.slice_del(),r=L.limit-L.cursor,L.ket=L.cursor,G())L.bra=L.cursor,L.slice_del();else{if(L.cursor=L.limit-r,L.ket=L.cursor,!B()&&(L.cursor=L.limit-r,!D())){if(L.cursor=L.limit-r,L.ket=L.cursor,!Q())return;if(L.bra=L.cursor,L.slice_del(),!er())return}L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er())}else if(L.cursor=L.limit-e,!nr(e)&&(L.cursor=L.limit-e,!tr(e))){if(L.cursor=L.limit-e,L.ket=L.cursor,A()&&L.find_among_b(l,4))return L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,i=L.limit-L.cursor,void(B()?(L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er())):(L.cursor=L.limit-i,Q()?(L.bra=L.cursor,L.slice_del()):L.cursor=L.limit-i,er()));if(L.cursor=L.limit-e,!ur()){if(L.cursor=L.limit-e,G())return L.bra=L.cursor,void L.slice_del();L.cursor=L.limit-e,er()||(L.cursor=L.limit-e,or()||(L.cursor=L.limit-e,L.ket=L.cursor,(B()||(L.cursor=L.limit-e,D()))&&(L.bra=L.cursor,L.slice_del(),L.ket=L.cursor,Q()&&(L.bra=L.cursor,L.slice_del(),er()))))}}}function cr(r,i,e){if(L.cursor=L.limit-r,function(){for(;;){var r=L.limit-L.cursor;if(L.in_grouping_b(C,97,305)){L.cursor=L.limit-r;break}if(L.cursor=L.limit-r,L.cursor<=L.limit_backward)return!1;L.cursor--}return!0}()){var n=L.limit-L.cursor;if(!L.eq_s_b(1,i)&&(L.cursor=L.limit-n,!L.eq_s_b(1,e)))return!0;L.cursor=L.limit-r;var t=L.cursor;return L.insert(L.cursor,L.cursor,e),L.cursor=t,!1}return!0}function lr(r,i,e){for(;!L.eq_s(i,e);){if(L.cursor>=L.limit)return!0;L.cursor++}return i!=L.limit||(L.cursor=r,!1)}function ar(){var r,i,e=L.cursor;return!(!lr(r=L.cursor,2,"ad")||!lr(L.cursor=r,5,"soyad"))&&(L.limit_backward=e,L.cursor=L.limit,i=L.limit-L.cursor,(L.eq_s_b(1,"d")||(L.cursor=L.limit-i,L.eq_s_b(1,"g")))&&cr(i,"a","ı")&&cr(i,"e","i")&&cr(i,"o","u")&&cr(i,"ö","ü"),L.cursor=L.limit,function(){var r;if(L.ket=L.cursor,r=L.find_among_b(q,4))switch(L.bra=L.cursor,r){case 1:L.slice_from("p");break;case 2:L.slice_from("ç");break;case 3:L.slice_from("t");break;case 4:L.slice_from("k")}}(),!0)}this.setCurrent=function(r){L.setCurrent(r)},this.getCurrent=function(){return L.getCurrent()},this.stem=function(){return!!(function(){for(var r,i=L.cursor,e=2;;){for(r=L.cursor;!L.in_grouping(C,97,305);){if(L.cursor>=L.limit)return L.cursor=r,!(0<e||(L.cursor=i,0));L.cursor++}e--}}()&&(L.limit_backward=L.cursor,L.cursor=L.limit,ir(),L.cursor=L.limit,t&&(sr(),L.cursor=L.limit_backward,ar())))}},function(r){return"function"==typeof r.update?r.update(function(r){return i.setCurrent(r),i.stem(),i.getCurrent()}):(i.setCurrent(r),i.stem(),i.getCurrent())}),r.Pipeline.registerFunction(r.tr.stemmer,"stemmer-tr"),r.tr.stopWordFilter=r.generateStopWordFilter("acaba altmış altı ama ancak arada aslında ayrıca bana bazı belki ben benden beni benim beri beş bile bin bir biri birkaç birkez birçok birşey birşeyi biz bizden bize bizi bizim bu buna bunda bundan bunlar bunları bunların bunu bunun burada böyle böylece da daha dahi de defa değil diye diğer doksan dokuz dolayı dolayısıyla dört edecek eden ederek edilecek ediliyor edilmesi ediyor elli en etmesi etti ettiği ettiğini eğer gibi göre halen hangi hatta hem henüz hep hepsi her herhangi herkesin hiç hiçbir iki ile ilgili ise itibaren itibariyle için işte kadar karşın katrilyon kendi kendilerine kendini kendisi kendisine kendisini kez ki kim kimden kime kimi kimse kırk milyar milyon mu mü mı nasıl ne neden nedenle nerde nerede nereye niye niçin o olan olarak oldu olduklarını olduğu olduğunu olmadı olmadığı olmak olması olmayan olmaz olsa olsun olup olur olursa oluyor on ona ondan onlar onlardan onları onların onu onun otuz oysa pek rağmen sadece sanki sekiz seksen sen senden seni senin siz sizden sizi sizin tarafından trilyon tüm var vardı ve veya ya yani yapacak yapmak yaptı yaptıkları yaptığı yaptığını yapılan yapılması yapıyor yedi yerine yetmiş yine yirmi yoksa yüz zaten çok çünkü öyle üzere üç şey şeyden şeyi şeyler şu şuna şunda şundan şunları şunu şöyle".split(" ")),r.Pipeline.registerFunction(r.tr.stopWordFilter,"stopWordFilter-tr")}});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/lunr/tinyseg.js b/lib/AutoConnect-master/docs/assets/javascripts/lunr/tinyseg.js
deleted file mode 100644
index 45bffe09237d6f691365be13b11c8c205a4f35f5..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/lunr/tinyseg.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(_,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():t()(_.lunr)}(this,function(){return function(_){function t(){var _={"[一二三四五六七八九十百千万億兆]":"M","[一-龠々〆ヵヶ]":"H","[ぁ-ん]":"I","[ァ-ヴーア-ン゙ー]":"K","[a-zA-Za-zA-Z]":"A","[0-90-9]":"N"};for(var t in this.chartype_=[],_){var H=new RegExp;H.compile(t),this.chartype_.push([H,_[t]])}return this.BIAS__=-332,this.BC1__={HH:6,II:2461,KH:406,OH:-1378},this.BC2__={AA:-3267,AI:2744,AN:-878,HH:-4070,HM:-1711,HN:4012,HO:3761,IA:1327,IH:-1184,II:-1332,IK:1721,IO:5492,KI:3831,KK:-8741,MH:-3132,MK:3334,OO:-2920},this.BC3__={HH:996,HI:626,HK:-721,HN:-1307,HO:-836,IH:-301,KK:2762,MK:1079,MM:4034,OA:-1652,OH:266},this.BP1__={BB:295,OB:304,OO:-125,UB:352},this.BP2__={BO:60,OO:-1762},this.BQ1__={BHH:1150,BHM:1521,BII:-1158,BIM:886,BMH:1208,BNH:449,BOH:-91,BOO:-2597,OHI:451,OIH:-296,OKA:1851,OKH:-1020,OKK:904,OOO:2965},this.BQ2__={BHH:118,BHI:-1159,BHM:466,BIH:-919,BKK:-1720,BKO:864,OHH:-1139,OHM:-181,OIH:153,UHI:-1146},this.BQ3__={BHH:-792,BHI:2664,BII:-299,BKI:419,BMH:937,BMM:8335,BNN:998,BOH:775,OHH:2174,OHM:439,OII:280,OKH:1798,OKI:-793,OKO:-2242,OMH:-2402,OOO:11699},this.BQ4__={BHH:-3895,BIH:3761,BII:-4654,BIK:1348,BKK:-1806,BMI:-3385,BOO:-12396,OAH:926,OHH:266,OHK:-2036,ONN:-973},this.BW1__={",と":660,",同":727,"B1あ":1404,"B1同":542,"、と":660,"、同":727,"」と":1682,"あっ":1505,"いう":1743,"いっ":-2055,"いる":672,"うし":-4817,"うん":665,"から":3472,"がら":600,"こう":-790,"こと":2083,"こん":-1262,"さら":-4143,"さん":4573,"した":2641,"して":1104,"すで":-3399,"そこ":1977,"それ":-871,"たち":1122,"ため":601,"った":3463,"つい":-802,"てい":805,"てき":1249,"でき":1127,"です":3445,"では":844,"とい":-4915,"とみ":1922,"どこ":3887,"ない":5713,"なっ":3015,"など":7379,"なん":-1113,"にし":2468,"には":1498,"にも":1671,"に対":-912,"の一":-501,"の中":741,"ませ":2448,"まで":1711,"まま":2600,"まる":-2155,"やむ":-1947,"よっ":-2565,"れた":2369,"れで":-913,"をし":1860,"を見":731,"亡く":-1886,"京都":2558,"取り":-2784,"大き":-2604,"大阪":1497,"平方":-2314,"引き":-1336,"日本":-195,"本当":-2423,"毎日":-2113,"目指":-724,"B1あ":1404,"B1同":542,"」と":1682},this.BW2__={"..":-11822,11:-669,"――":-5730,"−−":-13175,"いう":-1609,"うか":2490,"かし":-1350,"かも":-602,"から":-7194,"かれ":4612,"がい":853,"がら":-3198,"きた":1941,"くな":-1597,"こと":-8392,"この":-4193,"させ":4533,"され":13168,"さん":-3977,"しい":-1819,"しか":-545,"した":5078,"して":972,"しな":939,"その":-3744,"たい":-1253,"たた":-662,"ただ":-3857,"たち":-786,"たと":1224,"たは":-939,"った":4589,"って":1647,"っと":-2094,"てい":6144,"てき":3640,"てく":2551,"ては":-3110,"ても":-3065,"でい":2666,"でき":-1528,"でし":-3828,"です":-4761,"でも":-4203,"とい":1890,"とこ":-1746,"とと":-2279,"との":720,"とみ":5168,"とも":-3941,"ない":-2488,"なが":-1313,"など":-6509,"なの":2614,"なん":3099,"にお":-1615,"にし":2748,"にな":2454,"によ":-7236,"に対":-14943,"に従":-4688,"に関":-11388,"のか":2093,"ので":-7059,"のに":-6041,"のの":-6125,"はい":1073,"はが":-1033,"はず":-2532,"ばれ":1813,"まし":-1316,"まで":-6621,"まれ":5409,"めて":-3153,"もい":2230,"もの":-10713,"らか":-944,"らし":-1611,"らに":-1897,"りし":651,"りま":1620,"れた":4270,"れて":849,"れば":4114,"ろう":6067,"われ":7901,"を通":-11877,"んだ":728,"んな":-4115,"一人":602,"一方":-1375,"一日":970,"一部":-1051,"上が":-4479,"会社":-1116,"出て":2163,"分の":-7758,"同党":970,"同日":-913,"大阪":-2471,"委員":-1250,"少な":-1050,"年度":-8669,"年間":-1626,"府県":-2363,"手権":-1982,"新聞":-4066,"日新":-722,"日本":-7068,"日米":3372,"曜日":-601,"朝鮮":-2355,"本人":-2697,"東京":-1543,"然と":-1384,"社会":-1276,"立て":-990,"第に":-1612,"米国":-4268,"11":-669},this.BW3__={"あた":-2194,"あり":719,"ある":3846,"い.":-1185,"い。":-1185,"いい":5308,"いえ":2079,"いく":3029,"いた":2056,"いっ":1883,"いる":5600,"いわ":1527,"うち":1117,"うと":4798,"えと":1454,"か.":2857,"か。":2857,"かけ":-743,"かっ":-4098,"かに":-669,"から":6520,"かり":-2670,"が,":1816,"が、":1816,"がき":-4855,"がけ":-1127,"がっ":-913,"がら":-4977,"がり":-2064,"きた":1645,"けど":1374,"こと":7397,"この":1542,"ころ":-2757,"さい":-714,"さを":976,"し,":1557,"し、":1557,"しい":-3714,"した":3562,"して":1449,"しな":2608,"しま":1200,"す.":-1310,"す。":-1310,"する":6521,"ず,":3426,"ず、":3426,"ずに":841,"そう":428,"た.":8875,"た。":8875,"たい":-594,"たの":812,"たり":-1183,"たる":-853,"だ.":4098,"だ。":4098,"だっ":1004,"った":-4748,"って":300,"てい":6240,"てお":855,"ても":302,"です":1437,"でに":-1482,"では":2295,"とう":-1387,"とし":2266,"との":541,"とも":-3543,"どう":4664,"ない":1796,"なく":-903,"など":2135,"に,":-1021,"に、":-1021,"にし":1771,"にな":1906,"には":2644,"の,":-724,"の、":-724,"の子":-1e3,"は,":1337,"は、":1337,"べき":2181,"まし":1113,"ます":6943,"まっ":-1549,"まで":6154,"まれ":-793,"らし":1479,"られ":6820,"るる":3818,"れ,":854,"れ、":854,"れた":1850,"れて":1375,"れば":-3246,"れる":1091,"われ":-605,"んだ":606,"んで":798,"カ月":990,"会議":860,"入り":1232,"大会":2217,"始め":1681,"市":965,"新聞":-5055,"日,":974,"日、":974,"社会":2024,"カ月":990},this.TC1__={AAA:1093,HHH:1029,HHM:580,HII:998,HOH:-390,HOM:-331,IHI:1169,IOH:-142,IOI:-1015,IOM:467,MMH:187,OOI:-1832},this.TC2__={HHO:2088,HII:-1023,HMM:-1154,IHI:-1965,KKH:703,OII:-2649},this.TC3__={AAA:-294,HHH:346,HHI:-341,HII:-1088,HIK:731,HOH:-1486,IHH:128,IHI:-3041,IHO:-1935,IIH:-825,IIM:-1035,IOI:-542,KHH:-1216,KKA:491,KKH:-1217,KOK:-1009,MHH:-2694,MHM:-457,MHO:123,MMH:-471,NNH:-1689,NNO:662,OHO:-3393},this.TC4__={HHH:-203,HHI:1344,HHK:365,HHM:-122,HHN:182,HHO:669,HIH:804,HII:679,HOH:446,IHH:695,IHO:-2324,IIH:321,III:1497,IIO:656,IOO:54,KAK:4845,KKA:3386,KKK:3065,MHH:-405,MHI:201,MMH:-241,MMM:661,MOM:841},this.TQ1__={BHHH:-227,BHHI:316,BHIH:-132,BIHH:60,BIII:1595,BNHH:-744,BOHH:225,BOOO:-908,OAKK:482,OHHH:281,OHIH:249,OIHI:200,OIIH:-68},this.TQ2__={BIHH:-1401,BIII:-1033,BKAK:-543,BOOO:-5591},this.TQ3__={BHHH:478,BHHM:-1073,BHIH:222,BHII:-504,BIIH:-116,BIII:-105,BMHI:-863,BMHM:-464,BOMH:620,OHHH:346,OHHI:1729,OHII:997,OHMH:481,OIHH:623,OIIH:1344,OKAK:2792,OKHH:587,OKKA:679,OOHH:110,OOII:-685},this.TQ4__={BHHH:-721,BHHM:-3604,BHII:-966,BIIH:-607,BIII:-2181,OAAA:-2763,OAKK:180,OHHH:-294,OHHI:2446,OHHO:480,OHIH:-1573,OIHH:1935,OIHI:-493,OIIH:626,OIII:-4007,OKAK:-8156},this.TW1__={"につい":-4681,"東京都":2026},this.TW2__={"ある程":-2049,"いった":-1256,"ころが":-2434,"しょう":3873,"その後":-4430,"だって":-1049,"ていた":1833,"として":-4657,"ともに":-4517,"もので":1882,"一気に":-792,"初めて":-1512,"同時に":-8097,"大きな":-1255,"対して":-2721,"社会党":-3216},this.TW3__={"いただ":-1734,"してい":1314,"として":-4314,"につい":-5483,"にとっ":-5989,"に当た":-6247,"ので,":-727,"ので、":-727,"のもの":-600,"れから":-3752,"十二月":-2287},this.TW4__={"いう.":8576,"いう。":8576,"からな":-2348,"してい":2958,"たが,":1516,"たが、":1516,"ている":1538,"という":1349,"ました":5543,"ません":1097,"ようと":-4258,"よると":5865},this.UC1__={A:484,K:93,M:645,O:-505},this.UC2__={A:819,H:1059,I:409,M:3987,N:5775,O:646},this.UC3__={A:-1370,I:2311},this.UC4__={A:-2643,H:1809,I:-1032,K:-3450,M:3565,N:3876,O:6646},this.UC5__={H:313,I:-1238,K:-799,M:539,O:-831},this.UC6__={H:-506,I:-253,K:87,M:247,O:-387},this.UP1__={O:-214},this.UP2__={B:69,O:935},this.UP3__={B:189},this.UQ1__={BH:21,BI:-12,BK:-99,BN:142,BO:-56,OH:-95,OI:477,OK:410,OO:-2422},this.UQ2__={BH:216,BI:113,OK:1759},this.UQ3__={BA:-479,BH:42,BI:1913,BK:-7198,BM:3160,BN:6427,BO:14761,OI:-827,ON:-3212},this.UW1__={",":156,"、":156,"「":-463,"あ":-941,"う":-127,"が":-553,"き":121,"こ":505,"で":-201,"と":-547,"ど":-123,"に":-789,"の":-185,"は":-847,"も":-466,"や":-470,"よ":182,"ら":-292,"り":208,"れ":169,"を":-446,"ん":-137,"・":-135,"主":-402,"京":-268,"区":-912,"午":871,"国":-460,"大":561,"委":729,"市":-411,"日":-141,"理":361,"生":-408,"県":-386,"都":-718,"「":-463,"・":-135},this.UW2__={",":-829,"、":-829,"〇":892,"「":-645,"」":3145,"あ":-538,"い":505,"う":134,"お":-502,"か":1454,"が":-856,"く":-412,"こ":1141,"さ":878,"ざ":540,"し":1529,"す":-675,"せ":300,"そ":-1011,"た":188,"だ":1837,"つ":-949,"て":-291,"で":-268,"と":-981,"ど":1273,"な":1063,"に":-1764,"の":130,"は":-409,"ひ":-1273,"べ":1261,"ま":600,"も":-1263,"や":-402,"よ":1639,"り":-579,"る":-694,"れ":571,"を":-2516,"ん":2095,"ア":-587,"カ":306,"キ":568,"ッ":831,"三":-758,"不":-2150,"世":-302,"中":-968,"主":-861,"事":492,"人":-123,"会":978,"保":362,"入":548,"初":-3025,"副":-1566,"北":-3414,"区":-422,"大":-1769,"天":-865,"太":-483,"子":-1519,"学":760,"実":1023,"小":-2009,"市":-813,"年":-1060,"強":1067,"手":-1519,"揺":-1033,"政":1522,"文":-1355,"新":-1682,"日":-1815,"明":-1462,"最":-630,"朝":-1843,"本":-1650,"東":-931,"果":-665,"次":-2378,"民":-180,"気":-1740,"理":752,"発":529,"目":-1584,"相":-242,"県":-1165,"立":-763,"第":810,"米":509,"自":-1353,"行":838,"西":-744,"見":-3874,"調":1010,"議":1198,"込":3041,"開":1758,"間":-1257,"「":-645,"」":3145,"ッ":831,"ア":-587,"カ":306,"キ":568},this.UW3__={",":4889,1:-800,"−":-1723,"、":4889,"々":-2311,"〇":5827,"」":2670,"〓":-3573,"あ":-2696,"い":1006,"う":2342,"え":1983,"お":-4864,"か":-1163,"が":3271,"く":1004,"け":388,"げ":401,"こ":-3552,"ご":-3116,"さ":-1058,"し":-395,"す":584,"せ":3685,"そ":-5228,"た":842,"ち":-521,"っ":-1444,"つ":-1081,"て":6167,"で":2318,"と":1691,"ど":-899,"な":-2788,"に":2745,"の":4056,"は":4555,"ひ":-2171,"ふ":-1798,"へ":1199,"ほ":-5516,"ま":-4384,"み":-120,"め":1205,"も":2323,"や":-788,"よ":-202,"ら":727,"り":649,"る":5905,"れ":2773,"わ":-1207,"を":6620,"ん":-518,"ア":551,"グ":1319,"ス":874,"ッ":-1350,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278,"・":-3794,"一":-1619,"下":-1759,"世":-2087,"両":3815,"中":653,"主":-758,"予":-1193,"二":974,"人":2742,"今":792,"他":1889,"以":-1368,"低":811,"何":4265,"作":-361,"保":-2439,"元":4858,"党":3593,"全":1574,"公":-3030,"六":755,"共":-1880,"円":5807,"再":3095,"分":457,"初":2475,"別":1129,"前":2286,"副":4437,"力":365,"動":-949,"務":-1872,"化":1327,"北":-1038,"区":4646,"千":-2309,"午":-783,"協":-1006,"口":483,"右":1233,"各":3588,"合":-241,"同":3906,"和":-837,"員":4513,"国":642,"型":1389,"場":1219,"外":-241,"妻":2016,"学":-1356,"安":-423,"実":-1008,"家":1078,"小":-513,"少":-3102,"州":1155,"市":3197,"平":-1804,"年":2416,"広":-1030,"府":1605,"度":1452,"建":-2352,"当":-3885,"得":1905,"思":-1291,"性":1822,"戸":-488,"指":-3973,"政":-2013,"教":-1479,"数":3222,"文":-1489,"新":1764,"日":2099,"旧":5792,"昨":-661,"時":-1248,"曜":-951,"最":-937,"月":4125,"期":360,"李":3094,"村":364,"東":-805,"核":5156,"森":2438,"業":484,"氏":2613,"民":-1694,"決":-1073,"法":1868,"海":-495,"無":979,"物":461,"特":-3850,"生":-273,"用":914,"町":1215,"的":7313,"直":-1835,"省":792,"県":6293,"知":-1528,"私":4231,"税":401,"立":-960,"第":1201,"米":7767,"系":3066,"約":3663,"級":1384,"統":-4229,"総":1163,"線":1255,"者":6457,"能":725,"自":-2869,"英":785,"見":1044,"調":-562,"財":-733,"費":1777,"車":1835,"軍":1375,"込":-1504,"通":-1136,"選":-681,"郎":1026,"郡":4404,"部":1200,"金":2163,"長":421,"開":-1432,"間":1302,"関":-1282,"雨":2009,"電":-1045,"非":2066,"駅":1620,"1":-800,"」":2670,"・":-3794,"ッ":-1350,"ア":551,"グ":1319,"ス":874,"ト":521,"ム":1109,"ル":1591,"ロ":2201,"ン":278},this.UW4__={",":3930,".":3508,"―":-4841,"、":3930,"。":3508,"〇":4999,"「":1895,"」":3798,"〓":-5156,"あ":4752,"い":-3435,"う":-640,"え":-2514,"お":2405,"か":530,"が":6006,"き":-4482,"ぎ":-3821,"く":-3788,"け":-4376,"げ":-4734,"こ":2255,"ご":1979,"さ":2864,"し":-843,"じ":-2506,"す":-731,"ず":1251,"せ":181,"そ":4091,"た":5034,"だ":5408,"ち":-3654,"っ":-5882,"つ":-1659,"て":3994,"で":7410,"と":4547,"な":5433,"に":6499,"ぬ":1853,"ね":1413,"の":7396,"は":8578,"ば":1940,"ひ":4249,"び":-4134,"ふ":1345,"へ":6665,"べ":-744,"ほ":1464,"ま":1051,"み":-2082,"む":-882,"め":-5046,"も":4169,"ゃ":-2666,"や":2795,"ょ":-1544,"よ":3351,"ら":-2922,"り":-9726,"る":-14896,"れ":-2613,"ろ":-4570,"わ":-1783,"を":13150,"ん":-2352,"カ":2145,"コ":1789,"セ":1287,"ッ":-724,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637,"・":-4371,"ー":-11870,"一":-2069,"中":2210,"予":782,"事":-190,"井":-1768,"人":1036,"以":544,"会":950,"体":-1286,"作":530,"側":4292,"先":601,"党":-2006,"共":-1212,"内":584,"円":788,"初":1347,"前":1623,"副":3879,"力":-302,"動":-740,"務":-2715,"化":776,"区":4517,"協":1013,"参":1555,"合":-1834,"和":-681,"員":-910,"器":-851,"回":1500,"国":-619,"園":-1200,"地":866,"場":-1410,"塁":-2094,"士":-1413,"多":1067,"大":571,"子":-4802,"学":-1397,"定":-1057,"寺":-809,"小":1910,"屋":-1328,"山":-1500,"島":-2056,"川":-2667,"市":2771,"年":374,"庁":-4556,"後":456,"性":553,"感":916,"所":-1566,"支":856,"改":787,"政":2182,"教":704,"文":522,"方":-856,"日":1798,"時":1829,"最":845,"月":-9066,"木":-485,"来":-442,"校":-360,"業":-1043,"氏":5388,"民":-2716,"気":-910,"沢":-939,"済":-543,"物":-735,"率":672,"球":-1267,"生":-1286,"産":-1101,"田":-2900,"町":1826,"的":2586,"目":922,"省":-3485,"県":2997,"空":-867,"立":-2112,"第":788,"米":2937,"系":786,"約":2171,"経":1146,"統":-1169,"総":940,"線":-994,"署":749,"者":2145,"能":-730,"般":-852,"行":-792,"規":792,"警":-1184,"議":-244,"谷":-1e3,"賞":730,"車":-1481,"軍":1158,"輪":-1433,"込":-3370,"近":929,"道":-1291,"選":2596,"郎":-4866,"都":1192,"野":-1100,"銀":-2213,"長":357,"間":-2344,"院":-2297,"際":-2604,"電":-878,"領":-1659,"題":-792,"館":-1984,"首":1749,"高":2120,"「":1895,"」":3798,"・":-4371,"ッ":-724,"ー":-11870,"カ":2145,"コ":1789,"セ":1287,"ト":-403,"メ":-1635,"ラ":-881,"リ":-541,"ル":-856,"ン":-3637},this.UW5__={",":465,".":-299,1:-514,E2:-32768,"]":-2762,"、":465,"。":-299,"「":363,"あ":1655,"い":331,"う":-503,"え":1199,"お":527,"か":647,"が":-421,"き":1624,"ぎ":1971,"く":312,"げ":-983,"さ":-1537,"し":-1371,"す":-852,"だ":-1186,"ち":1093,"っ":52,"つ":921,"て":-18,"で":-850,"と":-127,"ど":1682,"な":-787,"に":-1224,"の":-635,"は":-578,"べ":1001,"み":502,"め":865,"ゃ":3350,"ょ":854,"り":-208,"る":429,"れ":504,"わ":419,"を":-1264,"ん":327,"イ":241,"ル":451,"ン":-343,"中":-871,"京":722,"会":-1153,"党":-654,"務":3519,"区":-901,"告":848,"員":2104,"大":-1296,"学":-548,"定":1785,"嵐":-1304,"市":-2991,"席":921,"年":1763,"思":872,"所":-814,"挙":1618,"新":-1682,"日":218,"月":-4353,"査":932,"格":1356,"機":-1508,"氏":-1347,"田":240,"町":-3912,"的":-3149,"相":1319,"省":-1052,"県":-4003,"研":-997,"社":-278,"空":-813,"統":1955,"者":-2233,"表":663,"語":-1073,"議":1219,"選":-1018,"郎":-368,"長":786,"間":1191,"題":2368,"館":-689,"1":-514,"E2":-32768,"「":363,"イ":241,"ル":451,"ン":-343},this.UW6__={",":227,".":808,1:-270,E1:306,"、":227,"。":808,"あ":-307,"う":189,"か":241,"が":-73,"く":-121,"こ":-200,"じ":1782,"す":383,"た":-428,"っ":573,"て":-1014,"で":101,"と":-105,"な":-253,"に":-149,"の":-417,"は":-236,"も":-206,"り":187,"る":-135,"を":195,"ル":-673,"ン":-496,"一":-277,"中":201,"件":-800,"会":624,"前":302,"区":1792,"員":-1212,"委":798,"学":-960,"市":887,"広":-695,"後":535,"業":-697,"相":753,"社":-507,"福":974,"空":-822,"者":1811,"連":463,"郎":1082,"1":-270,"E1":306,"ル":-673,"ン":-496},this}t.prototype.ctype_=function(_){for(var t in this.chartype_)if(_.match(this.chartype_[t][0]))return this.chartype_[t][1];return"O"},t.prototype.ts_=function(_){return _||0},t.prototype.segment=function(_){if(null==_||null==_||""==_)return[];var t=[],H=["B3","B2","B1"],s=["O","O","O"],h=_.split("");for(K=0;K<h.length;++K)H.push(h[K]),s.push(this.ctype_(h[K]));H.push("E1"),H.push("E2"),H.push("E3"),s.push("O"),s.push("O"),s.push("O");for(var i=H[3],I="U",O="U",B="U",K=4;K<H.length-3;++K){var M=this.BIAS__,e=H[K-3],U=H[K-2],r=H[K-1],n=H[K],A=H[K+1],p=H[K+2],u=s[K-3],C=s[K-2],W=s[K-1],o=s[K],T=s[K+1],Q=s[K+2];M+=this.ts_(this.UP1__[I]),M+=this.ts_(this.UP2__[O]),M+=this.ts_(this.UP3__[B]),M+=this.ts_(this.BP1__[I+O]),M+=this.ts_(this.BP2__[O+B]),M+=this.ts_(this.UW1__[e]),M+=this.ts_(this.UW2__[U]),M+=this.ts_(this.UW3__[r]),M+=this.ts_(this.UW4__[n]),M+=this.ts_(this.UW5__[A]),M+=this.ts_(this.UW6__[p]),M+=this.ts_(this.BW1__[U+r]),M+=this.ts_(this.BW2__[r+n]),M+=this.ts_(this.BW3__[n+A]),M+=this.ts_(this.TW1__[e+U+r]),M+=this.ts_(this.TW2__[U+r+n]),M+=this.ts_(this.TW3__[r+n+A]),M+=this.ts_(this.TW4__[n+A+p]),M+=this.ts_(this.UC1__[u]),M+=this.ts_(this.UC2__[C]),M+=this.ts_(this.UC3__[W]),M+=this.ts_(this.UC4__[o]),M+=this.ts_(this.UC5__[T]),M+=this.ts_(this.UC6__[Q]),M+=this.ts_(this.BC1__[C+W]),M+=this.ts_(this.BC2__[W+o]),M+=this.ts_(this.BC3__[o+T]),M+=this.ts_(this.TC1__[u+C+W]),M+=this.ts_(this.TC2__[C+W+o]),M+=this.ts_(this.TC3__[W+o+T]),M+=this.ts_(this.TC4__[o+T+Q]),M+=this.ts_(this.UQ1__[I+u]),M+=this.ts_(this.UQ2__[O+C]),M+=this.ts_(this.UQ3__[B+W]),M+=this.ts_(this.BQ1__[O+C+W]),M+=this.ts_(this.BQ2__[O+W+o]),M+=this.ts_(this.BQ3__[B+C+W]),M+=this.ts_(this.BQ4__[B+W+o]),M+=this.ts_(this.TQ1__[O+u+C+W]),M+=this.ts_(this.TQ2__[O+C+W+o]),M+=this.ts_(this.TQ3__[B+u+C+W]);var N="O";0<(M+=this.ts_(this.TQ4__[B+C+W+o]))&&(t.push(i),i="",N="B"),I=O,O=B,B=N,i+=H[K]}return t.push(i),t},_.TinySegmenter=t}});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/lunr/wordcut.js b/lib/AutoConnect-master/docs/assets/javascripts/lunr/wordcut.js
deleted file mode 100644
index 179792ab7540071599ca06538c571372d3788fb6..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/lunr/wordcut.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(n){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=n();else if("function"==typeof define&&define.amd)define([],n);else{var t;((t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).lunr||(t.lunr={})).wordcut=n()}}(function(){return function o(s,a,c){function u(e,n){if(!a[e]){if(!s[e]){var t="function"==typeof require&&require;if(!n&&t)return t(e,!0);if(l)return l(e,!0);var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}var i=a[e]={exports:{}};s[e][0].call(i.exports,function(n){var t=s[e][1][n];return u(t||n)},i,i.exports,o,s,a,c)}return a[e].exports}for(var l="function"==typeof require&&require,n=0;n<c.length;n++)u(c[n]);return u}({1:[function(n,t,e){var r=n("underscore"),i={creators:null,current:null,tag:null,init:function(){this.creators=[],this.current=[],this.tag={}},reset:function(){this.current=[],this.tag={}},transit:function(n){var e=this;e.creators.forEach(function(n){var t=n.createAcceptor(e.tag);t&&e.current.push(t)});var t=[];e.tag={};for(var r=0;r<e.current.length;r++){var i=e.current[r].transit(n);i.isError||(t.push(i),e.tag[i.tag]=i)}e.current=t},getFinalAcceptors:function(){return this.current.filter(function(n){return n.isFinal})}};t.exports=function(){var n=r.clone(i);return n.init(),n}},{underscore:25}],2:[function(t,e,n){(function(o){var s=t("path"),n=(t("glob"),{init:function(n,t,e){t=t||!1,defaultDict=s.normalize(o+"/..")+"/data/tdict-*.txt",this.dict=[];var r=void 0!==n,i=t||!r?[defaultDict]:[];n=n||defaultDict;r&&(Array.isArray(n)?i.concat.apply(i,n):i.push(n)),this.addFiles(i,!1),void 0!==e&&this.addWords(e,!1),this.finalizeDict()},addWords:function(n,t){t=void 0===t||t,this.dict.push.apply(this.dict,n),t&&this.finalizeDict()},finalizeDict:function(){this.dict=this.sortuniq(this.dict)},addFiles:function(n,t){t=void 0===t||t;for(var e=0;e<1;e++)words="ก.ก.\nก.ก.น.\nก.ข.ค.\nก.ค.\nก.จ.\nก.ช.น.\nก.ฌ.\nก.ต.\nก.ต.ง.\nก.ต.ช.\nก.ตร.\nก.ท.\nก.น.ช.\nก.บช.\nก.บถ.\nก.ป.ส.\nก.พ.\nก.ม.\nก.ย.\nก.ร.\nก.ล.ต.\nก.ว.\nก.ศ.ว.\nก.ส.ท.\nก.ส.ธ.\nก.ส.อ.\nก.อ.\nกก.ตชด.\nกก.ตร.น.\nกก.ภ.จว.\nกก.รสช.\nกกบ.ขส.ทบ.\nกกล.รพน.\nกง.กห.\nกง.ทบ.\nกง.ทร.\nกซข.ป.\nกซม.ป.\nกทม.กรุงเทพมหานคร\nกบ.ทบ.\nกป.สป.\nกพ.ทบ.\nกพ.ทร.\nกพ.ทหาร\nกร.ทบ.\nกรป.กลาง\nกรอ.พอ.\nกศ.ด.\nกศ.บ.\nกศ.บป.\nกศ.ม.\nกษ.ด.\nกษ.บ.\nกษ.ม.\nกส.ด.\nกส.ทบ.\nกส.บ.\nกส.ม.\nกอ.ปค.\nกอ.รพน.\nกอ.รมน.\nกอ.รสต.\nข.ต.ว.\nขว.ทบ.\nขว.ทร.\nขว.ทหาร\nขส.ทบ.\nขส.ทร.\nขส.ทอ.\nค.ด.\nค.บ.\nค.พ.ศ.\nค.ม.\nค.ร.น.\nค.ร.ฟ.\nค.ร.ม.\nค.ศ.\nค.อ.ด.\nค.อ.บ.\nค.อ.ม.\nคศ.ด.\nคศ.บ.\nคศ.ม.\nง.ด.\nจ.จ.\nจ.จ.จ.\nจ.ช.\nจ.ต.\nจ.ท.\nจ.ป.ร.\nจ.ม.\nจ.ศ.\nจ.ส.ต.\nจ.ส.ท.\nจ.ส.อ.\nจ.อ.\nจ.อ.ร.\nจ.๑๘\nจก.ธน.\nจก.สน.\nช.ค.\nช.ค.บ.\nช.พ.ค.\nช.ส.\nช.ส.ค.\nฌ.ป.ค.\nฌ.ศ.ร.\nฌ.ส.อ.\nฐท.สห.\nด.ช.\nด.ญ.\nด.ต.\nด.ศ.ค.\nด.ศ.ร.\nดย.ทร.\nต.ก.\nต.ค.\nต.จ.\nต.จ.ว.\nต.ช.\nต.ต.\nต.บ.\nต.ม.\nต.ร.\nต.ศ.ร.\nต.ห.\nต.อ.\nต.อ.จ.\nตร.กม.\nตร.ซม.\nตร.ต.\nตร.ทล.\nตร.น.\nตร.ปม.\nตร.ภ.\nตร.ม.\nตร.รฟ.\nตร.ว.\nตร.ส.\nตร.สข.\nท.จ.\nท.จ.ว.\nท.ช.\nท.ญ.\nท.ด.\nท.ท.ท.\nท.ทบ.\nท.บ.\nท.พ.\nท.ม.\nท.ศ.\nทก.ด.\nทก.บ.\nทก.ม.\nทส.ปช.\nทส.รมว.กห.\nทุ.ส.นิ.ม.\nธ.ก.ส.\nธ.ค.\nธ.ญ\nธ.บ.\nน.ช.\nน.ญ.\nน.ด.\nน.ต.\nน.ท.\nน.น.\nน.บ.\nน.บ.ท.\nน.ป.ท.\nน.พ.\nน.ม.\nน.ร.\nน.ว.\nน.ศ.\nน.ส.\nน.ส.พ.\nน.ส.๓\nน.สพ.\nน.อ.\nนปพ.ภ.\nนศ.ด.\nนศ.บ.\nนศ.ม.\nบ.ก.\nบ.ข.ส.\nบ.ช.\nบ.ด.ท.\nบ.ตร.\nบ.ภ.\nบ.ม.\nบก.จร.\nบก.ตชด.\nบก.ตม.\nบก.ทล.\nบก.น.\nบก.ป.\nบก.ปค.\nบก.ปม.\nบก.ภ.เขต\nบก.รน.\nบก.รฟ.\nบก.ร้อย.ตชด.\nบก.ส.\nบกข.ป.\nบจพ.ป.\nบช.ก.\nบช.ด.\nบช.ตชด.\nบช.น.\nบช.บ.\nบช.ปส.\nบช.ภ.\nบช.ม.\nบชท.ป.\nบชน.ป.\nบชส.ป.\nบธ.ด.\nบธ.บ.\nบธ.ม.\nบนท.ป.\nบนอ.ป.\nบปช.ป.\nป.กท.\nป.กศ.\nป.กศ.สูง\nป.จ.\nป.จ.ว.\nป.ช.\nป.ธ.\nป.ป.\nป.ป.ก.\nป.ป.ช.\nป.ป.ป.\nป.ป.ร.\nป.ป.ส.\nป.พ.\nป.พ.พ.\nป.พย.\nป.ม.\nป.ม.ก.\nป.ม.ช.\nป.ม.ธ.\nป.ม.ศ.\nป.ม.อ.\nป.ร.ร.๔\nป.ร.ร.๕\nป.ร.ร.๖\nป.ล.\nป.ว.พ.\nป.วิ.อ.\nป.ส.ส.\nป.อ.\nป.อ.ร.ส.\nป.๑\nปม.วส.\nปอ.พ.\nผกก.ภ.\nผช.ผอ.\nผต.มท.\nผบ.ตร.\nผบ.ทบ.\nผบ.ทร.\nผบ.ทสส.\nผบ.ทอ.\nผบก.น.\nผบก.ป.\nผบก.ปค.\nผบก.ปม.\nผบก.ภ.\nผบช.ก.\nผบช.ตชด.\nผบช.น.\nผบช.ภ.\nผว.กทม.\nผอ.ปจ.\nพ.ก.ง.\nพ.กศ.\nพ.ข.ต.\nพ.ค.\nพ.ค.ช.\nพ.ค.ว.\nพ.ค.ศ.\nพ.จ.ต.\nพ.จ.ท.\nพ.จ.อ.\nพ.ช.\nพ.ช.ค.\nพ.ด.\nพ.ต.\nพ.ต.ต.\nพ.ต.ท.\nพ.ต.อ.\nพ.ต.อ.พิเศษ\nพ.ท.\nพ.บ.\nพ.ป.\nพ.ภ.ม.\nพ.ม.\nพ.ม.ช.\nพ.ย.\nพ.ร.ก.\nพ.ร.ฎ.\nพ.ร.ต.\nพ.ร.ธ.\nพ.ร.บ.\nพ.ศ.\nพ.ศ.บ.\nพ.ส.ร.\nพ.ส.ล.\nพ.อ.\nพ.อ.ต.\nพ.อ.ท.\nพ.อ.พิเศษ\nพ.อ.อ.\nพณ.ด.\nพณ.บ.\nพณ.ม.\nพธ.ด.\nพธ.บ.\nพธ.ม.\nพบ.ด.\nพบ.บ.\nพบ.ม.\nพย.ด.\nพย.บ.\nพย.ม.\nพล.จ.\nพล.ต.\nพล.ต.จ.\nพล.ต.ต.\nพล.ต.ท.\nพล.ต.อ.\nพล.ท.\nพล.ปตอ.\nพล.ม.\nพล.ม.๒\nพล.ร.จ.\nพล.ร.ต.\nพล.ร.ท.\nพล.ร.อ.\nพล.อ.\nพล.อ.จ.\nพล.อ.ต.\nพล.อ.ท.\nพล.อ.อ.\nพลา.ทร.\nพศ.ด.\nพศ.บ.\nพศ.ม.\nพอ.สว.\nภ.ง.ด.\nภ.ง.ด.๙\nภ.ด.\nภ.บ.\nภ.บ.ท.๕\nภ.ป.ร.\nภ.พ.\nภ.ม.\nภ.สถ.บ.\nม.ค.\nม.จ.\nม.ป.ท.\nม.ป.ป.\nม.ป.พ.\nม.ร.ว.\nม.ศ.\nม.อ.\nม.อ.ปัตตานี\nมิ.ย.\nมี.ค.\nยศ.ทบ.\nยศ.ทร.\nยศ.ทอ.\nร.ง.\nร.ด.\nร.ต.\nร.ต.ต.\nร.ต.ท.\nร.ต.อ.\nร.ท.\nร.น.\nร.บ.\nร.พ.\nร.ฟ.ล.\nร.ย.ล.\nร.ย.ส.ท.\nร.ล.\nร.ศ.\nร.ส.พ.\nร.อ.\nรป.ม.\nรร.จปร.\nรร.จอ.\nรร.ชท.\nรร.ตท.\nรร.นร.\nรร.นรต.\nรร.นอ.\nล.ญ.\nล.ว.\nลส.ชบ.\nว.ค.\nว.ฉ.\nว.ช.\nว.ด.ป.\nว.ป.ถ.\nวท.บ.\nศ.บ.\nศ.ป.ก.\nศ.ศ.ป.\nศฝร.ภ.\nศศ.บ.\nศษ.บ.\nศส.บ.\nส.ก.\nส.ก.ศ.ท.\nส.ค.\nส.ค.1\nส.ค.ร.\nส.ค.ส.\nส.ต.\nส.ต.ต.\nส.ต.ท.\nส.ต.อ.\nส.ท.\nส.ทร.\nส.ป.ช.\nส.ป.ส.ท.\nส.ป.อ.\nส.ร.\nส.ล.น.\nส.ว.\nส.ว.ท.\nส.ว.ส.ท.\nส.ส.\nส.ส.ท.\nส.ส.ร.\nส.ห.\nส.อ.\nสถ.บ.\nสนง.สสอ.\nสพ.ญ.\nสพ.บ.\nสว.จร.\nสว.ธร.\nสว.ส.\nสว.สป.\nสว.สส.\nสว.อก.\nสส.บ.\nสุ.จิ.ปุ.ลิ.\nห.ร.ม.\nอ.ก.ค.\nอ.ก.จ.\nอ.จ.\nอ.ช.พ.\nอ.ตร.\nอ.บ.\nอ.ส.ท.\nอ.ส.ม.ท.\nอ.ส.ย.\nอ.อ.ป.\nอส.รด.\nอุ.อา.ก.ส.\nฮ.จ.\nฮ.ท.\nฮ.ฝ.\nฮ.ล.\nฮ.ศ.\nเม.ย.\n\nกรีนิช\nกลันตัน\nกัลกัตตา\nกัวลาลัมเปอร์\nกัศมีร์\nกาฐมาณฑุ\nโกลกาตา\nควิเบก\nคอนเนตทิคัต\nคาบูล\nคุชราต\nคุนหมิง\nเคนตักกี\nเคนทักกี\nเคมบริดจ์\nแคชเมียร์\nแคนซัส\nแคนเบอร์รา\nแคโรไลนา\nแคลิฟอร์เนีย\nโคเปนเฮเกน\nโคลัมโบ\nโคโลราโด\nไครสต์เชิร์ช\nไคโร\nจาการ์ตา\nจำปาศักดิ์\nเจนไน\nเจนีวา\nเจ้อเจียง\nฉงชิ่ง\nเฉิงตู\nชานตง\nชิคาโก\nเชนไน\nเชอร์โนบิล\nซัปโปโร\nซานมารีโน\nซาบาห์\nซาราเยโว\nซาราวัก\nซิดนีย์\nซีอาน\nซีแอตเทิล\nซูริก\nซูริค\nเซเชลส์\nเซนได\nเซี่ยงไฮ้\nโซเฟีย\nโซล\nโซโลมอน\nไซ่ง่อน\nไซบีเรีย\nดัลลัส\nดาโคตา\nดานัง\nดีทรอยต์\nดูไบ\nเดนเวอร์\nเดลาแวร์\nเดียนเบียนฟู\nโดเวอร์\nโดฮา\nไดฟุกุ\nไดฟูกุ\nตรังกานู\nตริโปลี\nตูวาลู\nเตหะราน\nโตเกียว\nโตรอนโต\nทมิฬนาฑู\nทริโปลี\nทิเบต\nเทกซัส\nเท็กซัส\nเทนเนสซี\nเทลอาวีฟ\nแทสเมเนีย\nโทรอนโต\nไทเป\nธากา\nนางาซากิ\nนาริตะ\nนิวเจอร์ซีย์\nนิวเดลี\nนิวยอร์ก\nนิวยอร์ค\nนิวแฮมป์เชียร์\nเนบราสกา\nเนแบรสกา\nเนวาดา\nบรัสเซลส์\nบราซิเลีย\nบอมเบย์\nบอสตัน\nบังกาลอร์\nบังคาลอร์\nบูคาเรสต์\nบูดาเปสต์\nเบงกาซี\nเบนกาซี\nเบรุต\nเบลเกรด\nเบอร์ลิน\nแบกแดด\nปอยเปต\nปะลิส\nปะหัง\nปักกิ่ง\nปัญจาบ\nปัฏนา\nปารีส\nปีนัง\nเประ\nเปียงยาง\nพนมเปญ\nพระตะบอง\nพะโค\nพะสิม\nพาราณสี\nพิหารี\nเพนซิลวาเนีย\nเพนซิลเวเนีย\nฟรานซ์\nฟลอริดา\nฟิลาเดลเฟีย\nฟุกุชิมะ\nฟุกุชิมา\nฟุกุโอกะ\nฟูกูโอกะ\nแฟรงก์เฟิร์ต\nมอสโก\nมะนิลา\nมะละแหม่ง\nมัณฑะเลย์\nมัทราส\nมาดริด\nมิชิแกน\nมินนิโซตา\nมิยางิ\nมิลาน\nมิวนิก\nมิสซูรี\nมุมไบ\nเมน\nเมลเบิร์น\nเมาะตะมะ\nเมาะลำเลิง\nแมนจูเรีย\nแมนเชสเตอร์\nแมนฮัตตัน\nแมริแลนด์\nแมรีแลนด์\nแมสซาชูเซตส์\nยะไข่\nย่างกุ้ง\nยูทาห์\nยูนนาน\nเยรูซาเล็ม\nโยโกฮามา\nริยาด\nรีโอเดจาเนโร\nโรดไอแลนด์\nลอนดอน\nลอสแองเจลิส\nลาปาซ\nลาสเวกัส\nลิสบอน\nลุยเซียนา\nโลซาน\nโลซานน์\nวอชิงตัน\nวอร์ซอ\nวิสคอนซิน\nเวนิส\nเวลส์\nเวอร์จิเนีย\nเวอร์มอนต์\nเวียงจันทน์\nเวียนนา\nแวนคูเวอร์\nไวโอมิง\nสกอตแลนด์\nสก็อตแลนด์\nสตอกโฮล์ม\nสลังงอร์\nเสฉวน\nเสียมราฐ\nเสียมเรียบ\nหงสา\nหงสาวดี\nหนานไห่\nหลวงพระบาง\nหูเป่ย\nหูเป่ย์\nหูหนาน\nเหอเป่ย\nเหอเป่ย์\nเหอหนาน\nอชันตา\nอลาสกา\nอวันตี\nออริกอน\nออสโล\nอะแลสกา\nอัตตะปือ\nอัมมาน\nอัมสเตอร์ดัม\nอัสสัม\nอาบูดาบี\nอาร์คันซอ\nอินเดียนา\nอิบารากิ\nอิลลินอยส์\nอิสตันบูล\nอิสลามาบัด\nอุรุมชี\nอูลานบาตอร์\nเอดินบะระ\nเอเธนส์\nแอตแลนตา\nแอริโซนา\nแอลเจียร์\nโอคลาโฮมา\nโอค็อตสค์\nโอกินาวา\nโอซากา\nโอริสสา\nโอเรกอน\nโอไฮโอ\nไอดาโฮ\nไอโอวา\nฮอนโนลูลู\nฮานอย\nฮาเนดะ\nฮาราเร\nฮาวาย\nฮิโรชิมา\nฮุสตัน\nเฮลซิงกิ\n\nมกรา\nกุมภา\nมีนา\nเมษา\nพฤษภา\nมิถุนา\nกรกฎา\nสิงหา\nกันยา\nตุลา\nพฤศจิกา\nธันวา\nเอ\nบี\nซี\nดี\nอี\nเอฟ\nจี\nเอช\nไอ\nเจ\nเค\nแอล\nเอ็ม\nเอ็น\nโอ\nพี\nคิว\nอาร์\nเอส\nที\nยู\nวี\nดับเบิล\nดับบลิว\nเอ็กซ์\nเอ๊กซ์\nวาย\nแซด\nแอลฟา\nแอลฟ่า\nเบตา\nเบต้า\nแกมมา\nแกมม่า\nเดลตา\nเดลต้า\nโอเมกา\nโอเมก้า\nเมกะ\nกิกะ\nนาโน\nไมโคร\n\nกรรมาชน\nกรอบรูป\nกระดี๊กระด๊า\nกระบับ\nกราวนด์\nกรีน\nกรุ๊ป\nกฤษณ์\nกลาส\nก๊วน\nกษัตริยา\nกษัตริยาธิราช\nก่อนหน้า\nกะบับ\nกับดัก\nกัมมันตะ\nก๊าก\nก๋ากั่น\nกาญจน์\nกาญจนาภิเษก\nกามิกาเซ่\nการันตี\nกาหลิบ\nกิฟท์\nกิมจิ\nกีวี\nกึ๊ก\nกึ๋ย\nกุนซือ\nกุมภาพันธ์\nกู๋\nเกจิ\nเกมส์\nเกย์\nเกรด\nเกรย์\nเกสต์เฮาส์\nเก๊ะ\nเก๋ากี้\nเกิร์ล\nแกงค์\nแกรนด์\nแกสโซฮอล์\nแก๊สโซฮอล์\nโกเต็กซ์\nโกลด์\nโกะ\nโก๊ะ\nไกด์\nขั้นตอน\nเขวี้ยง\nคณาญาติ\nครัวซอง\nครัวซองต์\nคร่ำครวญ\nครีเอทีฟ\nครูเสด\nคลับ\nคลาสสิก\nคลิตอริส\nคลิป\nความหมาย\nควิก\nควีน\nคองเกรส\nคอนซูเมอร์\nคอนเซปต์\nคอนเซ็ปต์\nคอนโด\nคอนโดมิเนียม\nคอนเทนเนอร์\nคอนแทค\nคอนแท็ค\nคอนโทรล\nคอนเฟิร์ม\nคอปเตอร์\nคอมพ์\nคอมเพล็กซ์\nคอมมอนส์\nคอมเมนท์\nคอมเมนต์\nคอร์ป\nคอร์ปอเรชั่น\nคอร์รัปชัน\nคอร์รัปชั่น\nคอรัปชัน\nคอรัปชั่น\nคอร์ส\nคอลเล็กชั่น\nคอลัมน์\nคอลัมนิสต์\nคัตเอาต์\nคันคาก\nคันถธุระ\nคันธาระ\nคันยิ\nคัสตาร์ด\nคาราโอเกะ\nคีตกวี\nคีตปฏิภาณ\nคีตราชัน\nคาปูชิโน\nคามิคาเซ่\nคาเฟ่\nคาร์\nคาร์โก้\nคาราเมล\nคาแรกเตอร์\nคาแร็กเตอร์\nคาแรคเตอร์\nคาแร็คเตอร์\nคาวบอย\nคาสิโน\nคิกขุ\nคิวบิก\nคูลเลอร์\nเคบับ\nเครป\nเคลม\nเคลียร์\nเคลื่อนย้าย\nเคส\nเคอร์ฟิว\nแคชเชียร์\nแคทวอล์ค\nแคนดิเดต\nแคนตาลูป\nแคนยอน\nแคนู\nแคป\nแคมป์\nแคมปัส\nแคมเปญ\nแคร์\nแครกเกอร์\nแคร็กเกอร์\nแครอท\nแคสต์\nแคสติง\nแคสติ้ง\nโค้ก\nโค้ช\nโคโยตี\nโคโยตี้\nโครนา\nโคอะล่า\nโคอาลา\nโคอาล่า\nไคลแมกซ์\nไคลแม็กซ์\nงั้น\nง่าว\nงี้\nเง็ง\nโง่เขลา\nไง\nจตุคาม\nจ๊อกกี้\nจอหงวน\nจังโก้\nจัมโบ้\nจ๊าบ\nจารกรรม\nจารชน\nจิ๊ก\nจิ๊กโก๋\nจิ๊กซอว์\nจิตพิสัย\nจิตเภท\nจีดีพี\nจึ๊ก\nจุ๊ย\nจูน\nจูเนียร์\nเจ๊\nเจได\nเจ็ต\nเจล\nเจ๊าะแจ๊ะ\nเจี๊ยว\nแจ็กเก็ต\nแจ๊กเก็ต\nแจ็กพอต\nแจ็กพ็อต\nแจ๊กพอต\nแจ๊กพ็อต\nแจม\nแจ๊ส\nโจ๋\nฉลุย\nเฉิ่ม\nชนะเลิศ\nช็อค\nช็อต\nช็อป\nช็อปปิ้ง\nช็อปเปอร์\nชะโนด\nชัตเตอร์\nชัวร์\nชาร์จ\nชาร์ต\nชาร์ป\nชินบัญชร\nชิฟฟอน\nชีส\nชีอะห์\nเช็ก\nเช็งเม้ง\nเชฟ\nเชลียร์\nเชอร์รี่\nแชเชือน\nแช่แข็ง\nแชมป์\nแชมปิยอง\nแชมเปญ\nแชมเปี้ยน\nแชมพู\nโชว์รูม\nโชห่วย\nใช้งาน\nไชน่า\nซ้อ\nซอมบี้\nซะ\nซังเต\nซันตาคลอส\nซัพพลาย\nซัพพลายเออร์\nซัมเมอร์\nซากุระ\nซาดิสต์\nซาดิสม์\nซาตาน\nซานตาคลอส\nซาฟารี\nซาบะ\nซามูไร\nซาร์\nซาร์ดีน\nซาเล้ง\nซิง\nซิ่ง\nซิงเกิล\nซิตี\nซิตี้\nซินโดรม\nซิม\nซิ้ม\nซิมโฟนี\nซิมโฟนี่\nซิลเวอร์\nซี้\nซี้ซั้ว\nซีดาน\nซีน\nซีนีเพล็กซ์\nซีเนียร์\nซีร็อกซ์\nซีรีส์\nซีเรียส\nซีอีโอ\nซื่อบื้อ\nซุนหนี่\nซุปเปอร์\nซูชิ\nซูเปอร์\nซูม\nซูโม่\nซูเอี๋ย\nซูฮก\nเซ็กซ์\nเซ็กซี่\nเซ็กส์\nเซนเซอร์\nเซ็นเซอร์\nเซนเตอร์\nเซ็นเตอร์\nเซ็นทรัล\nเซนส์\nเซ่นไหว้\nเซฟตี้\nเซรามิก\nเซลส์\nเซลส์แมน\nเซอร์\nเซอร์ไพรส์\nเซอร์วิส\nเซาท์\nเซี้ยว\nแซ็ก\nแซกโซโฟน\nแซ็กโซโฟน\nแซนด์วิช\nแซมบ้า\nแซลมอน\nแซว\nโซเชียล\nโซน\nโซนี่\nโซลาร์\nโซโล\nโซโล่\nญาณทัสสนะ\nดยุก\nดยุค\nดร็อป\nดรัมเมเยอร์\nดรามา\nดราม่า\nดอกเตอร์\nด็อกเตอร์\nดัมพ์\nดั๊มพ์\nดาวน์\nดิกชันนารี\nดิสเครดิต\nดีกรี\nดีเจ\nดีไซน์\nดีไซน์เนอร์\nดีไซเนอร์\nดีเบต\nดีพาร์ตเมนต์\nดีพาร์ตเมนท์\nดีพาร์ทเมนต์\nดีพาร์ทเมนท์\nดีมานด์\nดีล\nดีลเลอร์\nดีเลย์\nเดชานุภาพ\nเดบิต\nเดโม\nเดย์\nเด้อ\nเดอะ\nเด๊ะ\nเดี้ยง\nเดี๊ยะ\nแดนซ์\nแดนเซอร์\nแดรี่\nโดนัท\nโดมิโน\nโดรายากิ\nไดเอ็ต\nตถตา\nตนเอง\nตรวจทาน\nตรวจสอบ\nตอกย้ำ\nต๊อง\nต่อยอด\nต่อรอง\nตะหงิด\nตังค์\nตันเถียน\nตัวตน\nตัวเอง\nตาปรือ\nต้าอ่วย\nติงต๊อง\nติ๋ม\nติ่มซำ\nติว\nติวเตอร์\nตี๋\nตื้บ\nตุ๊ก\nตุ๊กตุ๊ก\nตุ๊ด\nตุ๋ย\nตู้เซฟ\nเต๊ะ\nเตี๊ยม\nแตงกวา\nแตงโม\nแต๋ว\nโต๋เต๋\nโต๊ะจีน\nไตรมาส\nถ่ายทำ\nถูกต้อง\nทงคัตสึ\nทริป\nทรู\nทอม\nท็อป\nทอร์นาโด\nทอล์ค\nทักซิโด\nทันตกรรม\nทันตแพทยศาสตร์\nทับซ้อน\nทัวร์\nทัวร์นาเมนต์\nทัวร์นาเมนท์\nทัวริสต์\nทาเลนต์\nทาวน์\nทาวน์เฮาส์\nทำงาน\nทิป\nทิพยสมบัติ\nทิวลิป\nทีรามิสุ\nทีวี\nทูน่า\nเท็กซ์\nเทค\nเทคโน\nเทคโนแครต\nเทควันโด\nเทป\nเทรด\nเทรนด์\nเทรนเนอร์\nเทรลเลอร์\nเทรลเล่อร์\nเทเลกราฟ\nเทวบัญชา\nเทวบุตร\nเทวา\nเทวาธิราช\nเทโวโรหนะ\nเทอร์โบ\nเที่ยงคืน\nเที่ยงวัน\nเทียมทาน\nแทกติค\nแทคติค\nแทงกั๊ก\nแทงโก้\nโทมาฮอก\nโทมาฮอว์ก\nโทมาฮอว์ค\nโทร\nโทรโข่ง\nไทม์\nไทยแลนด์\nไทเฮา\nธรรมา\nธรรมาภิบาล\nธัมโม\nธีม\nธุรกรรม\nธุหร่ำ\nเธค\nนพมาศ\nนรีแพทย์\nน็อก\nน็อค\nน้องใหม่\nนอมินี\nนอร์ท\nน่ะ\nนางแบบ\nนาฏยศาลา\nนายแบบ\nนายพราน\nนินจา\nนิรันดร์\nนิว\nนิวส์\nนู้ด\nเนอะ\nเนิร์สเซอรี\nเนิร์สเซอรี่\nเนี้ยบ\nโนติส\nไนท์\nไนน์\nบรรพชน\nบร็อกโคลี\nบร็อคโคลี\nบรา\nบริกร\nบริวเวอรี่ส์\nบลอนด์\nบลูเบอร์รี\nบลูเบอร์รี่\nบ๊วย\nบอกซ์\nบ็อกซ์\nบ๊อกซ์\nบอดี้\nบอนด์\nบ๊อบ\nบอมบ์\nบ๋อย\nบอยคอต\nบอยคอตต์\nบอร์ด\nบังเกอร์\nบัตเตอร์\nบัลลาสต์\nบัส\nบาบูน\nบาร์บีคิว\nบาร์บี้\nบาลานซ์\nบิ๊ก\nบิล\nบึม\nบึ้ม\nบุญคุณ\nบุ๋น\nบุปผา\nบู๊\nบูชิโด\nบูติก\nบูติค\nบูม\nเบเกอรี่\nเบญจมบพิตร\nเบตาดีน\nเบนโตะ\nเบนโล\nเบบี้\nเบลอ\nเบอร์เกอร์\nเบอร์รี\nเบิร์ด\nเบิร์น\nแบ็กโฮ\nแบคโฮ\nแบด\nแบต\nแบนเนอร์\nแบรนด์\nแบล็ก\nแบล็ค\nไบโอ\nโบกี้\nโบตั๋น\nโบ้ย\nโบรกเกอร์\nโบรชัวร์\nโบว์\nโบว์ลิ่ง\nไบเบิล\nปฏิสัมพันธ์\nป๊อก\nปอดแหก\nป๊อป\nป๋อหลอ\nปักขคณนา\nปัจเจกชน\nปัจฉิมนิเทศ\nป๊า\nป๋า\nป่าไม้\nปาร์ตี้\nปาสกาล\nปาสคาล\nปาสเตอร์\nปิกอัพ\nปิ๊ง\nปิโตรเคมี\nปิยมิตร\nปึ้ก\nปูอัด\nเปโซ\nเป็นไง\nเปปเปอร์มินต์\nเปเปอร์\nเปราะบาง\nเป๊ะ\nเป่ายิงฉุบ\nเป่ายิ้งฉุบ\nเปียโน\nแป้ก\nแป๋ว\nแป๊ะเจี๊ยะ\nโปร\nโปรเจกต์\nโปรเจ็กต์\nโปรเจกเตอร์\nโปรเจ็กเตอร์\nโปรเจคท์\nโปรเจ็คท์\nโปรดักชั่น\nโปรดิวเซอร์\nโปรโมชั่น\nโปรโมต\nโปรโมเตอร์\nโปรโมท\nโปลิศ\nโปสเตอร์\nผลไม้\nผลักดัน\nผ้าห่ม\nผิดพลาด\nผู้นำ\nแผดเผา\nเฝอ\nพงษ์\nพริตตี้\nพรีเซนต์\nพรีเซ็นเตอร์\nพรีเมียม\nพรีเมียร์\nพฤหัส\nพล็อต\nพลาซ่า\nพลานุภาพ\nพ่อค้า\nพอเพียง\nพะเรอ\nพันธกิจ\nพันธุวิศวกรรม\nพาร์\nพาร์ตเนอร์\nพาร์ทเนอร์\nพาวเวอร์\nพาสเจอร์ไรส์\nพาสตา\nพาสต้า\nพาสปอร์ต\nพาเหรด\nพิซซ่า\nพีเรียด\nพุดดิ้ง\nพุทธภูมิ\nพุทธศตวรรษ\nพุทโธ\nพูล\nเพทนาการ\nเพนกวิน\nเพนตากอน\nเพรส\nเพรียวบาง\nเพลซ\nเพลท\nเพลย์บอย\nเพียบแปร้\nเพียว\nเพาเวอร์\nแพกเกจ\nแพ็ค\nแพตเทิร์น\nแพทเทิร์น\nแพทยสภา\nแพนงเชิญ\nแพนดา\nแพนด้า\nแพลน\nโพลล์\nโพลารอยด์\nโพสต์\nไพลิน\nฟยอร์ด\nฟรังก์\nฟรุต\nฟลอร์\nฟลุก\nฟลุค\nฟลุต\nฟลุท\nฟอยล์\nฟอร์ม\nฟันด์\nฟาวล์\nฟาสต์ฟู้ด\nฟินิกซ์\nฟิวเจอร์\nฟีด\nฟีเวอร์\nฟุตบาท\nเฟรช\nเฟรชชี่\nเฟรม\nเฟมินิสต์\nเฟส\nเฟอร์นิเจอร์\nเฟอร์รี่\nเฟิร์ม\nเฟี้ยวฟ้าว\nแฟกซ์\nแฟ็กซ์\nแฟนซี\nแฟนตาซี\nแฟ้บ\nแฟร์\nแฟรนไชส์\nแฟรี\nแฟรี่\nแฟลช\nแฟล็ต\nโฟน\nโฟม\nโฟล์ค\nไฟต์\nไฟแนนซ์\nไฟลต์\nไฟลท์\nภควัทคีตา\nภควัมบดี\nภควัมปติ\nภคันทลาพาธ\nภววิสัย\nภารตะ\nภูมิทัศน์\nม้ง\nมวลชน\nมยุราภิรมย์\nมลภาวะ\nมหภาค\nมหาอุปราชา\nมอคคา\nมอคค่า\nมอนสเตอร์\nม็อบ\nมอบตัว\nมอยส์เจอไรเซอร์\nมอลล์\nมะกัน\nมั้ง\nมัฟฟิน\nมั้ย\nม้านั่ง\nมาเฟีย\nมาม่า\nมายองเนส\nมายาคติ\nมาร์ก\nมาร์เก็ต\nมาร์เก็ตติ้ง\nมาร์ค\nมาร์จิน\nมาร์ช\nมาร์ต\nมาร์ท\nมาราธอน\nม้าหินอ่อน\nมินต์\nมินท์\nมินิ\nมิลค์\nมิวสิค\nมิสซัง\nมิสไซล์\nมิสเตอร์\nมือถือ\nมุมมอง\nเมคอัพ\nเมจิก\nเมจิค\nเมทัล\nเมเปิล\nเมาท์\nเมี่ยงคำ\nแมกกาซีน\nแม็กกาซีน\nแมคเคอเรล\nแม่ค้า\nแมชชีน\nแมชีน\nแมนชั่น\nแมมบ้า\nแมมโบ้\nโมจิ\nโมเดล\nโมเดิร์น\nโมเต็ล\nโมโนเรล\nโมหจริต\nไมค์\nไมเกรน\nยนตรกรรม\nยอมรับ\nยะเยือก\nยังไง\nยากูซ่า\nยาวี\nยิม\nยิว\nยุวทูต\nยูโทเปีย\nยูโร\nยูวี\nเยน\nเยลลี่\nเย้ว\nเยอบีรา\nเยอบีร่า\nเยอร์บีรา\nเยอร์บีร่า\nแยมโรล\nโยเกิร์ต\nโยโย่\nรวมมิตร\nร็อค\nร็อคเก็ต\nรองรับ\nรอมฎอน\nรอยัลตี้\nระโงก\nรันเวย์\nรัม\nรากหญ้า\nราชบัณฑิตยสถาน\nราชานุญาต\nราชานุสาวรีย์\nรามเทพ\nรามาธิบดี\nรามายณะ\nราเม็ง\nราเมน\nรายชื่อ\nราสเบอร์รี\nริกเตอร์\nริคเตอร์\nรีไซเคิล\nรีดไถ\nรีทัช\nรีเทิร์น\nรีไทร์\nรีแบรนด์\nรีพอร์ท\nรีโมต\nรีโมท\nรีวิว\nรีสอร์ต\nรีสอร์ท\nรีเสิร์ช\nรุมบ้า\nรุสโซ\nรูบิก\nรูบิค\nเรซิน\nเรซิ่น\nเรดิโอ\nเรต\nเรตติ้ง\nแรงใจ\nแรงดูด\nแรงผลัก\nแรลลี\nแรลลี่\nโรดแมป\nโรเนียว\nโรแมนติก\nโรแมนติค\nโรล\nโรลออน\nไรเฟิล\nล็อกเกอร์\nลอจิสติกส์\nล็อต\nล็อบบี้\nลอร์ด\nล้มเหลว\nละติน\nละอ่อน\nลาซานญ่า\nลาติน\nลาเต้\nลานีญา\nลามะ\nลิมิต\nลิมูซีน\nลิสต์\nลีก\nลีด\nลีดเดอร์\nลีเมอร์\nลีลาวดี\nลุค\nลูกชาย\nลูกสาว\nเลกเชอร์\nเลคเชอร์\nเลดี้\nเลสเบี้ยน\nเลิฟ\nแลนด์\nแล็บ\nโลโก้\nโลชั่น\nไลท์\nไลน์\nไลฟ์\nวนาราม\nวราราม\nวโรกาส\nว้อดก้า\nวอเตอร์\nวอฟเฟิล\nว้อย\nวอร์ม\nวอร์มอัพ\nวอร์รูม\nวอล์ก\nวอล์ค\nวอลซ์\nวอลนัต\nวอลนัท\nวอลล์\nว่ะ\nวันเวย์\nวัสสา\nวาซาบิ\nวาทกรรม\nวาทะ\nวานิลลา\nวานิลา\nวาฟเฟิล\nวาริชศาสตร์\nว้าว\nวัคค์\nวัจนะ\nวาไรตี้\nวิก\nวิดีโอ\nวิทย์\nวิน\nวิป\nวิปปิ้ง\nวิภัชภาค\nวิว\nวิลล์\nวิลเลจ\nวีเจ\nวีซ่า\nวีดิทัศน์\nวีน\nวีไอพี\nวืด\nเวณิกา\nเวเฟอร์\nเวสต์\nเวอร์\nเวิร์ก\nเวิร์กช็อป\nเวิร์ค\nเวิร์ลด์\nเวิลด์\nแวมไพร์\nไวกิ้ง\nไวเบรเตอร์\nไวอะกร้า\nไวอากร้า\nศากยบุตร\nศิรินทร์\nศิลปวัฒนธรรม\nศิลปากร\nศิวิไลซ์\nศึกษาศาสตร์\nสกรัม\nสกาย\nสกู๊ป\nสเกตช์\nสเก็ตช์\nสคริปต์\nสแควร์\nสงบสุข\nสจ๊วต\nสตรอเบอร์รี\nสตรอเบอรี\nสตรอว์เบอร์รี\nสตริง\nสต็อก\nสต๊อก\nสต็อค\nสต๊อค\nสตอรี\nสตาร์\nสตาร์ท\nสติกเกอร์\nสติ๊กเกอร์\nสตีล\nสตูดิโอ\nสเตชัน\nสเตชั่น\nสเตเดียม\nสเตนเลส\nสเต็ป\nสเตย์\nสเตริโอ\nสเตอริโอ\nสแตนดาร์ด\nสแตนเลส\nสโตน\nสโตร์\nสไตรค์\nสไตล์\nสถาปัตย์\nสไนเปอร์\nสปอต\nสป็อต\nสปอนเซอร์\nสปอร์ต\nสปา\nสปาย\nสปิริต\nสเปก\nสเปค\nสไปเดอร์\nสมณพราหมณ์\nสมาพันธ์\nสมิติเวช\nสโรชา\nสลัม\nสแล็ก\nสโลแกน\nสโลว์\nสไลด์\nสวีท\nสหรัฐ\nสหัชญาณ\nสหัสวรรษ\nสะกอม\nสะเด่า\nสะบึม\nสะบึมส์\nสะออน\nสังโฆ\nสะโหลสะเหล\nสันทนาการ\nสัมนา\nสามช่า\nสามแยก\nสารขัณฑ์\nสี่แยก\nสึนามิ\nสุนทรีย์\nสุริยยาตร\nสุริยยาตร์\nสุหนี่\nเสกสรรค์\nเสพติด\nเสือโคร่ง\nหงวน\nหน่อมแน้ม\nหมวย\nหมั่นโถว\nหม่านโถว\nหมายปอง\nหมิง\nหยวน\nหลวงตา\nหลวงปู่\nหลวงพี่\nหล่อฮังก้วย\nหลินจือ\nห่วย\nเห็นด้วย\nเหมย\nเห่ย\nเหี่ยวย่น\nแหม็บ\nแหวว\nโหงว\nโหงวเฮ้ง\nโหลน\nโหลยโท่ย\nไหง\nไหร่\nอพาร์ตเมนต์\nอพาร์ตเมนท์\nอพาร์ทเมนต์\nอพาร์ทเมนท์\nอมาตยาธิปไตย\nอยุติธรรม\nอริยสงฆ์\nอ่วม\nอวอร์ด\nออกแบบ\nออดิชั่น\nออดิทอเรียม\nออเดอร์\nออโต้\nออทิสติก\nอ่อนด้อย\nออฟ\nออยล์\nออร์แกน\nออร์แกนิก\nออร์แกนิค\nออร์เดอร์\nออรัล\nออสซี่\nอะ\nอัตลักษณ์\nอัตวิสัย\nอันเดอร์\nอันตรกิริยา\nอัลตรา\nอัลไซเมอร์\nอัลบัม\nอัลบั้ม\nอัลมอนด์\nอาข่า\nอาโนเนะ\nอาฟเตอร์\nอาร์ติสต์\nอาร์พีจี\nอาว์\nอาสวะ\nอิกัวนา\nอินดอร์\nอินดัสตรีส์\nอินเตอร์\nอิ่มแปร้\nอิมพีเรียล\nอิเล็กทริก\nอิเล็กทริค\nอิเลียด\nอิสรชน\nอิเหนา\nอิออน\nอีแต๋น\nอีโรติก\nอีเวนท์\nอีสต์\nอีสเตอร์\nอึ๊บ\nอึ้ม\nอึ๋ม\nอึมครึม\nอุด้ง\nอุตสาหการ\nอุเทน\nอุปการคุณ\nอุปทาน\nอุปนายก\nอุปนายิกา\nอุปสงค์\nอุปัทวเหตุ\nอุรังคธาตุ\nอูคูเลเล่\nอู้ฟู่\nเอ๋\nเอ็กซ์โป\nเอ็กซ์เพรส\nเอ็กโซเซต์\nเอ็กโซเซ่ต์\nเอเซีย\nเอ็นจีโอ\nเอ็นเตอร์เทน\nเอนทรานซ์\nเอ็นทรานซ์\nเอฟเฟ็กต์\nเอเยนต์\nเอลนีโญ\nเอสเปรสโซ\nเอสเพรสโซ\nเอ๋อ\nเอาต์\nเอาท์\nเอาท์ดอร์\nเอ๊าะ\nแอ็กชั่น\nแอ็คชั่น\nแอคทีฟ\nแอดมิชชั่น\nแอดมิสชัน\nแอนด์\nแอ๊บแบ๊ว\nแอปเปิล\nแอปเปิ้ล\nแอปพริคอท\nแอพพริคอท\nแอพริคอต\nแอร์\nแอโรบิก\nแอโรบิค\nแอลมอนด์\nแอสเตอร์\nโอเค\nโอเปอเรเตอร์\nโอเปร่า\nโอเพ่น\nโอ้ย\nโอยัวะ\nโอรสาธิราช\nโอเลี้ยง\nโอวัลติน\nโอเวอร์\nไอซ์\nไอซียู\nไอดอล\nไอเดีย\nไอติม\nฮวงจุ้ย\nฮ่องเต้\nฮองเฮา\nฮอต\nฮ็อต\nฮอตดอก\nฮ็อตด็อก\nฮันนีมูน\nฮัม\nฮัลโลวีน\nฮัลโหล\nฮากกา\nฮาร์ด\nฮาราคีรี\nฮาลาล\nฮาโลวีน\nฮิ\nฮิต\nฮิบรู\nฮิปโป\nฮิปฮอป\nฮีโร่\nฮูลาฮูป\nฮูล่าฮูป\nเฮฟวี\nเฮฟวี่\nเฮอร์ริเคน\nเฮีย\nแฮนด์\nแฮปปี้\nแฮมเบอร์เกอร์\nโฮป\nโฮม\nโฮลดิงส์\nโฮลวีต\nโฮสเตส\nไฮกุ\nไฮแจ็ค\nไฮโซ\nไฮเทค\nไฮบริด\nไฮเปอร์\nไฮไลต์\nไฮไลท์\nไฮเวย์\nไฮสคูล\nไฮเอนด์\n\nกรีซ\nกัมพูชา\nกัวเตมาลา\nกาตาร์\nกานา\nกาบอง\nกายอานา\nกินี\nเกรนาดีนส์\nเกรเนดา\nเกาหลี\nแกมเบีย\nโกตดิวัวร์\nคองโก\nคอโมโรส\nคอสตาริกา\nคาซัคสถาน\nคิตส์\nคิริบาตี\nคิริบาส\nคิวบา\nคีร์กีซสถาน\nคูเวต\nเคนยา\nเคปเวิร์ด\nเคย์แมน\nแคนาดา\nแคเมอรูน\nโครเอเชีย\nโคลอมเบีย\nจอร์เจีย\nจอร์แดน\nจาเมกา\nจิบูตี\nจีน\nชาด\nชิลี\nเช็ก\nซามัว\nซาอุ\nซิมบับเว\nซีเรีย\nซูดาน\nซูรินาเม\nเซนต์\nเซเนกัล\nเซอร์เบีย\nเซาตูเม\nเซียร์รา\nแซมเบีย\nโซมาเลีย\nโซเวียต\nไซปรัส\nญี่ปุ่น\nดารุสซาลาม\nเดนมาร์ก\nโดมินิกัน\nโดมินิกา\nตรินิแดด\nตองกา\nติมอร์\nตุรกี\nตูนิเซีย\nเติร์กเมนิสถาน\nโตโก\nโตเบโก\nไต้หวัน\nทาจิกิสถาน\nแทนซาเนีย\nนอร์เวย์\nนามิเบีย\nนาอูรู\nนิการากัว\nนิวซีแลนด์\nเนเธอร์แลนด์\nเนปาล\nเนวิส\nไนจีเรีย\nไนเจอร์\nบราซิล\nบริติช\nบริเตน\nบรูไน\nบอตสวานา\nบอสเนีย\nบังกลาเทศ\nบังคลาเทศ\nบัลแกเรีย\nบาร์บูดา\nบาร์เบโดส\nบาห์เรน\nบาฮามาส\nบิสเซา\nบุรุนดี\nบูร์กินาฟาโซ\nเบนิน\nเบลเยียม\nเบลารุส\nเบลีซ\nเบอร์มิวดา\nโบลิเวีย\nปรินซิปี\nปากีสถาน\nปานามา\nปาปัวนิวกินี\nปารากวัย\nปาเลสไตน์\nปาเลา\nเปรู\nเปอร์เซีย\nเปอร์โตริโก\nโปรตุเกส\nโปแลนด์\nฝรั่งเศส\nพม่า\nฟิจิ\nฟินแลนด์\nฟิลิปปินส์\nเฟรนช์\nภูฏาน\nภูฐาน\nมองโกเลีย\nมอนเตเนโกร\nมอนแทนา\nมอริเชียส\nมอริเตเนีย\nมอลโดวา\nมอลตา\nมัลดีฟส์\nมาเก๊า\nมาซิโดเนีย\nมาดากัสการ์\nมาร์แชลล์\nมาลาวี\nมาลี\nมาเลเซีย\nเม็กซิโก\nเมียนมาร์\nโมซัมบิก\nโมนาโก\nโมนาโค\nโมร็อกโก\nไมโครนีเซีย\nยูกันดา\nยูโกสลาเวีย\nยูเครน\nเยเมน\nเยอรมนี\nรวันดา\nรัสเซีย\nโรมาเนีย\nลักเซมเบิร์ก\nลัตเวีย\nลาว\nลิกเตนสไตน์\nลิทัวเนีย\nลิเบีย\nลีโอน\nลูเซีย\nเลโซโท\nเลบานอน\nเลสเต\nไลบีเรีย\nวาติกัน\nวานูอาตู\nวินเซนต์\nเวเนซุเอลา\nเวียดนาม\nศรีลังกา\nสเปน\nสโลวะเกีย\nสโลวัก\nสโลวีเนีย\nสวาซิแลนด์\nสวิตเซอร์แลนด์\nสวีเดน\nสหรัฐ\nสหราชอาณาจักร\nสิกขิม\nสิงคโปร์\nอเมริกา\nออสเตรเลีย\nออสเตรีย\nอันดอร์รา\nอัฟกานิสถาน\nอาเซอร์ไบจาน\nอาร์เจนตินา\nอาร์เมเนีย\nอาระเบีย\nอิเควทอเรียล\nอิตาลี\nอินเดีย\nอินโดนีเซีย\nอิรัก\nอิสราเอล\nอิหร่าน\nอียิปต์\nอุซเบกิสถาน\nอุรุกวัย\nเอกวาดอร์\nเอธิโอเปีย\nเอมิเรตส์\nเอริเทรีย\nเอลซัลวาดอร์\nเอสโตเนีย\nแองโกลา\nแอนติกา\nแอลจีเรีย\nแอลเบเนีย\nโอมาน\nไอซ์แลนด์\nไอร์แลนด์\nฮ่องกง\nฮอนดูรัส\nฮังการี\nเฮติ\nเฮอร์เซโกวีนา\n\nกระบี่\nกรุงเทพ\nกาญจนบุรี\nกาฬสินธุ์\nกำแพงเพชร\nขอนแก่น\nจันทบุรี\nฉะเชิงเทรา\nชลบุรี\nชัยนาท\nชัยภูมิ\nชุมพร\nเชียงราย\nเชียงใหม่\nตรัง\nตราด\nตาก\nนครนายก\nนครปฐม\nนครพนม\nนครราชสีมา\nนครศรีธรรมราช\nนครสวรรค์\nนนทบุรี\nนราธิวาส\nน่าน\nบึงกาฬ\nบุรีรัมย์\nปทุมธานี\nประจวบคีรีขันธ์\nปราจีนบุรี\nปัตตานี\nพะเยา\nพังงา\nพัทลุง\nพิจิตร\nพิษณุโลก\nเพชรบุรี\nเพชรบูรณ์\nแพร่\nภูเก็ต\nมหาสารคาม\nมุกดาหาร\nแม่ฮ่องสอน\nยโสธร\nยะลา\nร้อยเอ็ด\nระนอง\nระยอง\nราชบุรี\nลพบุรี\nลำปาง\nลำพูน\nเลย\nศรีสะเกษ\nสกลนคร\nสงขลา\nสตูล\nสมุทรปราการ\nสมุทรสงคราม\nสมุทรสาคร\nสระแก้ว\nสระบุรี\nสิงห์บุรี\nสุโขทัย\nสุพรรณบุรี\nสุราษฎร์\nสุราษฎร์ธานี\nสุรินทร์\nหนองคาย\nหนองบัวลำภู\nอยุธยา\nอ่างทอง\nอำนาจเจริญ\nอุดรธานี\nอุตรดิตถ์\nอุทัยธานี\nอุบลราชธานี\nกันทรลักษ์\nจตุจักร\nไชยา\nซีคอน\nดอนเมือง\nถลาง\nไทรโยค\nธนบุรี\nธัญบุรี\nบางกอก\nบางปะกง\nบางระจัน\nปะทิว\nปาย\nพญาไท\nพัฒน์พงษ์\nพัทยา\nพารากอน\nภูมิซรอล\nรัตนาธิเบศร์\nรังสิต\nลันตา\nลาดพร้าว\nวโรรส\nวิภาวดี\nสตึก\nสมุย\nสัตหีบ\nสิมิลัน\nสุขุมวิท\nสุไหง\nเสลภูมิ\nอังรีดูนังต์\nอ่างขาง\nอินทนนท์\nเอ็มโพเรียม\n\nคิวชู\nแคริบเบียน\nแคสเปียน\nดานูบ\nตะนาวศรี\nนอร์วีเจียน\nนิโคบาร์\nเนรัญชรา\nไนล์\nบอร์เนียว\nบอลติก\nเบงกอล\nปิง\nแปซิฟิก\nมะละกา\nมินดาเนา\nมิสซิสซิปปี\nเมดิเตอร์เรเนียน\nเมโสโปเตเมีย\nยมุนา\nยุโรป\nยูเรเชีย\nยูเรเซีย\nแยงซี\nแยงซีเกียง\nสแกนดิเนเวีย\nสะโตง\nสาละวิน\nสุมาตรา\nสุเอซ\nอะเมซอน\nอันดามัน\nอัลไต\nอาร์กติก\nอาหรับ\nอินโดจีน\nอิรวดี\nอิระวดี\nอีเจียน\nอุษาคเณย์\nอูราล\nเอเชีย\nเอเดรียติก\nเอเวอเรสต์\nแอตแลนติก\nแอนตาร์กติก\nแอนตาร์กติกา\nแอฟริกา\nโอลิมปัส\nไอโอเนียน\nฮวงโห\nฮอกไกโด\nฮอนชู\n\nกบิลพัสดุ์\nกุสินารา\nโกลิยะ\nโกสัมพี\nโคตรบอง\nโคตรบูรณ์\nตองอู\nทรอย\nทวารวดี\nทวาราวดี\nเทวทหะ\nไทรบุรี\nนาลันทา\nไบแซนไทน์\nปรัสเซีย\nปัลลวะ\nปาฏลีบุตร\nพุทธคยา\nมถุรา\nมายัน\nมิถิลา\nราชคฤห์\nล้านช้าง\nล้านนา\nลุมพินี\nวัชชี\nเวสาลี\nสารนาถ\nสาวัตถี\nหริภุญชัย\nอโยธยา\nออตโตมัน\nอังวะ\nอินทปัตถ์\nอุชเชนี\n\nกราฟิก\nกราฟิกส์\nกราฟิค\nกริด\nกิกะไบต์\nกูเกิล\nกูเกิ้ล\nเกตเวย์\nโกลบอล\nคลัสเตอร์\nคลาส\nคลิก\nคลิปอาร์ต\nคอนโซล\nคอนเทนต์\nคอมพิวติ้ง\nคอมไพล์\nคอมไพเลอร์\nคอมมูนิเคชั่น\nคอร์\nคีย์\nคีย์บอร์ด\nเครือข่าย\nเคอร์เซอร์\nเคอร์เนล\nแคช\nแคมฟรอก\nแคมฟร็อก\nแคร็ก\nโค้ด\nจาวา\nจีพีเอส\nชิป\nชิพ\nเชลล์\nแช็ต\nแชนเนล\nแชนแนล\nซ็อกเก็ต\nซอฟต์แวร์\nซอฟท์แวร์\nซอร์ส\nซัพพอร์ต\nซัพพอร์ท\nซีดี\nซีดีรอม\nซีเนอร์\nเซิร์ฟเวอร์\nโซลูชัน\nโซลูชั่น\nไซต์\nไซเบอร์\nทรานแซกชัน\nทรานแซกชั่น\nทรานแซ็กชัน\nทรานแซ็กชั่น\nทรานแซคชัน\nทรานแซคชั่น\nทรานแซ็คชัน\nทรานแซ็คชั่น\nทวิตเตอร์\nทวีต\nทัชแพด\nเทมเพลต\nเทอร์มินัล\nแท็ก\nแท็บ\nแทบเล็ต\nโทรจัน\nเน็ต\nเน็ตบุ๊ก\nเน็ตบุค\nเน็ตบุ๊ค\nเน็ตเวิร์ก\nเน็ตเวิร์ค\nโน้ตบุ๊ก\nโน้ตบุค\nโน้ตบุ๊ค\nดอส\nดาวน์เกรด\nดาวน์โหลด\nดิจิตอล\nดิจิทัล\nดีบั๊ก\nดีวีดี\nดีไวซ์\nเดเบียน\nเดลไฟ\nเดสก์ท็อป\nโดเมน\nไดรว์\nไดรเวอร์\nไดเรกทอรี\nไดโอด\nเทเลคอม\nบล็อกเกอร์\nบรอดแบนด์\nบราวเซอร์\nบลูทูท\nบลูทูธ\nบลูเรย์\nบั๊ก\nบัฟเฟอร์\nบิต\nบิท\nบูต\nเบราว์เซอร์\nแบนด์วิดท์\nไบต์\nไบนารี\nโปรแกรมเมอร์\nโปรเซส\nโปรเซสเซอร์\nโปรโตคอล\nพร็อกซี\nพอร์ต\nพอร์ท\nพาเนล\nพาร์ทิชัน\nพารามิเตอร์\nพาสเวิร์ด\nพิกเซล\nเพจ\nเพจเจอร์\nแพกเก็ต\nแพตช์\nแพลตฟอร์ม\nโพรเซส\nโพรเซสเซอร์\nโพรโทคอล\nไพธอน\nฟล็อปส์\nฟอนต์\nฟอร์แมต\nฟอร์เวิร์ด\nฟอรัม\nฟีเจอร์\nเฟซบุ๊ก\nเฟิร์มแวร์\nแฟล็ก\nโฟลเดอร์\nไฟร์ฟอกซ์\nไฟร์วอลล์\nไฟล์\nมอดูล\nมอนิเตอร์\nมัลติ\nมัลติทัช\nมัลติเพล็กซ์\nมัลแวร์\nมาสเตอร์\nมีเดีย\nเมนู\nเมมโมรี\nเมล\nเมาส์\nแมค\nโมดูล\nโมเด็ม\nโมบาย\nโมบายล์\nโมไบล์\nไมโครซอฟท์\nยูนิกซ์\nยูนิโคด\nยูนิโค้ด\nริงโทน\nรีเฟรช\nรีเลย์\nเราเตอร์\nเรียลไทม์\nลิงก์\nลินุกซ์\nลีนุกซ์\nลูป\nเลเยอร์\nแล็ปท็อป\nไลเซนส์\nไลบรารี\nวิกิ\nวิกิพีเดีย\nวินโดวส์\nวินโดว์ส\nเว็บ\nเวอร์ชวล\nเวอร์ชัน\nเวอร์ชั่น\nเวิร์กสเตชัน\nเวิร์กสเตชั่น\nเวิร์คสเตชัน\nเวิร์คสเตชั่น\nเวิร์ด\nเวิร์ม\nไวแมกซ์\nสกรีน\nสแกน\nสแกนเนอร์\nสแต็ก\nสนิฟเฟอร์\nสปายแวร์\nสเปซ\nสแปม\nสมาร์ท\nสล็อต\nเสิร์ช\nโหลด\nออนไลน์\nออปติก\nออปติคอล\nออปติคัล\nออฟไลน์\nออราเคิล\nอัพเกรด\nอัพเดต\nอัพโหลด\nอัปเกรด\nอัปเดต\nอัปโหลด\nอัลกอริทึม\nอาร์กิวเมนต์\nอินเตอร์เน็ต\nอินทิเกรเตอร์\nอินเทอร์เน็ต\nอินเทอร์เฟซ\nอินเทล\nอินพุต\nอินพุท\nอีเมล\nอีเมล์\nอูบุนตู\nอูบันตู\nเอนจิน\nเอ็นจิน\nเอาต์พุต\nเอาต์พุท\nเอาท์พุต\nเอาท์พุท\nแอนะล็อก\nแอนิเมชัน\nแอนิเมชั่น\nแอปพลิเคชัน\nแอปพลิเคชั่น\nแอพพลิเคชัน\nแอพพลิเคชั่น\nแอสเซมบลี\nแอสเซมเบลอร์\nโอเพน\nไอคอน\nไอซี\nไอพอด\nไอพ็อด\nไอแพด\nไอโฟน\nฮับ\nฮาร์ดดิสก์\nฮาร์ดแวร์\nแฮกเกอร์\nแฮ็กเกอร์\nแฮนด์เฮลด์\nโฮสต์\n\nกรีก\nกัณณาฑ\nกัศมีรี\nคันจิ\nคาตาคานะ\nคุชราตี\nคุรุมุขี\nซีริลลิก\nซูลู\nเซลติก\nเซิร์บ\nตากาล็อก\nเตลุคู\nเติร์ก\nทราวิฑ\nเบงกาลี\nปัญจาบี\nพินอิน\nมลยาฬัม\nมองโกล\nมาราฐี\nมาเลย์\nเม็กซิกัน\nแมนจู\nแมนดาริน\nไมถิลี\nเยอรมัน\nรัสเซียน\nสวาฮิลี\nสวิส\nสินธี\nอูรดู\nอัสสมี\nอารบิก\nอิตาเลียน\nอุยกูร์\nแอฟริกัน\nโอริยา\nไอริช\nฮันกึล\nฮินดี\nฮิรางานะ\nฮีบรู\n\nกรีนพีซ\nกรือเซะ\nกวนอิม\nกวนอู\nกัดดาฟี\nกัลยาณวัตร\nกัสสปะ\nกาลิเลโอ\nกินเนส\nกุมภกรรณ\nกูเตนเบิร์ก\nเกตส์\nเกษมณี\nโกณฑัญญะ\nขงเบ้ง\nคริสโตเฟอร์\nคองคอร์ด\nคอลเกต\nคานธี\nคาเบรียล\nคาร์ฟูร์\nคาร์สัน\nคาราบาว\nคาสิโอ\nคิริน\nคุนลุ้น\nคูโบต้า\nเครมลิน\nแคทรีนา\nโคตมะ\nโคตมี\nโคลัมบัส\nไคฟง\nไครสเลอร์\nง้อไบ๊\nจตุพร\nจ็อบส์\nจอห์น\nจิ้น\nจิม\nจิ๋ม\nจิว\nจุฬาภรณ์\nจุฬาลงกรณ์\nเจมส์\nแจ็กสัน\nโจเซฟ\nโจว\nชมัยมรุเชฐ\nชมัยมรุเชษฐ์\nชเวดากอง\nชาร์ลส์\nชินราช\nชินวัตร\nชุนชิว\nเช็ง\nเชตวัน\nเชฟรอน\nเชฟโรเลต\nเชลซี\nไชยานุชิต\nซ่ง\nซังฮี้\nซัดดัม\nซันซิล\nซัมซุง\nซัวเจ๋ง\nซินหัว\nซีซาร์\nซีแพค\nซูซาน\nซูซูกิ\nซูบารุ\nเซ็นทารา\nเซเวน\nเซเว่น\nโซฟิเทล\nโซยุซ\nโซยูซ\nณัฐวุฒิ\nดาร์ลี่\nดาวโจนส์\nดิสนีย์\nดีแทค\nดูปองท์\nเดโมแครต\nเดลล์\nเดลินิวส์\nเดวิด\nแดวู\nโดนัลด์\nโดราเอมอน\nโดเรมอน\nต๋อง\nตั๊กม้อ\nตากสิน\nตาเมือน\nตาลีบัน\nตูน\nเตมีย์\nโต๋\nโตชิบา\nโตโยต้า\nถังซัมจั๋ง\nถังซำจั๋ง\nทรพา\nทราเวล\nทรูมูฟ\nทีปังกร\nเทปโก\nเทพรัตน\nเทวทัต\nเทสโก้\nโทมัส\nไททานิก\nไททานิค\nไทยรัฐ\nธีออส\nนครินทรา\nนโปเลียน\nนพดล\nนราดูร\nนเรนทร\nนอสตราดามุส\nนาซา\nนาซ่า\nนาซี\nนาโต\nนาโต้\nนาลแก\nนิคอน\nนิโคลัส\nนิด้า\nนินเทนโด\nนิปปอน\nนิวตัน\nนิสสัน\nเนคเทค\nเนชั่น\nเนชันแนล\nเนชั่นแนล\nเนวิน\nเนสเล่\nเนสาด\nแนท\nแนสแดค\nโนเกีย\nโนเบล\nโนเวลล์\nโนโวเทล\nไนเม็กซ์\nบรอดเวย์\nบรัดเลย์\nบรู๊ซ\nบัลเมอร์\nบารัก\nบารัค\nบู๊ตึ๊ง\nเบญกาย\nเบนซ์\nเบ็นซ์\nเบนจามิน\nโบตัน\nไบโอเทค\nประชาธิปัตย์\nปวีณา\nปอเต็กตึ๊ง\nปอเต๊กตึ๊ง\nป่อเต็กตึ๊ง\nปัตตะโชติ\nปารุสก์\nปีเตอร์\nปูติน\nเป๊ปซี่\nเป้ย\nเปอร์โยต์\nเปาบุ้นจิ้น\nโปเกมอน\nโป๊ยก่าย\nพรหมทัต\nพลาโต\nพอลล่า\nพานาโซนิค\nพานาโซนิก\nพิทยานุกูล\nพิมพิสาร\nเพนแทกซ์\nเพลโต\nไพโอเนียร์\nฟรอยด์\nฟรังซิส\nฟรานซิส\nฟลอเรนซ์\nฟอร์ด\nฟิลิปส์\nฟูจิ\nแฟซ่า\nโฟร์โมสต์\nภูมิพล\nภูริทัต\nมงฟอร์ต\nมณโฑ\nมติชน\nมหิตลาธิเบศร\nมโหสถ\nมัจฉานุ\nมาร์กาเร็ต\nมาร์ติน\nมาสด้า\nมิตซูบิชิ\nมิราเคิล\nมุสโสลินี\nเม้ง\nเมจิ\nเมอร์ซีเดส\nเมอร์เซเดส\nแมกซ์เวลล์\nแมกไซไซ\nแมคอินทอช\nแมชีนเนอรี่\nโมคคัลลานะ\nโมโตโรลา\nโมโตโรล่า\nโมเนีย\nไมเคิล\nไมยราพณ์\nยโสธรา\nยะโฮวา\nยะโฮวาห์\nยามาฮ่า\nยาเวห์\nยาฮู\nยูนิเซฟ\nยูเนสโก\nยูไล\nเยโฮวาห์\nรอยเตอร์\nรอยัล\nรัชดา\nรัสปูติน\nราฟาเอล\nรามาวตาร\nราเมศวร\nราหุล\nริชาร์ด\nรีพับลิกัน\nรูนีย์\nเรนโบว์\nแรมโบ้\nโรตารี\nโรนัลโด\nโรนัลโด้\nโรบินสัน\nโรเบิร์ต\nล็อกซเล่ย์\nลิงคอล์น\nลิจฉวี\nลิไท\nลิไทย\nลินคอล์น\nลิเวอร์พูล\nเลโนโว\nเลียดก๊ก\nโลตัส\nวชิราลงกรณ์\nวลาดิเมียร์\nวอลล์สตรีท\nวาเลนไทน์\nวิกตอเรีย\nวิทยานุสรณ์\nวิทยายน\nวิมเบิลดัน\nวิลเลียม\nวีระ\nวุฒิชัย\nเวียดกง\nไวตามิลค์\nศกุนตลา\nศรีวิชัย\nศิริพงษ์\nศิริราช\nศุภชลาศัย\nสดกก๊อกธม\nสดายุ\nสตาลิน\nสตีฟ\nสแตนฟอร์ด\nสวรินทิรา\nสังกัจจายน์\nสาทิตย์\nสารีบุตร\nสิริกิติ์\nสิรินธร\nสิหิงค์\nสีวลี\nสีหนุ\nสีหมุนี\nสีหโมนี\nสุครีพ\nสุทโธทนะ\nสุเทพ\nสุนทราภรณ์\nสุนีย์\nสุรนารี\nสุรยุทธ์\nสุริยาสน์\nเส้าหลิน\nโสกราตีส\nโสภิต\nหนุมาน\nหลินฮุ่ย\nหลุยส์\nเห้งเจีย\nไหหม่า\nองคต\nองคุลิมาล\nอชาตศัตรู\nอดุลยเดช\nอพอลโล\nอริสโตเติล\nอริสมันต์\nอลิซาเบธ\nอ๋อม\nออร์คิด\nออสการ์\nอะพอลโล\nอับราฮัม\nอั้ม\nอัลกออิดะห์\nอัลคาเทล\nอัลจาซีราห์\nอัลเฟรด\nอัลเลาะห์\nอัสซุส\nอัสสชิ\nอัสสัมชัญ\nอาเซม\nอาเซ็ม\nอาเซียน\nอาฟต้า\nอาร์เซนอล\nอินทรชิต\nอินทราทิตย์\nอีซูซุ\nอีเลฟเวน\nอีเลฟเว่น\nอุณรุท\nอุบลรัตน์\nอุบาลี\nอุ๋ย\nเอกทัศน์\nเอเซอร์\nเอ็ดเวิร์ด\nเอดิสัน\nเอแบค\nเอลิซาเบธ\nเอสพลานาด\nเอสพลานาร์ด\nแอคคอร์\nแอคคอร์ด\nแองเจลิน่า\nแอตแลนติส\nแอน\nแอ๋ม\nแอมบาสซาเดอร์\nแอมบาสเดอร์\nแอมเวย์\nแอ๋ว\nโอดีสซีย์\nโอเดียน\nโอบามา\nโอรสาราม\nโอลิมเปีย\nโออิชิ\nไอน์สไตน์\nฮอนด้า\nฮอปกินส์\nฮอลลีวูด\nฮอลลีวู้ด\nฮานามิ\nฮามาส\nฮิตเลอร์\nฮิตาชิ\nฮุนเซน\nฮุนเซ็น\nฮุนได\nฮุสเซ็น\nเฮนรี\nเฮนรี่\nเฮเลน\nโฮจิมินห์\nโฮปเวลล์\nโฮเมอร์\n\nกลีเซอรีน\nกำทอน\nแกนีมีด\nครอส\nคริสตัล\nคลอโรพลาสต์\nคลอไรด์\nควอนตัม\nคอนดักเตอร์\nคอปเปอร์\nคอลลาเจน\nคอเลสเตอรอล\nคอสมิก\nคูลอมบ์\nเคอราติน\nแคโรทีน\nแคสสินี\nโครมาโทกราฟี\nไคโตซาน\nจีโนม\nจุลชีววิทยา\nชิคุนกุนยา\nซัลฟิวริก\nซัลเฟต\nซัลไฟด์\nซิงค์\nซิริอุส\nซิลิกา\nซิลิเกต\nซิลิโคน\nซีเทน\nซีเวิร์ต\nเซ็กเตอร์\nเซ็กเมนต์\nเซมิ\nโซนาร์\nไซบอร์ก\nดอปเปลอร์\nดอปเพลอร์\nไดนามิก\nไดนามิกส์\nไดนามิค\nไดนามิคส์\nไดออกไซด์\nทรานส์\nทามิฟลู\nเทฟลอน\nเทสโทสเตอโรน\nเทอร์โม\nแทนนิน\nไททัน\nไทฟอยด์\nไทรอยด์\nธาลัสซีเมีย\nเนกาตีฟ\nโนวา\nบอแรกซ์\nโบทอกซ์\nโบท็อกซ์\nไบโอติน\nปฏิยานุพันธ์\nโปรเจสเตอโรน\nพอลิเมอร์\nพันธุศาสตร์\nพัลซาร์\nพาร์กินสัน\nพาราเซตามอล\nพาราโบลา\nเพอร์ออกไซด์\nโพรเจสเทอโรน\nโพลาไรซ์\nโพลิเมอร์\nโพลีเอทิลีน\nไพรเมต\nฟลาโวนอยด์\nฟลูออเรสเซนซ์\nฟลูออไรด์\nฟอสซิล\nฟิชชัน\nฟิวชัน\nฟีโรโมน\nไฟเบอร์\nมอนอกไซด์\nมิราจ\nเมตริกซ์\nเมทริกซ์\nเมลานิน\nเมลามีน\nโมเมนตัม\nไมโตคอนเดรีย\nไมโทคอนเดรีย\nยีสต์\nยูริก\nยูเรีย\nรูมาตอยด์\nวีก้า\nเวกเตอร์\nเวก้า\nเวสิเคิล\nโวลต์\nสเกล\nสเกลาร์\nสเต็ม\nสเตียรอยด์\nสปีชีส์\nสเปิร์ม\nสัมพัทธภาพ\nสุริยจักรวาล\nออกเทน\nออโรรา\nออโรร่า\nอะคริลิก\nอะครีลิก\nอะซีติก\nอะซีโตน\nอะมิโน\nอะลูมินา\nอันโดรเมดา\nอัลคาไลน์\nอัลตราซาวด์\nอัลตราซาวนด์\nอัลลอยด์\nอินทิกรัล\nอินทิเกรต\nอีโบลา\nอีโบล่า\nเอ็กซ์โพเนนเชียล\nเอทานอล\nเอทิลีน\nเอนโทรปี\nเอสเตอร์\nเอสโตรเจน\nเอสโทรเจน\nแอนดรอยด์\nแอนแทร็กซ์\nแอมพลิจูด\nแอมโมเนียม\nแอลกอฮอลิซึม\nแอสพาร์แตม\nโอเซลทามิเวียร์\nฮับเบิล\nฮิวมัส\nไฮดรอกไซด์\nไฮดรอลิก\nไฮโดรลิก\nไฮเพอร์โบลา\n\nกงเต็ก\nกฎุมพี\nกฏ\nกฏหมาย\nกบฎ\nกราไฟต์\nก๊อปปี้\nกะทะ\nกังวาล\nกุฎฐัง\nกุฏุมพี\nฃวด\nคฑา\nคลินิค\nคลีนิก\nคลีนิค\nคาทอลิค\nคึ่นฉ่าย\nแคตตาล็อก\nโควต้า\nฅน\nจุมพฎ\nช็อคโกแลต\nแซ่ด\nดัทช์\nทนง\nทรมาณ\nทราก\nทะแยง\nทิฏฐิ\nบล็อค\nบ๊องแบ๊ว\nบัลเล่ต์\nเบรค\nแบงค์\nปรากฎ\nปัคคหะ\nปาฏิโมกข์\nปิติ\nปิรามิด\nโปรเตสแตนท์\nพนิช\nพยักเพยิด\nพริ้ว\nพลูโตเนียม\nพากษ์\nเฟิร์น\nยากี้\nเยภุยยสิกา\nรุสเซีย\nฤาษี\nล็อค\nล็อคเกอร์\nวันทยาหัตถ์\nวานิช\nวิญญาน\nวิศิษฐ์\nศรีษะ\nสเปกโทรสโคป\nสฤษฎ์\nสลิ่ม\nสัตตสดก\nสาราณียากร\nสุกี้\nสุกี้ยากี้\nสูญญากาศ\nหยอมแหยม\nหยอย\nหล่ะ\nอะดรีนาลีน\nอะหลั่ย\nอัตคัต\nอัฟริกา\nอานิสงค์\nอาฟริกา\nอิริยาบท\nอิเลคโทรนิคส์\nอีรุงตุงนัง\nอุตรายัน\nอุลตรา\nอุลตร้า\nโอกาศ\n\nกกหู\nกงการ\nกงจักร\nกฎเกณฑ์\nกฎบัตร\nกฎหมาย\nกฎหมู่\nกดขี่\nกดดัน\nก้นกบ\nก้นบึ้ง\nก้นปล่อง\nกนิษฐภคินี\nกนิษฐภาดา\nกรงเล็บ\nกรมการ\nกรมท่า\nกรมธรรม์\nกรมนา\nกรมวัง\nกรรมกร\nกรรมการ\nกรรมฐาน\nกรรมบถ\nกรรมพันธุ์\nกรรมวิธี\nกรรมสิทธิ์\nกระจกเงา\nกระจกตา\nกระจกนูน\nกระจกเว้า\nกระจอกชวา\nกระจอกเทศ\nกระจ้อยร่อย\nกระจับบก\nกระจับปิ้ง\nกระจับปี่\nกระโชกโฮกฮาก\nกระดานดำ\nกระดานหก\nกระดาษแก้ว\nกระดาษไข\nกระดาษทราย\nกระดาษสา\nกระดูกงู\nกระทาชาย\nกระเท่เร่\nกระบวนการ\nกระบองเพชร\nกระผีกริ้น\nกระยาทิพย์\nกระยาสารท\nกระยาหาร\nกระสอบทราย\nกระสุนปืน\nกระแสจิต\nกระแสน้ำ\nกระแสลม\nกรับคู่\nกรับพวง\nกรับเสภา\nกราดเกรี้ยว\nกราวรูด\nกริ่งเกรง\nกรีฑาสถาน\nกรีดกราย\nกรี๊ดกร๊าด\nกลไก\nกลบท\nกลเม็ด\nกลยุทธ์\nกลวิธี\nกลศาสตร์\nกลอักษร\nกลบเกลื่อน\nกลมกล่อม\nกลมกลืน\nกลมเกลียว\nกล้วยแขก\nกล้วยไม้\nกล่องเสียง\nกล่อมเกลา\nกล่อมเกลี้ยง\nกลัดกลุ้ม\nกลัดมัน\nกลั่นกรอง\nกลั่นแกล้ง\nกลับกลอก\nกลางคน\nกลางคัน\nกลางค่ำ\nกลางคืน\nกลางแจ้ง\nกลางแปลง\nกลางวัน\nกลาดเกลื่อน\nกล่าวขวัญ\nกล่าวโทษ\nกล่าวหา\nกล้ำกราย\nกล้ำกลืน\nกลิ้งกลอก\nกลิ้งเกลือก\nกลิ่นอาย\nกลียุค\nกวดขัน\nกวัดแกว่ง\nกวัดไกว\nกวีนิพนธ์\nก่อกวน\nก่อการ\nก่อตั้ง\nก่อสร้าง\nก่อหวอด\nก้อร่อก้อติก\nกองกลาง\nกองเกิน\nกองโจร\nกองทัพ\nกองทุน\nกองพล\nกองพัน\nกองฟอน\nกองร้อย\nกองหนุน\nกอบโกย\nกะเกณฑ์\nกะบังลม\nกักกัน\nกักขัง\nกักตัว\nกักตุน\nกัณฑ์เทศน์\nกัดฟัน\nกันชน\nกันท่า\nกันสาด\nกันเอง\nกับแกล้ม\nกับข้าว\nกับระเบิด\nกากเพชร\nกากหมู\nกาชาด\nกาญจนาภิเษก\nก้านคอ\nกาฝาก\nก้ามกราม\nกามกิจ\nกามคุณ\nกามเทพ\nกามโรค\nก้ามปู\nกายกรรม\nกายบริหาร\nกายภาพ\nกายวิภาค\nกายสิทธิ์\nก่ายกอง\nการคลัง\nการเงิน\nการบ้าน\nการเปรียญ\nการเมือง\nการเรือน\nการละเล่น\nกาลกิริยา\nกาลเทศะ\nก้าวก่าย\nก้าวร้าว\nก้าวหน้า\nกาสาวพัสตร์\nกาฬพฤกษ์\nกาฬโรค\nกำปั้น\nกำมือ\nกำแพงขาว\nกำลังใจ\nกำลังม้า\nกี่งอำเภอ\nกิจกรรม\nกิจการ\nกิจวัตร\nกิจจะลักษณะ\nกิตติคุณ\nกิตติศัพท์\nกินขาด\nกินใจ\nกินดอง\nกินโต๊ะ\nกินแบ่ง\nกินเปล่า\nกินเลี้ยง\nกินเส้น\nกินแหนง\nกิโลกรัม\nกิโลเมตร\nกิโลลิตร\nกิโลเฮิรตซ์\nกีดกัน\nกีดกั้น\nกีดขวาง\nกึกก้อง\nกึกกัก\nกึกกือ\nกึ่งกลาง\nกุกกัก\nกุ๊กกิ๊ก\nกุ้งฝอย\nกุ้งมังกร\nกุ้งแห้ง\nกุ้งเต้น\nกุ้งยิง\nกุญแจผี\nกุญแจมือ\nกุญแจเลื่อน\nกุญแจเสียง\nกุลธิดา\nกุลบุตร\nกุลสตรี\nกู้ยืม\nเก้งก้าง\nเก็บกวาด\nเก็บเกี่ยว\nเก็บงำ\nเก็บตก\nเกรงกลัว\nเกรงใจ\nเกรงขาม\nเกรียงไกร\nเกรียมกรม\nเกรี้ยวกราด\nเกล็ดเลือด\nเกลี้ยกล่อม\nเกลี้ยงเกลา\nเกลือกกลั้ว\nเกลือกกลิ้ง\nเกลื่อนกล่น\nเกลื่อนกลาด\nเกศธาตุ\nเกษตรกร\nเกษตรกรรม\nเกษตรศาสตร์\nเกษมสันต์\nเกษียรสมุทร\nเก้อเขิน\nเกาะแกะ\nเกี่ยงงอน\nเกียจคร้าน\nเกียรติคุณ\nเกียรตินิยม\nเกียรติประวัติ\nเกียรติภูมิ\nเกียรติยศ\nเกียรติศักดิ์\nเกียรติมุข\nเกี่ยวข้อง\nเกี่ยวดอง\nเกี่ยวพัน\nเกี่ยวโยง\nเกี้ยวพาน\nเกี้ยวพาราสี\nแก่แดด\nแก้ขัด\nแก้ไข\nแก้ตัว\nแก้เผ็ด\nแก้ลำ\nแกงคั่ว\nแกงจืด\nแกงบวด\nแกงป่า\nแกงเผ็ด\nแกงส้ม\nแก่งแย่ง\nแก่นแก้ว\nแก่นสาร\nแก้วตา\nแก้วหู\nแกว่งกวัด\nแกว่งไกว\nแกะรอย\nโก้เก๋\nโกรธเกรี้ยว\nโกรธขึ้ง\nไก่เขี่ย\nไก่ชน\nไก่บ้าน\nไก่ป่า\nไก่ฟ้า\nไกล่เกลี่ย\nขจัดขจาย\nขนเพชร\nขนสัตว์\nขนหนู\nขนส่ง\nขนมจีน\nขบขัน\nขบวนการ\nข่มขี่\nข่มขู่\nข่มขืน\nข่มเหง\nขมหิน\nขมิ้นชัน\nขมุบขมิบ\nขยะแขยง\nขยักขย่อน\nขยักขย้อน\nขยับขยาย\nขยับเขยื้อน\nขวดโหล\nขวยเขิน\nขวัญใจ\nขวัญตา\nขวัญอ่อน\nขวากหนาม\nขวางโลก\nของ้าว\nขอสับ\nขอขมา\nขอทาน\nขอโทษ\nขอร้อง\nขออภัย\nข้อเขียน\nข้อความ\nข้อเท็จจริง\nของกลาง\nของขวัญ\nของแข็ง\nของชำ\nของลับ\nของเล่น\nของว่าง\nของเหลว\nของไหล\nของไหว้\nข้องใจ\nข้องแวะ\nขอบข่าย\nขอบเขต\nขอบคุณ\nขอบใจ\nขอบพระคุณ\nข้อมูล\nข้อแม้\nข้อหา\nข้อสังเกต\nขัดข้อง\nขัดขืน\nขัดเขิน\nขัดจังหวะ\nขัดดอก\nขัดแตะ\nขัดยอก\nขัดแย้ง\nขัดสมาธิ\nขันหมาก\nขันอาสา\nขับขี่\nขับเคี่ยว\nขั้วโลก\nขาจร\nขาประจำ\nข้าราชการ\nข้าศึก\nข้าหลวง\nขาดแคลน\nขาดใจ\nขาดตอน\nขาดตัว\nขาดทุน\nขาดเหลือ\nขายหน้า\nข่าวกรอง\nข่าวคราว\nข่าวล่า\nข่าวลือ\nข่าวสาร\nข้าวเกรียบ\nข้าวแกง\nข้าวของ\nข้าวจี่\nข้าวเจ้า\nข้าวซอย\nข้าวต้ม\nข้าวตอก\nข้าวตัง\nข้าวแตน\nข้าวทิพย์\nข้าวบิณฑ์\nข้าวเปลือก\nข้าวโพด\nข้าวฟ่าง\nข้าวเม่า\nข้าวสวย\nข้าวสาร\nข้าวเหนียว\nข้าวหมาก\nข้าวหลาม\nขี้เกียจ\nขี้ข้า\nขี้ครอก\nขี้คร้าน\nขี้คุก\nขี้ไคล\nขี้เซา\nขีดขั้น\nขีดคร่อม\nขีดคั่น\nขีดฆ่า\nขี้ตา\nขี้ตืด\nขี้เถ้า\nขี้ทูด\nขี้ปะติ๋ว\nขี้ผึ้ง\nขี้มูก\nขี้ยา\nขี้แย\nขี้ริ้ว\nขี้เรื้อน\nขี้เล็บ\nขี้หู\nขี้หน้า\nขี้เหนียว\nขี้เหล็ก\nขี้เหร่\nขึงขัง\nขึงพืด\nขึ้งโกรธ\nขึ้นใจ\nขึ้นชื่อ\nขึ้นมือ\nขืนใจ\nขื่นขม\nขุดคุ้ย\nขุนทอง\nขุนนาง\nขุนพล\nขุนศึก\nขุนหลวง\nขูดรีด\nเข็มกลัด\nเข็มขัด\nเข้มข้น\nเข้มแข็ง\nเข้มงวด\nเข็มทิศ\nเข็มหมุด\nเข้าขา\nเข้าเค้า\nเข้าใจ\nเข้าชื่อ\nเข้าตัว\nเข้าถึง\nเข้าทรง\nเข้าท่า\nเข้าที\nเข้าเนื้อ\nเข้าเล่ม\nเขียวเสวย\nเขียวหวาน\nแขกเต้า\nแข็งกร้าว\nแข็งกล้า\nแข็งแกร่ง\nแข็งข้อ\nแข็งขัน\nแข่งขัน\nแข็งใจ\nแข็งตัว\nแข็งเมือง\nแข็งแรง\nแขวนลอย\nโขกสับ\nโขยกเขยก\nไขข้อ\nไขควง\nไขมัน\nไข่มุก\nไขว่ห้าง\nไขสันหลัง\nไขสือ\nไข่เค็ม\nไข่เยี่ยวม้า\nไข่หงส์\nไข่เหี้ย\nคงกระพัน\nคงตัว\nคงทน\nคงที่\nคชลักษณ์\nคชสาร\nคชสีห์\nคชราช\nคณิตศาสตร์\nคดเคี้ยว\nคติธรรม\nคติพจน์\nคนกลาง\nคนไข้\nคนใช้\nคนทรง\nคบไฟ\nคบเพลิง\nคบค้า\nคบคิด\nคบหา\nคมคาย\nครบครัน\nครบถ้วน\nครอบครอง\nครอบคลุม\nครอบครัว\nครอบงำ\nครอบจักรวาล\nคริสตกาล\nคริสตจักร\nคริสต์มาส\nคริสต์ศตวรรษ\nคริสต์ศักราช\nคริสตัง\nคริสเตียน\nครุกรรม\nครุภัณฑ์\nครุศาสตร์\nครุฑพ่าห์\nครุ่นคิด\nคลอเคลีย\nคล่องแคล่ว\nคล่องตัว\nคล่องมือ\nคลั่งไคล้\nคลาคล่ำ\nคลาไคล\nคลาดเคลื่อน\nคลาดแคล้ว\nคลี่คลาย\nคลึงเคล้น\nคลึงเคล้า\nคลื่นไส้\nคลื่นเหียน\nคลุกคลี\nคลุกคลาน\nคลุมเครือ\nคลุมโปง\nคลุ้มคลั่ง\nควงสว่าน\nควบคุม\nควบคู่\nควบแน่น\nควันหลง\nความคิด\nความหลัง\nความเห็น\nคอหอย\nคอห่าน\nคอแห้ง\nค่อนขอด\nค่อนแคะ\nค้อนควัก\nคั่งค้าง\nคั่งแค้น\nคัดค้าน\nคัดง้าง\nคัดท้าย\nคัดเลือก\nคันจาม\nคันฉ่อง\nคันฉาย\nคันชัก\nคันชั่ง\nคันไถ\nคันนา\nคันเร่ง\nคับขัน\nคับคั่ง\nคับแค้น\nคับแคบ\nคางทูม\nคางหมู\nค้างคืน\nค้างปี\nคาดคั้น\nคาดเชือก\nคาดโทษ\nคาดหมาย\nคานหาม\nคาบเกี่ยว\nคาบศิลา\nคาบสมุทร\nคำขาด\nคำนำ\nคิดค้น\nคืนดี\nคืนตัว\nคุกเข่า\nคุณค่า\nคุณชาย\nคุณธรรม\nคุณนาย\nคุณภาพ\nคุณลักษณะ\nคุณวุฒิ\nคุณศัพท์\nคุณสมบัติ\nคุณหญิง\nคุณากร\nคุณูปการ\nคุโณปการ\nคุมเชิง\nคุ้มกัน\nคุยเขื่อง\nคุยโต\nคุ้ยเขี่ย\nคุ้มครอง\nคู่กรณี\nคู่กัด\nคู่ขา\nคู่แข่ง\nคู่ครอง\nคู่ควร\nคู่คิด\nคู่คี่\nคู่ใจ\nคู่ชีพ\nคู่ชีวิต\nคู่บารมี\nคู่บุญ\nคู่ปรปักษ์\nคู่ปรับ\nคู่ผสม\nคู่มือ\nคู่รัก\nคู่ลำดับ\nคู่สาย\nคู่หมั้น\nคู่หู\nคู่อริ\nคู่อาฆาต\nเคมีภัณฑ์\nเคยตัว\nเคร่งขรึม\nเคร่งครัด\nเคร่งเครียด\nเครดิตฟองซิเอร์\nเครื่องกล\nเครื่องกัณฑ์\nเครื่องแกง\nเครื่องเขิน\nเครื่องครัว\nเครื่องเคียง\nเครื่องเงิน\nเครื่องจักร\nเครื่องเซ่น\nเครื่องดนตรี\nเครื่องต้น\nเครื่องทุ่นแรง\nเครื่องเทศ\nเครื่องใน\nเครื่องบิน\nเครื่องบูชา\nเครื่องแบบ\nเครื่องประดับ\nเครื่องปรุง\nเครื่องปรุงรส\nเครื่องมือ\nเครื่องยนต์\nเครื่องร่อน\nเครื่องราง\nเครื่องเรือน\nเครื่องล่าง\nเครื่องเล่น\nเครื่องสาย\nเครื่องสำอาง\nเครื่องสุกำศพ\nเครื่องหมาย\nเครือรัฐ\nเคลียคลอ\nเคลื่อนที่\nเคลื่อนไหว\nเคลือบแคลง\nเคลือบแฝง\nเคลือบฟัน\nเคว้งคว้าง\nเคหสถาน\nเค้าโครง\nเคียดแค้น\nเคี่ยวเข็ญ\nเคี้ยวเอื้อง\nเคืองขุ่น\nโคนม\nโคบาล\nโคมูตร\nโคมลอย\nโครงการ\nโครงเรื่อง\nโครงงาน\nโครงสร้าง\nโครมคราม\nโคลงเคลง\nฆ้องกระแต\nฆ้องชัย\nฆ้องวง\nฆ้องหุ่ย\nฆ้องเหม่ง\nฆ้องโหม่ง\nฆาตกร\nฆาตกรรม\nฆานประสาท\nงงงวย\nงงงัน\nงดเว้น\nงบดุล\nงบประมาณ\nงมโข่ง\nงมงาย\nง่วงงุน\nง่วงเหงา\nงอหาย\nง้องอน\nงอนง้อ\nงอมแงม\nงาช้าง\nง่าเงย\nงานการ\nง่ายดาย\nงึมงำ\nเงินเดือน\nเงินตรา\nเงินยวง\nเงียบกริบ\nเงียบเชียบ\nเงียบเหงา\nเงื่องหงอย\nเงื่อนไข\nเงื่อนงำ\nเงื่อนเวลา\nเงื้อมมือ\nแง่งอน\nจงใจ\nจงรัก\nจดจ่อ\nจดจำ\nจดหมาย\nจดหมายเหตุ\nจรจัด\nจรรยาบรรณ\nจริงจัง\nจริงใจ\nจอมขวัญ\nจอมใจ\nจอมทัพ\nจอมปลวก\nจอมพล\nจ๊ะเอ๋\nจักสาน\nจักรพรรดิ\nจักรภพ\nจักรยาน\nจักรยานยนต์\nจักรราศี\nจักรวรรดิ\nจักรวรรดินิยม\nจักรวาล\nจังหนับ\nจัดการ\nจัดจ้าน\nจัดเจน\nจัดแจง\nจัดตั้ง\nจัดสรร\nจับกุม\nจับจด\nจับเจ่า\nจ่าหน้า\nจาตุทสี\nจาตุมหาราช\nจาตุมหาราชิก\nจาตุมหาราชิกา\nจาตุรงคสันนิบาต\nจาตุรราชการ\nจานเชิง\nจานบิน\nจานผี\nจานเสียง\nจาบจ้วง\nจำเป็น\nจำพรรษา\nจำวัด\nจ้ำจี้จ้ำไช\nจำเลาะตา\nจิงโจ้น้ำ\nจิตใจ\nจิตตภาวนา\nจิตตัง\nจิตตานุปัสสนา\nจิตนิยม\nจิตบำบัด\nจิตแพทย์\nจิตวิสัย\nจิตรกร\nจิตรกรรม\nจิตรลดา\nจิตวิทยา\nจิตเวช\nจิตเวชศาสตร์\nจินตกวี\nจินตนา\nจินตนาการ\nจินตภาพ\nจุฑามณี\nจุฑามาศ\nจุฑารัตน์\nจุนเจือ\nจุ้นจ้าน\nจุลชีพ\nจุลชีวัน\nจุลชีวิน\nจุลทรรศน์\nจุลภาค\nจุลวรรค\nจุลศักราช\nจุลสาร\nจุลินทรีย์\nจุฬามณี\nจุฬาลักษณ์\nเจตคติ\nเจตจำนง\nเจตนารมณ์\nเจตภูต\nเจริญพร\nเจ้ากรม\nเจ้ากรรม\nเจ้าของ\nเจ้าขา\nเจ้าข้า\nเจ้าคณะ\nเจ้าค่ะ\nเจ้าจอม\nเจ้าชู้\nเจ้าตัว\nเจ้าถิ่น\nเจ้าท่า\nเจ้าที่\nเจ้าทุกข์\nเจ้านาย\nเจ้าเนื้อ\nเจ้าบ้าน\nเจ้าบ่าว\nเจ้าประคุณ\nเจ้าประคู้น\nเจ้าพนักงาน\nเจ้าพระคุณ\nเจ้าพระยา\nเจ้าพ่อ\nเจ้าพายุ\nเจ้าฟ้า\nเจ้าภาพ\nเจ้ามือ\nเจ้าแม่\nเจ้าเรือน\nเจ้าสังกัด\nเจ้าสัว\nเจ้าสาว\nเจ้าหน้าที่\nเจ้าหนี้\nเจ้าอาวาส\nเจาะจง\nเจือจาง\nเจือจาน\nเจือปน\nเจื้อยแจ้ว\nแจกจ่าย\nแจ่มแจ้ง\nแจ่มใส\nโจงกระเบน\nโจมตี\nโจรกรรม\nโจรสลัด\nใจความ\nใจคอ\nฉกฉวย\nฉกชิง\nฉลองได\nฉ้อฉล\nฉัตรมงคล\nฉันทลักษณ์\nฉายาลักษณ์\nฉิบหาย\nฉุกเฉิน\nฉุกละหุก\nฉุนเฉียว\nฉุปศาสตร์\nเฉไฉ\nเฉยเมย\nเฉาโฉด\nเฉิดฉัน\nเฉิดฉาย\nเฉิดฉิน\nเฉียบขาด\nเฉียบพลัน\nเฉียบแหลม\nเฉื่อยชา\nแฉะแบะ\nโฉดเฉา\nโฉมงาม\nโฉมฉาย\nโฉมเฉลา\nโฉมตรู\nโฉมยง\nโฉมศรี\nโฉมหน้า\nชดช้อย\nชดเชย\nชดใช้\nชนบท\nชนินทร์\nชนกกรรม\nชนมพรรษา\nชนมายุ\nชมเชย\nชมพูทวีป\nชมพูนท\nชมพูนุท\nชราธรรม\nชราภาพ\nชลจร\nชลธาร\nชลธี\nชลนัยน์\nชลนา\nชลเนตร\nชลประทาน\nชลมารค\nชลาธาร\nชลาลัย\nชลาศัย\nชลาสินธุ์\nชโลทร\nช่วงชิง\nช่วงใช้\nชวนชม\nชวนหัว\nช่วยเหลือ\nช่อฟ้า\nช่อม่วง\nชอกช้ำ\nช่องเขา\nช่องแคบ\nช่องไฟ\nช่องว่าง\nช้องนาง\nชอบกล\nชอบใจ\nชอบธรรม\nชอบพอ\nชักโครก\nชักเงา\nชักจูง\nชักชวน\nชักนำ\nชักเนื้อ\nชักพระ\nชักเย่อ\nชักใย\nชั่งใจ\nชังฆวิหาร\nชัดเจน\nชั้นเชิง\nชั่วคน\nชั่วคราว\nชั่วช้า\nชั่วโมง\nชั่วแล่น\nชาเย็น\nช้านาน\nช่างเครื่อง\nช่างฝีมือ\nช่างฟิต\nช่างไฟ\nช้างน้ำ\nช้างเผือก\nช้างพลาย\nช้างพัง\nช้างสาร\nช้างสีดอ\nชาติธรรม\nชาตินิยม\nชาติพันธุ์\nชาติพันธุ์วิทยา\nชาติภูมิ\nชานชาลา\nชายชาตรี\nชายคา\nชายฝั่ง\nชายทะเล\nชาวเล\nชาววัง\nช้ำใจ\nช้ำชอก\nชิงชัง\nชิงพลบ\nชินชา\nชินบุตร\nชิ้นเอก\nชิมลาง\nชีเปลือย\nชี้ขาด\nชี้แจง\nชี้นำ\nชี้แนะ\nชี้ฟ้า\nชีพจร\nชีพิตักษัย\nชื่นชม\nชื่นบาน\nชื่นมื่น\nชื่อย่อ\nชื่อรอง\nชื่อเล่น\nชื่อเสียง\nชุกชุม\nชุติมา\nชุบตัว\nชุบเลี้ยง\nชุมชน\nชุมทาง\nชุมสาย\nชุ่มใจ\nชุ่มชื่น\nชุ่มชื้น\nชุมนุมชน\nชูชีพ\nชูโรง\nชู้สาว\nเชยชม\nเชลยศักดิ์\nเชลยศึก\nเช่าซื้อ\nเช้าตรู่\nเช้ามืด\nเชิงกราน\nเชิงกล\nเชิงชั้น\nเชิงชาย\nเชิงซ้อน\nเชิงเดียว\nเชิงเดี่ยว\nเชิงตะกอน\nเชิงเทิน\nเชิงมุม\nเชิดชู\nเชิงอรรถ\nเชี่ยนหมาก\nเชี่ยวชาญ\nเชื่องช้า\nเชื่อใจ\nเชื่อถือ\nเชื่อฟัง\nเชื่อมือ\nเชื้อชาติ\nเชื้อเพลิง\nเชื้อไฟ\nเชื้อโรค\nเชื้อสาย\nเชื้อเชิญ\nเชื่องช้า\nเชือนแช\nเชื่อวัน\nแช่เย็น\nแช่อิ่ม\nแช่มช้อย\nแช่มชื่น\nโชกโชน\nโชติช่วง\nโชติรส\nใช้สอย\nซบเซา\nซมซาน\nซวนเซ\nซอกซอน\nซอกแซก\nซ่องสุม\nซ่องเสพ\nซ่องแซ่ง\nซ่อนรูป\nซ่อนเร้น\nซ่อนหา\nซ่อนกลิ่น\nซ่อนทราย\nซ่อมแซม\nซักค้าน\nซักซ้อม\nซักไซ้\nซักฟอก\nซักแห้ง\nซังกะตาย\nซังตาย\nซัดเซ\nซัดทอด\nซับซ้อน\nซับใน\nซับพระพักตร์\nซากศพ\nซ่านเซ็น\nซ้ำซ้อน\nซ้ำซาก\nซ้ำเติม\nซ้ำร้าย\nซี่โครง\nซีดเซียว\nซึมกะทือ\nซึมซาบ\nซึมเซา\nซึมทราบ\nซึมเศร้า\nซื่อตรง\nซื่อสัตย์\nซื้อขาย\nซุกซน\nซุกซ่อน\nซุบซิบ\nซู่ซ่า\nเซซัง\nเซ่อซ่า\nแซ่ซ้อง\nโซดาไฟ\nญาณทัสนะ\nญาณวิทยา\nญาณศาสตร์\nญาติกา\nฐานราก\nดกดื่น\nดงดิบ\nดลใจ\nดลบันดาล\nดวงแก้ว\nดวงใจ\nดวงเดือน\nดวงตรา\nดวงตา\nดวงสมร\nดอกจัน\nดอกจิก\nดอกบัว\nดอกเบี้ย\nดอกฟ้า\nดอกไม้\nดอกยาง\nดอกเล็บ\nดอกทอง\nดอกสร้อย\nดองยา\nดักคอ\nดักฟัง\nดังนั้น\nดังนี้\nดังหนึ่ง\nดั้งเดิม\nดัดจริต\nดัดแปลง\nดันทุรัง\nดับขันธ์\nดับจิต\nดับชีพ\nด่าทอ\nด่างทับทิม\nด่างพร้อย\nดาดฟ้า\nดาราศาสตร์\nดาลเดือด\nดาวกระจาย\nดาวเคราะห์\nดาวตก\nดาวเทียม\nดาวรุ่ง\nดาวเรือง\nดาวฤกษ์\nดาวหาง\nดาวเหนือ\nดาษดื่น\nดินขาว\nดินดาน\nดินดำ\nดินประสิว\nดินปืน\nดินระเบิด\nดินสอ\nดินสอพอง\nดิ้นรน\nดิบดี\nดีเกลือ\nดีใจ\nดีซ่าน\nดีดัก\nดีเดือด\nดีฝ่อ\nดีดดิ้น\nดึกดำบรรพ์\nดึกดื่น\nดึงดัน\nดึงดูด\nดื่มด่ำ\nดื้อด้าน\nดื้อดึง\nดื้อแพ่ง\nดื้อยา\nดื้อรั้น\nดุดัน\nดุเดือด\nดุร้าย\nดุลการค้า\nดุลพินิจ\nดุลภาค\nดุลยพินิจ\nดุลยภาพ\nดุษฎีนิพนธ์\nดุษฎีบัณฑิต\nดุษณีภาพ\nดูแคลน\nดูถูก\nดูดาย\nดูเบา\nดูแล\nดูหมิ่น\nดูเหมือน\nดูดดื่ม\nเด็ดขาด\nเด็ดดวง\nเด็ดเดี่ยว\nเดนตาย\nเดาสวด\nเดาสุ่ม\nเดินทาง\nเดินสะพัด\nเดินสาย\nเดินเหิน\nเดิมพัน\nเดียงสา\nเดียดฉันท์\nเดียวกัน\nเดียวดาย\nเดี๋ยวเดียว\nเดี๋ยวนี้\nเดือดดาล\nเดือดร้อน\nเดือนมืด\nเดือนหงาย\nแดดาล\nแดดิ้น\nแดกดัน\nโด่เด่\nโด่งดัง\nโดดเดี่ยว\nโดยสาร\nได้การ\nได้แก่\nได้ใจ\nได้ที\nได้ยิน\nได้เสีย\nตกเขียว\nตกค้าง\nตกใจ\nตกต่ำ\nตกแต่ง\nตกทอด\nตกฟาก\nตกมัน\nตกยาก\nตกลง\nตกหล่น\nต้นขั้ว\nต้นคิด\nต้นฉบับ\nต้นตอ\nต้นตำรับ\nต้นทุน\nต้นแบบ\nต้นเพลิง\nต้นมือ\nต้นไม้\nต้นร่าง\nต้นเรื่อง\nต้นสังกัด\nต้นหน\nต้นเหตุ\nตบตา\nตบแต่ง\nตบแผละ\nตบมือ\nต้มข่า\nต้มโคล้ง\nต้มยำ\nต้มส้ม\nตรมตรอม\nตรรกวิทยา\nตรรกศาสตร์\nตรวจการ\nตรวจการณ์\nตรวจตรา\nตระบัดสัตย์\nตรัสรู้\nตราตั้ง\nตราบาป\nตรายาง\nตราสาร\nตริตรอง\nตรีกฏุก\nตรีกาย\nตรีโกณ\nตรีโกณมิติ\nตรีคูณ\nตรีทูต\nตรีปิฎก\nตรีภพ\nตรีมูรติ\nตรึกตรอง\nตรึงตรา\nตรุษจีน\nตฤณชาติ\nตฤณมัย\nตลกบาตร\nตลบตะแลง\nตลบหลัง\nตลาดนัด\nตลาดน้ำ\nตลาดมืด\nตลาดสด\nต่อตี\nต่อเติม\nต่อว่า\nต่อสู้\nต่อกร\nต่อต้าน\nต่อแย้ง\nต้องการ\nต้องโทษ\nต้องหา\nต้อนรับ\nตอบโต้\nตอบแทน\nต่อยหอย\nตะพาบน้ำ\nตักตวง\nตักบาตร\nตั้งเข็ม\nตั้งไข่\nตั้งเค้า\nตั้งแง่\nตั้งใจ\nตั้งต้น\nตั้งแต่\nตั้งท้อง\nตัดขาด\nตัดใจ\nตัดเชือก\nตัดตอน\nตัดทอน\nตัดบท\nตัดพ้อ\nตัดรอน\nตัดสิน\nตับเต่า\nตับแลบ\nตับอ่อน\nตัวกลาง\nตัวการ\nตัวเก็ง\nตัวดี\nตัวตั้ง\nตัวเต็ง\nตัวถัง\nตัวแทน\nตัวประกอบ\nตัวประกัน\nตัวแปร\nตัวผู้\nตัวพิมพ์\nตัวเมีย\nตัวยืน\nตัวเลข\nตัวอย่าง\nตั๋วเงิน\nตั๋วแลกเงิน\nตากล้อง\nตาไก่\nตาข่าย\nตาชั่ง\nตาตุ่ม\nตาทวด\nตาปลา\nตาราง\nต่างหาก\nต้านทาน\nตามใจ\nตายใจ\nตายซาก\nตายด้าน\nตายตัว\nตายทั้งกลม\nตายห่า\nตายโหง\nตาลปัตร\nต่ำช้า\nต่ำต้อย\nตำส้ม\nติเตียน\nติณชาติ\nติดขัด\nติดใจ\nติดต่อ\nติดตั้ง\nติดตาม\nติดตื้น\nติดพัน\nติดลม\nติดอ่าง\nตีเกลียว\nตีขลุม\nตีความ\nตีคู่\nตีจาก\nตีตื้น\nตีแผ่\nตีรวน\nตีลังกา\nตีวง\nตีเสมอ\nตีนกา\nตีนคู้\nตีนจก\nตีนตะขาบ\nตีนผี\nตีนเหยียด\nตึกแถว\nตึกระฟ้า\nตึงเครียด\nตึงตัง\nตื้นตัน\nตื่นตัว\nตื่นตูม\nตื่นเต้น\nตุ๊ต๊ะ\nตุ้บตั้บ\nตุ้มหู\nตุลาการ\nตุลาคม\nตู้นิรภัย\nตูมตาม\nตู้เสบียง\nเตโชธาตุ\nเตร็ดเตร่\nเต้นรำ\nเตาแก๊ส\nเตาผิง\nเตาฟู่\nเตาไฟ\nเตารีด\nเตาสูบ\nเต่าทอง\nเต้ารับ\nเต้าส่วน\nเต้าเสียบ\nเต้าหู้ยี้\nแต่ละ\nแตกคอ\nแตกคอก\nแตกฉาน\nแตกดับ\nแตกตื่น\nแตกพาน\nแตกแยก\nแตกร้าว\nแตกหัก\nแต่งงาน\nแต่งตั้ง\nแต้มคู\nแต้มต่อ\nแตรงอน\nแตรเดี่ยว\nแตรฝรั่ง\nแตรฟันฟาร์\nแตรวง\nโต้ตอบ\nโต้เถียง\nโต้แย้ง\nโต๊ะหมู่\nโต๊ะอิหม่าม\nใต้ถุน\nไต้ก๋ง\nไต่คู้\nไต่เต้า\nไต่ถาม\nไต้ฝุ่น\nไตรจักร\nไตรจีวร\nไตรตรึงษ์\nไตรทวาร\nไตรปิฎก\nไตรเพท\nไตรภพ\nไตรภูมิ\nไตรภาคี\nไตรยางศ์\nไตรรงค์\nไตรรัตน์\nไตรลักษณ์\nไตรโลก\nไตรสรณคมน์\nไตรสิกขา\nไต่สวน\nถกเถียง\nถดถอย\nถนัดถนี่\nถนิมสร้อย\nถมถืด\nถมเถ\nถมไป\nถลากไถล\nถ้วนถี่\nถ้วยฟู\nถ่องแท้\nถอดถอน\nถ้อยคำ\nถ้อยแถลง\nถากถาง\nถ่านไฟฉาย\nถ่านหิน\nถามไถ่\nถ่ายทอด\nถ่ายทุกข์\nถ่ายเท\nถาวรวัตถุ\nถ้ำมอง\nถี่ถ้วน\nถึงใจ\nถูกใจ\nถูกชะตา\nเถรวาท\nเถ้าแก่\nเถ้าแก่เนี้ย\nแถมพก\nแถลงการณ์\nไถ่ถอน\nไถ่ถาม\nทดแทน\nทดรอง\nทดลอง\nทดสอบ\nทนทาน\nทนายความ\nทบทวน\nทแยงมุม\nทรงกลด\nทรงเครื่อง\nทรงเจ้า\nทรัพย์สิน\nทรามชม\nทรามเชย\nทรามวัย\nทรามสงวน\nทรามสวาท\nทรุดโทรม\nทฤษฎีบท\nท้วงติง\nท่วมท้น\nทวาทศ\nทวาทศมาส\nทวาบรยุค\nทวารบาล\nทวิบถ\nทวิบท\nทวิบาท\nทวิภาค\nทวิภาคี\nทวีคูณ\nทศกัณฐ์\nทศชาติ\nทศทิศ\nทศนิยม\nทศพร\nทศพล\nทศพิธราชธรรม\nทศมาส\nทศวรรษ\nท่อไอเสีย\nท้อถอย\nท้อแท้\nทองขาว\nทองคำ\nทองคำขาว\nทองคำเปลว\nทองเค\nทองแดง\nทองบรอนซ์\nทองม้วน\nทองย้อย\nทองสัมฤทธิ์\nทองหยอด\nทองหยิบ\nทองเหลือง\nทองเอก\nท่องเที่ยว\nท้องตรา\nท้องถิ่น\nท้องที่\nท้องน้อย\nท้องร่อง\nท้องเรื่อง\nทอดมัน\nทอดทิ้ง\nทอดน่อง\nทอดยอด\nทอดหุ่ย\nทอยกอง\nทะเบียนบ้าน\nทะเลทราย\nทะเลสาบ\nทะเลหลวง\nทักขิณาวัฏ\nทักท้วง\nทักทาย\nทักษิณาวรรต\nทักษิณาทาน\nทักษิณานุประทาน\nทั้งกลม\nทั้งคน\nทั้งดุ้น\nทั้งที\nทั้งนั้น\nทั้งนี้\nทั้งปวง\nทั้งผอง\nทั้งเพ\nทั้งมวล\nทั้งสิ้น\nทั้งหมด\nทั้งหลาย\nทัณฑ์บน\nทัดทาน\nทัดเทียม\nทันควัน\nทันใจ\nทันใด\nทันตา\nทันสมัย\nทันที\nทับถม\nทับทรวง\nทับศัพท์\nทั่วถึง\nทั่วไป\nท่าทาง\nท่าที\nท้าทาย\nทางการ\nทางข้าม\nทางด่วน\nทางเท้า\nทางโท\nทางใน\nทางผ่าน\nทางม้าลาย\nทางหลวง\nทางออก\nทางเอก\nทานกัณฑ์\nทานตะวัน\nท่านชาย\nทานบารมี\nท่านผู้หญิง\nท่านหญิง\nทาบทาม\nท้ายทอย\nทารุณกรรม\nทำคลอด\nทำใจ\nทำซ้ำ\nทำท่า\nทำที\nทำแท้ง\nทำโทษ\nทำบาป\nทำบุญ\nทำพิษ\nทำฟัน\nทำร้าย\nทำวัตร\nทำสาว\nทำเสน่ห์\nทำหมัน\nทำให้\nทิ้งขว้าง\nทิ้งทวน\nทิ้งท้าย\nทินกร\nทิพจักขุ\nทิพโสต\nทิพยจักษุ\nทิพยญาณ\nทิพยเนตร\nทิพยรส\nทิพากร\nทิ่มตำ\nทิ่มแทง\nทิวากร\nทิวากาล\nทิศทาง\nทีเด็ด\nทีท่า\nทีนี้\nทีหลัง\nทีฆนิกาย\nทีฆสระ\nที่ดิน\nที่นอน\nที่นั่ง\nที่ปรึกษา\nที่พึ่ง\nที่มั่น\nที่ราบ\nที่ว่าการ\nที่สุด\nที่หมาย\nที่ไหน\nทุกที\nทุกเมื่อ\nทุกข์สุข\nทุนทรัพย์\nทุนนิยม\nทุนรอน\nทุนสำรอง\nทุ่มเถียง\nทุ่มเท\nทูนหัว\nทูลกระหม่อม\nเทกระจาด\nเทครัว\nเทพเจ้า\nเทพดา\nเทพธิดา\nเทพนม\nเทพนิยม\nเทพนิยาย\nเทพบุตร\nเทพสังหรณ์\nเทศกาล\nเทศนาโวหาร\nเทศบัญญัติ\nเทศบาล\nเทศมนตรี\nเทห์ฟากฟ้า\nเท่ากับ\nเท่าใด\nเท่าตัว\nเท่าทัน\nเท่าทุน\nเท่าเทียม\nเท่านั้น\nเท่าไร\nเท้าช้าง\nเทิดทูน\nเที่ยงตรง\nเที่ยงแท้\nเที่ยงธรรม\nเทียนชนวน\nเทียนพรรษา\nเทียบเคียง\nเทียบเท่า\nเทือกเขา\nเทือกเถา\nแท็งก์น้ำ\nแท่นพิมพ์\nแท่นมณฑล\nแท่นหมึก\nแทรกซอน\nแทรกซ้อน\nแทรกซึม\nแทรกแซง\nแทะโลม\nไทยดำ\nไทยทาน\nไทยธรรม\nไทยน้อย\nไทยใหญ่\nธงชัย\nธงชาติ\nธงทิว\nธรณีวิทยา\nธรณีสงฆ์\nธรรมกาย\nธรรมการ\nธรรมเกษตร\nธรรมขันธ์\nธรรมคุณ\nธรรมจรรยา\nธรรมจริยา\nธรรมจักร\nธรรมจักษุ\nธรรมจาคะ\nธรรมจารี\nธรรมชาติ\nธรรมดา\nธรรมเนียม\nธรรมราชา\nธรรมศาสตร์\nธรรมสภา\nธรรมสังเวช\nธัญพืช\nธารพระกร\nธีรภาพ\nธีรราช\nนกเขา\nนกต่อ\nนกยูง\nนกรู้\nนกหวีด\nนครบาล\nนครรัฐ\nนงคราญ\nนงนุช\nนงพะงา\nนงเยาว์\nนงราม\nนงลักษณ์\nนบนอบ\nนพเก้า\nนพคุณ\nนพเคราะห์\nนพปฎล\nนพพล\nนพรัตน์\nนพศก\nนพศูล\nนมข้น\nนมผง\nนมไม้\nนมนาน\nนมหนู\nนมแมว\nนรีเวช\nนรีเวชวิทยา\nนวดฟั้น\nนวยนาด\nนวลระหง\nนวลลออ\nนวลละออง\nนวลจันทร์\nนอกครู\nนอกคอก\nนอกจาก\nนอกใจ\nนอกชาน\nนอกรีต\nนอกเหนือ\nนองเนือง\nนองเลือด\nนอนก้น\nนอนใจ\nนอบนบ\nนอนเล่น\nนอบน้อม\nน้อมนำ\nน้อยใจ\nน้อยหน้า\nนักการ\nนักการเมือง\nนักกีฬา\nนักข่าว\nนักท่องเที่ยว\nนักเทศน์\nนักโทษ\nนักธรรม\nนักบวช\nนักบิน\nนักบุญ\nนักปราชญ์\nนักพรต\nนักรบ\nนักเรียน\nนักเลง\nนักวิชาการ\nนักศึกษา\nนักสิทธิ์\nนักสืบ\nนักหนา\nนั่งเทียน\nนั่งร้าน\nนัดแนะ\nนัดหมาย\nนั่นแหละ\nนั่นเอง\nนับถือ\nนับประสา\nนัยน์ตา\nนาดำ\nนาปรัง\nนาปี\nนาสวน\nนาหว่าน\nนาคบาศ\nนาคปรก\nนาคราช\nนางกวัก\nนางกำนัล\nนางงาม\nนางใน\nนางบำเรอ\nนางแบบ\nนางพญา\nนางฟ้า\nนางไม้\nนางโลม\nนางสาว\nนางห้าม\nนางเอก\nนาฏกรรม\nนาฏดนตรี\nนาฏศิลป์\nนานนม\nน่านน้ำ\nน่านฟ้า\nนามกร\nนามธรรม\nนามไธย\nนามบัตร\nนามปากกา\nนามแฝง\nนามสกุล\nนามสงเคราะห์\nนามสมญา\nนายทะเบียน\nนายท่า\nนายท้าย\nนายทุน\nนายประกัน\nนายหน้า\nนายอำเภอ\nนารายณ์หัตถ์\nนารีผล\nนาวิกโยธิน\nนำจับ\nนำพา\nนำทาง\nนำร่อง\nนำสืบ\nนำแสดง\nน้ำกรด\nน้ำกาม\nน้ำเกลือ\nน้ำข้าว\nน้ำแข็ง\nน้ำแข็งไส\nน้ำแข็งแห้ง\nน้ำครำ\nน้ำคร่ำ\nน้ำค้าง\nน้ำค้างแข็ง\nน้ำคาวปลา\nน้ำคำ\nน้ำเค็ม\nน้ำเคย\nน้ำเงิน\nน้ำเงี้ยว\nน้ำจัณฑ์\nน้ำจิ้ม\nน้ำใจ\nน้ำเชื้อ\nน้ำเชื่อม\nน้ำซาวข้าว\nน้ำดอกไม้\nน้ำดี\nน้ำตก\nน้ำตา\nน้ำตาล\nน้ำท่า\nน้ำนม\nน้ำนวล\nน้ำบาดาล\nน้ำประสานทอง\nน้ำประปา\nน้ำปลา\nน้ำป่า\nน้ำผึ้ง\nน้ำพริก\nน้ำพริกเผา\nน้ำพี้\nน้ำพุ\nน้ำมนต์\nน้ำมนตร์\nน้ำมัน\nน้ำมือ\nน้ำมูก\nน้ำเมา\nน้ำย่อย\nน้ำยา\nน้ำรัก\nน้ำแร่\nน้ำลาย\nน้ำเลี้ยง\nน้ำสต๊อก\nน้ำส้ม\nน้ำส้มสายชู\nน้ำสังข์\nน้ำสาบาน\nน้ำเสียง\nน้ำหนวก\nน้ำหนอง\nน้ำหนัก\nน้ำหน้า\nน้ำหนึ่ง\nน้ำหมึก\nน้ำหอม\nน้ำเหลือง\nน้ำอบ\nน้ำอ้อย\nน้ำอัดลม\nนิ่งเฉย\nนิจศีล\nนิดเดียว\nนิดหน่อย\nนิติกร\nนิติกรรม\nนิติธรรม\nนิตินัย\nนิติบัญญัติ\nนิติบุคคล\nนิติภาวะ\nนิติวิทยาศาสตร์\nนิติเวช\nนิติเวชศาสตร์\nนิติศาสตร์\nนิเทศศาสตร์\nนิ่มนวล\nนิรุกติศาสตร์\nนิเวศวิทยา\nนิศากร\nนิศากาล\nนิศาชล\nนิศารัตน์\nนี่แน่ะ\nนี่แหละ\nนี่เอง\nนึกคิด\nนุงถุง\nนุ่งห่ม\nนุ่มนวล\nนุ่มนิ่ม\nเนตรนารี\nเนติบัณฑิต\nเนยเทียม\nเนยใส\nเนิ่นนาน\nเนิบนาบ\nเนื้อความ\nเนื้อคู่\nเนื้อเค็ม\nเนื้องอก\nเนื้อตัว\nเนื้อตาย\nเนื้อที่\nเนื้อแท้\nเนื้อเปื่อย\nเนื้อผ้า\nเนื้อเพลง\nเนื้อไม้\nเนื้อเยื่อ\nเนื้อร้อง\nเนื้อร้าย\nเนื้อเรื่อง\nเนื้อหา\nเนืองนอง\nเนืองนิตย์\nเนืองแน่น\nแน่ใจ\nแน่ชัด\nแน่แท้\nแน่นอน\nแน่นิ่ง\nแน่แน่ว\nแน่นแฟ้น\nแน่นหนา\nแนบเนียน\nแนบแน่น\nแนวคิด\nแนวทาง\nแนวโน้ม\nแนวป่า\nแนวรบ\nแนวร่วม\nแนวหน้า\nแนวหลัง\nแน่วแน่\nแนะนำ\nแนะแนว\nโน้มน้าว\nในหลวง\nบกพร่อง\nบงกช\nบงการ\nบดบัง\nบทกลอน\nบทกวี\nบทความ\nบทคัดย่อ\nบทเฉพาะกาล\nบทนำ\nบทบัญญัติ\nบทบาท\nบทประพันธ์\nบทเพลง\nบทร้อง\nบทเรียน\nบทลงโทษ\nบทสนทนา\nบทอัศจรรย์\nบทจร\nบทบงสุ์\nบทมาลย์\nบทรัช\nบทเรศ\nบทวลัญช์\nบนบาน\nบรมครู\nบรมธาตุ\nบรมบพิตร\nบรมวงศานุวงศ์\nบรมอัฐิ\nบรรณพิภพ\nบรรณศาลา\nบรรณาการ\nบรรณาธิการ\nบรรณานุกรม\nบรรณารักษ์\nบรรณารักษศาสตร์\nบรรดามี\nบรรดาศักดิ์\nบรรทัดฐาน\nบรรพบุรุษ\nบรรลัยกัลป์\nบรรลัยจักร\nบริคณห์สนธิ\nบวงสรวง\nบ่วงบาศ\nบ้วนพระโอษฐ์\nบ่อเกิด\nบอกกล่าว\nบอกบท\nบอกบุญ\nบอกใบ้\nบอกปัด\nบ้องกัญชา\nบ้องตื้น\nบ้องไฟ\nบ้องหู\nบอดสี\nบ่อนทำลาย\nบอบช้ำ\nบอบบาง\nบอบแบบ\nบังโกลน\nบังโคลน\nบังใบ\nบั้งไฟ\nบังคับการ\nบังคับบัญชา\nบัญชาการ\nบัณฑุกัมพล\nบัดดล\nบัดเดี๋ยว\nบัดนั้น\nบัดนี้\nบัดสีบัดเถลิง\nบัตรเครดิต\nบัตรพลี\nบัตรสนเท่ห์\nบัตรสินเชื่อ\nบั่นทอน\nบั้นท้าย\nบั้นปลาย\nบั้นพระองค์\nบั้นเอว\nบันไดลิง\nบันไดเลื่อน\nบันเทิงคดี\nบัวลอย\nบัวบก\nบ้าจี้\nบ้าดีเดือด\nบ้าน้ำลาย\nบ้าบิ่น\nบ้าระห่ำ\nบ้าเลือด\nบ้าหอบฟาง\nบากบั่น\nบากหน้า\nบางตา\nบางเบา\nบางที\nบาดเจ็บ\nบาดแผล\nบาดหมาง\nบาตรใหญ่\nบาทบงกช\nบาทบงสุ์\nบาทบริจาริกา\nบาทวิถี\nบานเกล็ด\nบานตะเกียง\nบานตะไท\nบานเบอะ\nบานปลาย\nบานแผละ\nบานพับ\nบ้านจัดสรร\nบ้านช่อง\nบ้านนอก\nบ้านพัก\nบ้านเมือง\nบ้านรับรอง\nบ้านเรือน\nบาปกรรม\nบายศรี\nบ่ายเบี่ยง\nบ่ายหน้า\nบ่าวไพร่\nบิดเบี้ยว\nบิดเบือน\nบิดพลิ้ว\nบี้แบน\nบีบคั้น\nบีบรัด\nบึ้งตึง\nบึ้งบูด\nบุกบั่น\nบุกเบิก\nบุกรุก\nบุคลิกภาพ\nบุคลิกลักษณะ\nบุญธรรม\nบุญนิธิ\nบุญฤทธิ์\nบุบสลาย\nบุ้ยใบ้\nบุรุษเพศ\nบุหงารำไป\nบู้บี้\nบูชายัญ\nบูดบึ้ง\nบูดเบี้ยว\nเบาความ\nเบาใจ\nเบาบาง\nเบาปัญญา\nเบามือ\nเบาแรง\nเบาสมอง\nเบาหวาน\nเบาโหวง\nเบ้าตา\nเบาะแส\nเบิกความ\nเบิกบาน\nเบี้ยล่าง\nเบี้ยเลี้ยง\nเบี้ยหวัด\nเบี่ยงบ่าย\nเบียดบัง\nเบียดเบียน\nเบียดเสียด\nเบื้องต้น\nเบื้องบน\nเบื้องหน้า\nเบื้องหลัง\nแบกะดิน\nแบเบาะ\nแบ่งเบา\nแบ่งปัน\nแบ่งแยก\nแบบฉบับ\nแบบแปลน\nแบบแผน\nแบบฝึกหัด\nแบบพิมพ์\nแบบสอบถาม\nแบบอย่าง\nแบะแฉะ\nแบะท่า\nโบแดง\nโบราณคดี\nโบราณวัตถุ\nโบราณสถาน\nใบขับขี่\nใบจอง\nใบตอง\nใบแทรก\nใบบอก\nใบบุญ\nใบเบิกทาง\nใบปลิว\nใบพัด\nใบโพ\nใบไม้\nใบระกา\nใบรับรอง\nใบลา\nใบเลี้ยง\nใบสั่ง\nใบสำคัญ\nใบสุทธิ\nใบเสร็จ\nใบหน้า\nใบอนุญาต\nใบระกา\nปกครอง\nปกคลุม\nปกป้อง\nปกปิด\nปฏิบัติการ\nปฏิบัติบูชา\nปฐพีวิทยา\nปฐมฌาน\nปฐมทัศน์\nปฐมเทศนา\nปฐมนิเทศ\nปฐมพยาบาล\nปฐมยาม\nปฐมฤกษ์\nปฐมวัย\nปฐมสมโพธิ\nปนเป\nป่นปี้\nปมเขื่อง\nปมเด่น\nปมด้อย\nปรนเปรอ\nปรบไก่\nปรบมือ\nปรสิตวิทยา\nประโปรย\nประพรม\nประกันชีวิต\nประกันภัย\nประจักษ์พยาน\nประจัญบาน\nประจันหน้า\nประจำการ\nประจำเดือน\nประจำเมือง\nประจำยาม\nประชดประชัน\nประชากร\nประชากรศาสตร์\nประชาคม\nประชาชน\nประชาราษฎร์\nประชาชาติ\nประชาชี\nประชาทัณฑ์\nประชาบาล\nประชาพิจารณ์\nประชาภิบาล\nประชามติ\nประชาสงเคราะห์\nประชาสัมพันธ์\nประดับประดา\nประดามี\nประดาน้ำ\nประเดี๋ยวเดียว\nประเดี๋ยวนี้\nประทับใจ\nประทุษร้าย\nประเทศราช\nประพาสต้น\nประเพณีนิยม\nประลัยกัลป์\nประวัติการณ์\nประวัติศาสตร์\nประสบการณ์\nประสบการณ์นิยม\nประสาทการ\nประสูติการ\nประสูติกาล\nประเส\nปรับทุกข์\nปรับโทษ\nปรับปรุง\nปรากฏการณ์\nปราดเปรียว\nปราดเปรื่อง\nปราบปราม\nปริญญาบัตร\nปรัยัติธรรม\nปรุโปร่ง\nปลงใจ\nปลงตก\nปลดทุกข์\nปลดปลง\nปลดปล่อย\nปลดเปลื้อง\nปลดระวาง\nปลดแอก\nปล้นสะดม\nปลอกกระสุน\nปลอกคอ\nปลอดโปร่ง\nปลอดภัย\nปลอมปน\nปลอมแปลง\nปลอบโยน\nปล่อยใจ\nปล่อยตัว\nปล่อยปละ\nปลั๊กไฟ\nปลากริม\nปลาเค็ม\nปลาจ่อม\nปลาเจ่า\nปลาแดก\nปลาตู้\nปลาทอง\nปลาร้า\nปลาส้ม\nปลาดาว\nปลาบิน\nปลาฝา\nปลาวาฬ\nปลาหมึก\nปลาบปลื้ม\nปลายข้าว\nปลายแถว\nปลายทาง\nปลิ้นปลอก\nปลิ้นปล้อน\nปลีกตัว\nปลีกย่อย\nปลุกใจ\nปลุกปล้ำ\nปลุกปั่น\nปลุกระดม\nปลุกเสก\nปลูกฝัง\nปลูกสร้าง\nปวดถ่วง\nปวดมวน\nปวดร้าว\nป่วนปั่น\nป่วยการ\nปอกลอก\nป้องกัน\nปักใจ\nปักดำ\nปักหลัก\nปัจเจกบุคคล\nปัจเจกพุทธะ\nปัจเจกโพธิ\nปัจฉิมชน\nปัจฉิมทิศ\nปัจฉิมภาค\nปัจฉิมยาม\nปัจฉิมลิขิต\nปัจฉิมวัย\nปัจฉิมวาจา\nปัญญาชน\nปัญญาวิมุติ\nปัญญาอ่อน\nปัดเป่า\nปันส่วน\nปั่นป่วน\nปั่นแปะ\nปั่นหัว\nปั้นจิ้ม\nปั้นเจ๋อ\nปั้นปึ่ง\nปั้นสิบ\nปั๊มน้ำมัน\nป่าช้า\nป่าชายเลน\nป่าดง\nป่าดงดิบ\nป่าดิบ\nป่าเถื่อน\nป่าเบญจพรรณ\nป่าละเมาะ\nปากกา\nปากขอ\nปากแข็ง\nปากคอ\nปากคำ\nปากคีบ\nปากจัด\nปากน้ำ\nปากเปล่า\nปากเสียง\nปานกลาง\nป่านนี้\nป้านลม\nป้ายสี\nป่าวร้อง\nปิดฉาก\nปิดบัง\nปิตุฆาต\nปิตุภูมิ\nปีมะโว้\nปีแสง\nปี่กลาง\nปี่ไฉน\nปี่ชวา\nปี่นอก\nปี่ใน\nปี่พาทย์\nปี่อ้อ\nปีกกา\nปีนเกลียว\nปีนป่าย\nปึกแผ่น\nปึงปัง\nปืนกล\nปืนครก\nปืนพก\nปืนยา\nปืนยาว\nปืนลม\nปืนเล็ก\nปืนเล็กยาว\nปืนสั้น\nปืนใหญ่\nปุบปับ\nปุ๊บปั๊บ\nปุ่มเปือก\nปุยฝ้าย\nปุ๋ยคอก\nปุ๋ยเคมี\nปุ๋ยวิทยาศาสตร์\nปุ๋ยหมัก\nปุ๋ยอินทรีย์\nปูจ๋า\nปูเสฉวน\nปู่เจ้า\nปู่ทวด\nปูนขาว\nปูนซีเมนต์\nปูนดิบ\nปูนแดง\nปูนปลาสเตอร์\nปูนปั้น\nเป็ดเทศ\nเป็ดน้ำ\nเป็นกลาง\nเป็นใจ\nเป็นต้น\nเป็นต่อ\nเป็นรอง\nเป็นไร\nเป็นลม\nเป็นห่วง\nเป็นอยู่\nเปรมปรีดิ์\nเปรอะเปื้อน\nเปรียบเทียบ\nเปรียบเปรย\nเปรี้ยวปาก\nเปรี้ยวหวาน\nเปรื่องปราด\nเปลญวน\nเปล่งปลั่ง\nเปล่าดาย\nเปล่าเปลี่ยว\nเปลี่ยนใจ\nเปลี่ยนตัว\nเปลี่ยนแปลง\nเปลี่ยนมือ\nเปลี่ยนหน้า\nเป๋อเหลอ\nเปะปะ\nเป่ากบ\nเป้านิ่ง\nเป้าหมาย\nเปิดฉาก\nเปิดเปิง\nเปิดโปง\nเปิดผนึก\nเปิดเผย\nเปียกปูน\nแป้งสาลี\nแป้งนวล\nแป้งเปียก\nแป้งมัน\nแป้งฝุ่น\nแป้งร่ำ\nแป้งสิงคโปร์\nแป้งหมี่\nแปดปน\nแปดเปื้อน\nแปรปรวน\nแปรผัน\nแปรพักตร์\nแปรรูป\nแปรอักษร\nแปลกปลอม\nแปะโป้ง\nโป้ปด\nโปร่งแสง\nโปร่งใส\nโปรดปราน\nโปรยทาน\nโปรยปราย\nโปโลน้ำ\nผกผัน\nผกากรอง\nผงขาว\nผงชูรส\nผงซักฟอก\nผงฟู\nผดุงครรภ์\nผมไฟ\nผลพลอยได้\nผลลัพธ์\nผลัดเปลี่ยน\nผลิตผล\nผลิตภัณฑ์\nผลุบโผล่\nผสมเทียม\nผสมผสาน\nผสมผเส\nผสมพันธุ์\nผสมโรง\nผสมเสร็จ\nผ่องแผ้ว\nผ่องใส\nผ่อนคลาย\nผ่อนชำระ\nผ่อนปรน\nผ่อนผัน\nผ่อนส่ง\nผอมโซ\nผอมแห้ง\nผักชี\nผักตบชวา\nผักบุ้ง\nผังเมือง\nผัดผ่อน\nผันแปร\nผันผวน\nผ่าตัด\nผ่าเผย\nผ่าหมาก\nผ่าเหล่า\nผ้าขนหนู\nผ้าขาวม้า\nผ้าขี้ริ้ว\nผ้าเช็ดตัว\nผ้าเช็ดปาก\nผ้าเช็ดมือ\nผ้าเช็ดหน้า\nผ้าดิบ\nผ้าต่วน\nผ้าไตร\nผ้าถุง\nผ้าแถบ\nผ้านวม\nผ้านุ่ง\nผ้าใบ\nผ้าป่า\nผ้าป่าน\nผ้าผ่อน\nผ้าพันคอ\nผ้าพันแผล\nผ้าแพร\nผ้าโพกหัว\nผ้ามัดหมี่\nผ้ายาง\nผ้าลูกไม้\nผ้าเหลือง\nผ้าอนามัย\nผ้าอ้อม\nผาดโผน\nผาติกรรม\nผิดหวัง\nผิวเผิน\nผิวพรรณ\nผิวหนัง\nผีกระสือ\nผีกระหัง\nผีกองกอย\nผีโขมด\nผีดิบ\nผีตองเหลือง\nผีถ้วยแก้ว\nผีแถน\nผีทะเล\nผีบุญ\nผีปอบ\nผีพุ่งไต้\nผีฟ้า\nผีเรือน\nผีสาง\nผีเสื้อ\nผีห่า\nผึ่งผาย\nผุดผ่อง\nผุดผาด\nผู้คน\nผู้คุม\nผู้จัดการ\nผู้ชาย\nผู้เชี่ยวชาญ\nผู้ดี\nผู้โดยสาร\nผู้ต้องขัง\nผู้ต้องหา\nผู้แทน\nผู้น้อย\nผู้บริโภค\nผู้บังคับบัญชา\nผู้ปกครอง\nผู้ประกอบการ\nผู้ป่วย\nผู้พิพากษา\nผู้เยาว์\nผู้ร้าย\nผู้วิเศษ\nผู้สื่อข่าว\nผู้เสียหาย\nผู้หญิง\nผู้ใหญ่\nผู้ใหญ่บ้าน\nผูกขวัญ\nผูกขาด\nผูกพัน\nผูกมัด\nเผชิญหน้า\nเผด็จการ\nเผด็จศึก\nเผยแผ่\nเผยแพร่\nเผละผละ\nเผ่าพันธุ์\nเผื่อแผ่\nแผงลอย\nแผนการ\nแผนงาน\nแผนที่\nแผนผัง\nแผนภาพ\nแผนภูมิ\nแผ่นดิน\nแผ่นเสียง\nแผ้วพาน\nโผงผาง\nฝนทอง\nฝอยทอง\nฝักแค\nฝักบัว\nฝักฝ่าย\nฝักใฝ่\nฝังใจ\nฝังหัว\nฝาชี\nฝาแฝด\nฝาละมี\nฝ่าพระบาท\nฝ่าฝืน\nฝ่าฟัน\nฝ้าฟาง\nฝากตัว\nฝากฝัง\nฝีดาษ\nฝีมะม่วง\nฝีจักร\nฝีเท้า\nฝีปาก\nฝีพาย\nฝีมือ\nฝีเย็บ\nฝึกงาน\nฝึกปรือ\nฝึกฝน\nฝึกสอน\nฝึกหัด\nฝืดเคือง\nใฝ่ฝัน\nพงพี\nพงศ์พันธุ์\nพญาโศก\nพญาไฟ\nพบปะ\nพบพาน\nพรสวรรค์\nพรมคด\nพรมแดน\nพรมมิ\nพรรคพวก\nพรรณราย\nพรวดพราด\nพรหมชาติ\nพรหมลิขิต\nพรหมโลก\nพรหมวิหาร\nพร้อมใจ\nพร้อมพรั่ง\nพร้อมเพรียง\nพร้อมมูล\nพร้อมสรรพ\nพร้อมหน้า\nพระครู\nพระคุณ\nพระเคราะห์\nพระเครื่อง\nพระเจ้า\nพระเจ้าอยู่หัว\nพระชายา\nพระทัย\nพระนาง\nพระนางเจ้า\nพระเป็นเจ้า\nพระผู้เป็นเจ้า\nพระพิมพ์\nพระพุทธเจ้า\nพระพุทธองค์\nพระภูมิ\nพระยา\nพระรอง\nพระสนม\nพระสนมเอก\nพระองค์\nพระองค์เจ้า\nพระเอก\nพรั่งพร้อม\nพรั่งพรู\nพรั่นพรึง\nพร่างพราว\nพรายน้ำ\nพรายแพรว\nพราวแพรว\nพร่ำพลอด\nพร่ำเพรื่อ\nพร่ำเพ้อ\nพริกไทย\nพริ้งพราย\nพริ้งเพรา\nพริ้งเพริศ\nพริบตา\nพริ้มพราย\nพริ้มเพรา\nพรุ่งนี้\nพฤติกรรม\nพฤติการณ์\nพฤตินัย\nพลการ\nพลขับ\nพลความ\nพลเมือง\nพลรบ\nพลร่ม\nพลเรือน\nพลโลก\nพลศึกษา\nพลบค่ำ\nพลอดรัก\nพลังงาน\nพลังเงียบ\nพลังจิต\nพลั้งปาก\nพลั้งเผลอ\nพลั้งพลาด\nพลัดถิ่น\nพลัดพราก\nพลาดท่า\nพลาดพลั้ง\nพลิกแพลง\nพลีกรรม\nพลุ่งพล่าน\nพวกพ้อง\nพวงมาลัย\nพวงมาลา\nพวงหรีด\nพวงคราม\nพวงชมพู\nพวงแสด\nพ่วงพี\nพวยน้ำ\nพวยพุ่ง\nพสกนิกร\nพหุคูณ\nพหุภาคี\nพหูพจน์\nพหูสูต\nพอควร\nพอใจ\nพอใช้\nพอใช้ได้\nพอดี\nพอตัว\nพอทำเนา\nพอประมาณ\nพอเพียง\nพอแรง\nพอสมควร\nพอเหมาะ\nพ่อขุน\nพ่อครัว\nพ่อตา\nพ่อบ้าน\nพ่อพันธุ์\nพ่อม่าย\nพ่อเมือง\nพ่อเลี้ยง\nพ่อสื่อ\nพอกพูน\nพ้องพาน\nพักผ่อน\nพักพิง\nพักฟื้น\nพักร้อน\nพักแรม\nพัดยศ\nพัดลม\nพันพัว\nพับฐาน\nพับเพียบ\nพัวพัน\nพาซื่อ\nพาดพิง\nพิณพาทย์\nพิธีกร\nพิธีกรรม\nพิธีการ\nพิธีรีตอง\nพิธีสาร\nพินัยกรรม\nพิมพ์เขียว\nพิมพ์ใจ\nพิมพ์ดีด\nพิษสง\nพี่น้อง\nพี่เบิ้ม\nพี่เลี้ยง\nพึงใจ\nพึงพอใจ\nพึ่งพา\nพึ่งพิง\nพืชพันธุ์\nพืชมงคล\nพื้นฐาน\nพื้นที่\nพื้นบ้าน\nพื้นเพ\nพื้นเมือง\nพื้นเสีย\nพุพอง\nพุทธกาล\nพุทธคุณ\nพุทธจักร\nพุทธเจดีย์\nพุทธฎีกา\nพุทธปฏิมา\nพุทธปฏิมากร\nพุทธมามกะ\nพุทธศักราช\nพุทธศาสนิกชน\nพุทธองค์\nพุทธชาด\nพุทธรักษา\nพุ่มพวง\nพุ่มไม้\nพู่กัน\nพูดจา\nเพ่งเล็ง\nเพดานบิน\nเพดานปาก\nเพริศพราย\nเพริศพริ้ง\nเพริศแพร้ว\nเพรียกพร้อง\nเพรียวลม\nเพลงเชิด\nเพลงยาว\nเพลิงกัลป์\nเพลินใจ\nเพลินตา\nเพลี่ยงพล้ำ\nเพ้อฝัน\nเพาะกาย\nเพาะชำ\nเพาะปลูก\nเพิกถอน\nเพิกเฉย\nเพิ่มเติม\nเพิ่มพูน\nเพียงตา\nเพียงพอ\nเพียบแประ\nเพียบพร้อม\nเพื่อนเกลอ\nเพื่อนตาย\nเพื่อนบ้าน\nเพื่อนฝูง\nเพื่อนยาก\nแพ้ท้อง\nแพร่หลาย\nแพร่งพราย\nแพรวพราว\nโพธิญาณ\nโพธิบัลลังก์\nโพธิสมภาร\nโพธิสัตว์\nโพ้นทะเล\nโพยภัย\nไพ่ตาย\nไพ่ป๊อก\nไพรวัน\nไพรสณฑ์\nไพรสัณฑ์\nไพร่พล\nไพร่ฟ้า\nไพร่สม\nไพร่ส่วย\nไพร่หลวง\nฟกช้ำ\nฟองเต้าหู้\nฟองน้ำ\nฟองมัน\nฟ้องกลับ\nฟ้องร้อง\nฟอนเฟะ\nฟักทอง\nฟัดเฟียด\nฟันดาบ\nฟันฝ่า\nฟันแท้\nฟันน้ำนม\nฟันปลา\nฟันฟาง\nฟันเฟือง\nฟันม้า\nฟันเลื่อย\nฟันหนู\nฟั่นเฝือ\nฟั่นเฟือน\nฟื้นตัว\nฟื้นฝอย\nฟื้นฟู\nฟุ้งซ่าน\nฟุ้งเฟ้อ\nฟุ้งเฟื่อง\nฟุตบอล\nฟูฟ่อง\nฟูเฟื่อง\nฟูมฟัก\nฟูมฟาย\nเฟะฟะ\nเฟื่องฟ้า\nเฟื่องฟุ้ง\nเฟื่องฟู\nไฟฉาย\nไฟแช็ก\nไฟธาตุ\nไฟฟ้า\nภัตกิจ\nภาคทัณฑ์\nภาคพื้น\nภาคเรียน\nภาคภูมิ\nภาพถ่าย\nภาพนิ่ง\nภาพประกอบ\nภาพพจน์\nภาพยนตร์\nภาพลวงตา\nภาพลักษณ์\nภายนอก\nภายใน\nภายหน้า\nภายหลัง\nภารกิจ\nภารธุระ\nภารโรง\nภารตวิทยา\nภาษาศาสตร์\nภาสกร\nภิญโญภาพ\nภินชาติ\nภูธร\nภูธเรศ\nภูบาล\nภูเบศ\nภูเบศวร์\nภูเขา\nภูเขาไฟ\nภูผา\nภูตคาม\nภูตบดี\nภูตรูป\nภูเตศวร\nภูมินทร์\nภูมิบาล\nภูมิประเทศ\nภูมิภาค\nภูมิรัฐศาสตร์\nภูมิลำเนา\nภูมิศาสตร์\nภูมิอากาศ\nภูมิธรรม\nภูมิปัญญา\nภูมิรู้\nภูมิใจ\nภูมิฐาน\nภูมิคุ้มกัน\nภูมิแพ้\nภูษาโยง\nเภทภัย\nเภสัชกร\nเภสัชกรรม\nเภสัชวิทยา\nเภสัชศาสตร์\nโภคทรัพย์\nโภคภัณฑ์\nโภชนากร\nโภชนาการ\nมกุฎราชกุมาร\nมงคลแฝด\nมงคลสูตร\nมงคลหัตถี\nมณเฑียรบาล\nมดดำ\nมดแดง\nมดเท็จ\nมดยอบ\nมดลูก\nมธุปายาส\nมธุรส\nมนเทียรบาล\nมนุษย์กบ\nมโนกรรม\nมโนคติ\nมโนทุจริต\nมโนธรรม\nมโนภาพ\nมโนมัย\nมโนรถ\nมโนรมย์\nมโนสุจริต\nมรรคนายก\nมรรคผล\nมฤคชาติ\nมฤคทายวัน\nมฤคราช\nมลทิน\nมลพิษ\nมลสาร\nมวกเหล็ก\nม้วนหน้า\nมวยไทย\nมวยปล้ำ\nมวยล้ม\nมวยวัด\nมวยสากล\nมวยหมู่\nมวลสาร\nมอคราม\nมอซอ\nมอหมึก\nมองเมียง\nมอบตัว\nมอบหมาย\nมอมเมา\nมะขามเทศ\nมะขามป้อม\nมะขามเปียก\nมะเขือเทศ\nมะเขือพวง\nมะพร้าวแก้ว\nมักคุ้น\nมักจี่\nมักง่าย\nมักน้อย\nมักมาก\nมักใหญ่\nมั่งคั่ง\nมั่งมี\nมัจจุราช\nมัชฌิมนิกาย\nมัชฌิมประเทศ\nมัชฌิมยาม\nมัชฌิมวัย\nมัดจำ\nมัดหมี่\nมัธยมกาล\nมัธยมศึกษา\nมันแกว\nมันเทศ\nมันฝรั่ง\nมันเปลว\nมันสมอง\nมั่นคง\nมั่นใจ\nมั่นหมาย\nมั่นเหมาะ\nมัวเมา\nมัวหมอง\nมั่วสุม\nม้าเทศ\nม้าน้ำ\nม้ามืด\nม้าเร็ว\nม้าล่อ\nม้าลาย\nมากมาย\nมาตรการ\nมาตรฐาน\nมาตราส่วน\nมาตุคาม\nมาตุฆาต\nมาตุภูมิ\nม่านตา\nม่านบังตา\nมายากร\nมายากล\nมายาการ\nมายาวี\nมารผจญ\nมารวิชัย\nมารสังคม\nมารหัวขน\nมาลาการ\nมิ่งขวัญ\nมิ่งมิตร\nมิจฉาจาร\nมิจฉาชีพ\nมิดชิด\nมิดเมี้ยน\nมิดหมี\nมิตรจิต\nมิตรภาพ\nมิตรสหาย\nมิน่า\nมีหน้า\nมีดโกน\nมีดดาบ\nมีดโต้\nมีดพก\nมีดพับ\nมีดสั้น\nมึนงง\nมึนชา\nมึนตึง\nมึนเมา\nมืดครึ้ม\nมืดมน\nมืดมัว\nมือจับ\nมือดี\nมือเติบ\nมือปืน\nมือเปล่า\nมือมืด\nมือสอง\nมือเสือ\nมือหนึ่ง\nมือใหม่\nมุกตลก\nมุขปาฐะ\nมุขมนตรี\nมุ่งมั่น\nมุ่งมาด\nมุ่งหน้า\nมุ่งหมาย\nมุ่งหวัง\nมุ้งลวด\nมุ้งสายบัว\nมุมก้ม\nมุมกลับ\nมุมเงย\nมุมฉาก\nมุมตรง\nมุมป้าน\nมุมมืด\nมุมแย้ง\nมุมสะท้อน\nมุมหักเห\nมุมแหลม\nมุสาวาท\nมูกเลือด\nมูกมัน\nมูกหลวง\nมูนดิน\nมูลฐาน\nมูลนาย\nมูลนิธิ\nมูลเหตุ\nมูลค่า\nมูลฝอย\nเม็ดเงิน\nเม็ดเลือด\nเม็ดโลหิต\nเม่นทะเล\nเมรุมาศ\nเมรุราช\nเมล์อากาศ\nเมาดิบ\nเมามัน\nเมามัว\nเมามาย\nเมินเฉย\nเมียน้อย\nเมียหลวง\nเมียงมอง\nเมี่ยงลาว\nเมี่ยงส้ม\nเมื่อกี้\nเมื่อตะกี้\nเมื่อใด\nเมื่อไร\nเมื่อไหร่\nเมื่อนั้น\nเมืองขึ้น\nเมืองท่า\nเมืองนอก\nเมืองหลวง\nเมื่อยขบ\nเมื่อยล้า\nแม่กอง\nแม่กุญแจ\nแม่คุณ\nแม่งาน\nแม่เจ้า\nแม่ชี\nแม่ทัพ\nแม่นม\nแม่น้ำ\nแม่บท\nแม่บ้าน\nแม่เบี้ย\nแม่พระ\nแม่พิมพ์\nแม่เพลง\nแม่มด\nแม่ม่าย\nแม่ไม้\nแม่ยก\nแม่ยาย\nแม่ร้าง\nแม่เรือน\nแม่แรง\nแม่เล้า\nแม่เลี้ยง\nแม่สี\nแม่สื่อ\nแม่เหล็ก\nแมงมุม\nแม่นยำ\nแมลงช้าง\nแมลงวัน\nแมลงปอ\nแมลงภู่\nแมลงเม่า\nแมวเซา\nแมวน้ำ\nแมวป่า\nแมวมอง\nไม้กลัด\nไม้กวาด\nไม้กางเขน\nไม้เกาหลัง\nไม้ขีดไฟ\nไม้จิ้มฟัน\nไม้เด็ด\nไม้ตาย\nไม้ตีพริก\nไม้ที\nไม้เท้า\nไม้บรรทัด\nไม้เมตร\nไม้ระแนง\nไม้เรียว\nไม้หมอน\nไม้อัด\nไม้จัตวา\nไม้ตรี\nไม้ไต่คู้\nไม้โท\nไม้ผัด\nไม้มลาย\nไม้ม้วน\nไม้ยมก\nไม้หน้า\nไม้หันอากาศ\nไม้เอก\nยกกลีบ\nยกครู\nยกเครื่อง\nยกเค้า\nยกทรง\nยกฟ้อง\nยกเมฆ\nยกยอ\nยกย่อง\nยกเลิก\nยกเว้น\nย่นย่อ\nยมทูต\nยมบาล\nยมราช\nยมโลก\nยวดยิ่ง\nยวดยาน\nยวนยี\nยวบยาบ\nย่อท้อ\nย่อส่วน\nย่อหน้า\nย่อหย่อน\nยอกย้อน\nยองใย\nย่องเบา\nย่องแย่ง\nยอดเยี่ยม\nยอดอก\nย้อนยอก\nย้อนรอย\nย้อนศร\nย้อนแสง\nย้อนหลัง\nยอบแยบ\nยอมความ\nย่อมเยา\nย่อยยับ\nยักยอก\nยักย้าย\nยักเยื้อง\nยัญกรรม\nยัญพิธี\nยัดเยียด\nยับเยิน\nยับยั้ง\nยั่วยวน\nยั่วยุ\nยั่วเย้า\nยากวาด\nยากันยุง\nยาเขียว\nยาใจ\nยาฉุน\nยาชา\nยาซัด\nยาดอง\nยาแดง\nยาถ่าย\nยาธาตุ\nยานัตถุ์\nยาเบื่อ\nยาโป๊\nยาแฝด\nยาพิษ\nยาระบาย\nยาสลบ\nยาสั่ง\nยาสีฟัน\nยาสูบ\nยาเส้น\nยาเสพติด\nยาหม่อง\nยาเหลือง\nย่าทวด\nย่านาง\nยากแค้น\nยากจน\nยากเย็น\nยากไร้\nยางนอก\nยางใน\nยางมะตอย\nยางมะตูม\nยางลบ\nยางสน\nยางอาย\nย่างกราย\nย่างเยื้อง\nย่างสด\nย่างสามขุม\nย่างเหยียบ\nยานเกราะ\nยานพาหนะ\nยานอวกาศ\nยานคาง\nยายทวด\nยาวเฟื้อย\nยาวยืด\nยาวเหยียด\nยำทวาย\nยำใหญ่\nยำเกรง\nยำเยง\nย่ำต๊อก\nย่ำยี\nย่ำแย่\nยิงเป้า\nยิ่งนัก\nยิ่งยวด\nยิ่งใหญ่\nยินดี\nยินยอม\nยินร้าย\nยิ้มกริ่ม\nยิ้มแฉ่ง\nยิ้มแต้\nยิ้มแป้น\nยิ้มเผล่\nยิ้มเยาะ\nยิ้มแย้ม\nยียวน\nยึดครอง\nยึดถือ\nยึดมั่น\nยึดเหนี่ยว\nยืดยาด\nยืดยาว\nยืดเยื้อ\nยืดหยุ่น\nยืดอก\nยืนกราน\nยืนต้น\nยืนพื้น\nยืนยง\nยืนยัน\nยืนหยัด\nยื้อยุด\nยุยง\nยุแยง\nยุแหย่\nยุคลบาท\nยุคเข็ญ\nยุคทอง\nยุคมืด\nยุ่งขิง\nยุ่งยาก\nยุ่งเหยิง\nยุติธรรม\nยุทธการ\nยุทธนาวี\nยุทธปัจจัย\nยุทธภัณฑ์\nยุทธภูมิ\nยุทธวิธี\nยุทธศาสตร์\nยุทธหัตถี\nยุทธนาการ\nยุทธนาธิการ\nยุบยับ\nยุบยิบ\nยุพราช\nยู่ยี่\nเย็นเจี๊ยบ\nเย็นใจ\nเย็นฉ่ำ\nเย็นเฉียบ\nเย็นชา\nเย็นชืด\nเย็นตา\nเย็นเยียบ\nเย็นเยือก\nเย็นวาบ\nเย็นวูบ\nเย็บกี่\nเย็บจักร\nเย็บด้าย\nเย้ยหยัน\nเย้าหยอก\nเยาะเย้ย\nเยี่ยมกราย\nเยี่ยมเยียน\nเยี่ยมเยือน\nเยี่ยมยอด\nเยื่อเคย\nเยื่อใย\nเยือกเย็น\nเยื้องกราย\nเยื้องยัก\nเยื้องย่าง\nแยกย้าย\nแยกแยะ\nแย่งชิง\nแยบคาย\nแยบยล\nแย้มพราย\nแย้มยิ้ม\nแย้มสรวล\nโยเย\nโย้เย้\nโยกโคลง\nโยกย้าย\nโยกโย้\nโยนกลอง\nใยหิน\nรกชัฏ\nรกร้าง\nรกเรี้ยว\nรกเรื้อ\nรกราก\nรงควัตถุ\nรชนีกร\nรถกระบะ\nรถเก๋ง\nรถเข็น\nรถแข่ง\nรถจักร\nรถจี๊ป\nรถตู้\nรถทัวร์\nรถบรรทุก\nรถพ่วง\nรถพยาบาล\nรถไฟ\nรถไฟฟ้า\nรถม้า\nรถเมล์\nรถยนต์\nรถราง\nรถลาก\nรถสปอร์ต\nรถสิบล้อ\nรบกวน\nรบรา\nรบเร้า\nรมดำ\nร่มเกล้า\nร่มชูชีพ\nร่มเย็น\nร่มรื่น\nร่วงโรย\nรวงผึ้ง\nรวงรัง\nรวดเร็ว\nรวนเร\nรวบยอด\nรวบรวม\nรวบรัด\nรวมพล\nรวมหัว\nร่วมใจ\nร่วมเพศ\nร่วมมือ\nร่วมรัก\nร่วมสมัย\nรวยริน\nรวยรื่น\nรสชาติ\nรสนิยม\nรองท้อง\nรองเท้า\nรองพื้น\nร่องน้ำ\nร่องรอย\nร้องขอ\nร้องทุกข์\nร้องเรียน\nร้องห่ม\nร้องไห้\nรองช้ำ\nรองทรง\nรอดชีวิต\nรอดตัว\nรอดตาย\nรอนแรม\nร่อนเร่\nร้อนใจ\nร้อนตัว\nร้อนรน\nร้อนรุ่ม\nร้อนวิชา\nร้อนอาสน์\nรอบจัด\nรอบเดือน\nรอบรู้\nรอยร้าว\nร่อยหรอ\nร้อยละ\nร้อยกรอง\nร้อยแก้ว\nร้อยหวาย\nระนาดทุ้ม\nระนาดเอก\nระเบิดขวด\nระเบิดมือ\nระเบียบการ\nรักใคร่\nรักษาการ\nรักษาการณ์\nรังไข่\nรังแตน\nรังนก\nรังผึ้ง\nรังเพลิง\nรังมด\nรังสรรค์\nรังสฤษฏ์\nรั้งรอ\nรังสีแพทย์\nรังสีวิทยา\nรัชกาล\nรัชทายาท\nรัชนีกร\nรัฐธรรมนูญ\nรัฐบาล\nรัฐบุรุษ\nรัฐประศาสน์\nรัฐประหาร\nรัฐพิธี\nรัฐมนตรี\nรัฐวิสาหกิจ\nรัฐศาสตร์\nรัฐสภา\nรัดกุม\nรัดเกล้า\nรัดตัว\nรัดประคด\nรัดรึง\nรัดรูป\nรัตติกาล\nรับขวัญ\nรับจ้าง\nรับช่วง\nรับใช้\nรับซื้อ\nรับทราบ\nรับประกัน\nรับประทาน\nรับปาก\nรับผิด\nรับผิดชอบ\nรับฟ้อง\nรับฟัง\nรับมือ\nรับรอง\nรับรู้\nรับสมัคร\nรับสั่ง\nรับหน้า\nรับเหมา\nรั่วไหล\nรามือ\nร่าเริง\nรากแก้ว\nรากขวัญ\nรากฐาน\nรากฟัน\nรากศัพท์\nรากเหง้า\nร่างกาย\nร่างแห\nร้างรา\nราชกรณียกิจ\nราชการ\nราชกิจ\nราชครู\nราชฐาน\nราชทัณฑ์\nราชทินนาม\nราชทูต\nราชธานี\nราชนาวี\nราชบัณฑิต\nราชบัลลังก์\nราชบาตร\nราชบุตร\nราชปะแตน\nราชภัฏ\nราชมัล\nราชยาน\nราชรถ\nราชลัญจกร\nราชเลขาธิการ\nราชเลขานุการ\nราชวงศ์\nราชวัติ\nราชสกุล\nราชสมบัติ\nราชสาส์น\nราชหัตถเลขา\nราชองครักษ์\nราชโองการ\nราชาคณะ\nราชาศัพท์\nราชินีนาถ\nร้านชำ\nร้านรวง\nราบคาบ\nราบรื่น\nราบเรียบ\nรายการ\nรายงาน\nรายจ่าย\nรายได้\nรายทาง\nรายรับ\nรายล้อม\nรายละเอียด\nรายวิชา\nร่ายยาว\nร่ายรำ\nร้ายกาจ\nร้ายแรง\nราวนม\nราวป่า\nร้าวฉาน\nร้าวราน\nรำพัด\nรำแพน\nรำวง\nร่ำไป\nร่ำร้อง\nร่ำเรียน\nร่ำไร\nร่ำลา\nร่ำไห้\nริเริ่ม\nริอ่าน\nริมฝีปาก\nริ้วรอย\nรีบร้อน\nรีบรุด\nรีบเร่ง\nรื่นรมย์\nรื่นเริง\nรื้อถอน\nรื้อฟื้น\nรุกฆาต\nรุกราน\nรุกล้ำ\nรุกไล่\nรุ่งขึ้น\nรุ่งแจ้ง\nรุ่งเช้า\nรุ่งเรือง\nรุ่งโรจน์\nรุ่งสว่าง\nรุ่งสาง\nรุ่งอรุณ\nรุจิเรข\nรุดหน้า\nรุนแรง\nรุมเร้า\nรุมล้อม\nรุ่มรวย\nรุ่มร้อน\nรุ่ยร่าย\nรู้แกว\nรู้ความ\nรู้คุณ\nรู้งาน\nรู้จัก\nรู้แจ้ง\nรู้ใจ\nรู้เชิง\nรู้ตัว\nรู้ทัน\nรู้เท่า\nรู้เรื่อง\nรู้สำนึก\nรู้สึก\nรู้เห็น\nรูปการณ์\nรูปโฉม\nรูปฌาน\nรูปถ่าย\nรูปทรง\nรูปธรรม\nรูปแบบ\nรูปพรรณ\nรูปพรหม\nรูปภพ\nรูปภาพ\nรูปร่าง\nรูปสมบัติ\nเร่ร่อน\nเร่งด่วน\nเร่งมือ\nเร่งรัด\nเร่งรีบ\nเร่งเร้า\nเร้นลับ\nเร่อร่า\nเร่าร้อน\nเราะราย\nเราะร้าย\nเริงใจ\nเริงรมย์\nเริดร้าง\nเริ่มต้น\nเริ่มแรก\nเรี่ยราด\nเรี่ยไร\nเรียกคืน\nเรียกตัว\nเรียกร้อง\nเรียกหา\nเรียบร้อย\nเรียงความ\nเรียงตัว\nเรียงเบอร์\nเรียงพิมพ์\nเรียงเม็ด\nเรียงราย\nเรียนรู้\nเรียบร้อย\nเรียบเรียง\nเรียบวุธ\nเรี่ยมเร้\nเรี่ยวแรง\nเรือกลไฟ\nเรือกอและ\nเรือกำปั่น\nเรือจ้าง\nเรือดำน้ำ\nเรือโดยสาร\nเรือตรวจการณ์\nเรือตังเก\nเรือธง\nเรือนำร่อง\nเรือบด\nเรือบิน\nเรือใบ\nเรือประมง\nเรือพ่วง\nเรือพิฆาต\nเรือยนต์\nเรือยาว\nเรือโยง\nเรือรบ\nเรือลากจูง\nเรือสำปั้น\nเรือสำเภา\nเรือหลวง\nเรือหางยาว\nเรืออีโปง\nเรือเอี้ยมจุ๊น\nเรื้อรัง\nเรือกสวน\nเรืองนาม\nเรืองรอง\nเรืองแสง\nเรื่องราว\nเรื่องสั้น\nเรือนแก้ว\nเรือนจำ\nเรือนเบี้ย\nเรือนแพ\nเรือนหอ\nเรื่อยเจื้อย\nเรื่อยเฉื่อย\nเรื่อยเปื่อย\nแรเงา\nแรกนา\nแรกนาขวัญ\nแรงงาน\nแรงดึงดูด\nแรงเทียน\nแรงม้า\nแรงเหวี่ยง\nแรมรอน\nแรมรา\nแรมโรย\nโรคจิต\nโรงครัว\nโรงงาน\nโรงเจ\nโรงเตี๊ยม\nโรงทาน\nโรงนา\nโรงพยาบาล\nโรงพัก\nโรงพิมพ์\nโรงเรียน\nโรงเรือน\nโรงแรม\nโรงเลี้ยง\nโรงเลื่อย\nโรงสี\nโรงสีข้าว\nโรงอาหาร\nโรมรัน\nโรยรา\nฤชากร\nฤดูกาล\nลงขัน\nลงแขก\nลงคอ\nลงตัว\nลงท้าย\nลงทุน\nลงโทษ\nลงพุง\nลงมือ\nลงรัก\nลงรอย\nลงแรง\nลงโรง\nลงเอย\nลดตัว\nลดละ\nลดเลี้ยว\nลดหย่อน\nลดหลั่น\nลนลาน\nล้นพ้น\nล้นหลาม\nล้นเหลือ\nลบล้าง\nลบเลือน\nลบหลู่\nลมกรด\nลมค้า\nลมงวง\nลมแดด\nลมทะเล\nลมบก\nลมบน\nลมบ้าหมู\nลมปราณ\nลมปาก\nลมพิษ\nลมว่าว\nลมเสีย\nลมหนาว\nลมหายใจ\nล่มจม\nล่มสลาย\nล้มละลาย\nล้มลุก\nล้มเลิก\nล่วงเกิน\nล่วงรู้\nล่วงละเมิด\nล่วงลับ\nล่วงล้ำ\nล่วงเลย\nล่วงหน้า\nลวดลาย\nลวดสปริง\nลวดหนาม\nล้วนแล้ว\nลหุโทษ\nล่อลวง\nล่อหลอก\nล่อแหลม\nล้อต๊อก\nล้อเลื่อน\nล้อเล่น\nล้อเลียน\nล้อหลอก\nลองเชิง\nลองดี\nลองภูมิ\nล่องหน\nลอดช่อง\nล่อนจ้อน\nลอบกัด\nล้อมวง\nลอยแก้ว\nลอยชาย\nลอยตัว\nลอยนวล\nลอยแพ\nลอยลำ\nละทิ้ง\nละเลย\nละเว้น\nละครนอก\nละครใน\nละครเพลง\nละครร้อง\nละครรำ\nละครลิง\nละครสัตว์\nละเอียดอ่อน\nลักไก่\nลักพา\nลักเพศ\nลักยิ้ม\nลักลอบ\nลักลั่น\nลักหลับ\nลัดเลาะ\nลับตา\nลับแล\nลับหลัง\nลาออก\nล่าช้า\nล่าทัพ\nล้าสมัย\nล้าหลัง\nลากข้าง\nล้างบาง\nล้างผลาญ\nลาดเขา\nลาดตระเวน\nลาดเท\nลาดยาง\nลานบิน\nลาภปาก\nลาภลอย\nลามปาม\nลามเลีย\nลายคราม\nลายเซ็น\nลายแทง\nลายน้ำ\nลายพร้อย\nลายมือ\nลายลักษณ์\nลายเส้น\nลำกล้อง\nลำแข้ง\nลำธาร\nลำแสง\nลำไส้\nลำตัด\nลำนำ\nล่ำสัน\nล้ำยุค\nล้ำสมัย\nล้ำลึก\nล้ำเลิศ\nล้ำเส้น\nล้ำหน้า\nลิงจุ่น\nลิงลม\nลิงโลด\nลิดรอน\nลิ้นไก่\nลิ้นชัก\nลิ้นปี่\nลิ้นควาย\nลิ้นงูเห่า\nลิ้นหมา\nลิบลับ\nลิบลิ่ว\nลิ่มเลือด\nลี้ภัย\nลี้ลับ\nลึกซึ้ง\nลึกลับ\nลึกล้ำ\nลืมตน\nลืมต้น\nลืมตัว\nลืมตา\nลืมเลือน\nลือชา\nลือชื่อ\nลือลั่น\nลุล่วง\nลุกลน\nลุกลาม\nลุกลี้ลุกลน\nลุกฮือ\nลุ่มน้ำ\nลุ่มลึก\nลุ่มหลง\nลุ่ทาง\nลูกกรง\nลูกกรอก\nลูกกรุง\nลูกกลอน\nลูกกลิ้ง\nลูกกวาด\nลูกกะจ๊อก\nลูกกุญแจ\nลูกเกด\nลูกแก้ว\nลูกขนไก่\nลูกข่าง\nลูกขุน\nลูกเขย\nลูกครึ่ง\nลูกคลื่น\nลูกความ\nลูกคอ\nลูกค้า\nลูกคิด\nลูกคู่\nลูกจ้าง\nลูกช้าง\nลูกชิด\nลูกชิ้น\nลูกชุบ\nลูกซอง\nลูกโซ่\nลูกดอก\nลูกดิ่ง\nลูกตะกั่ว\nลูกตุ้ม\nลูกเต้า\nลูกเต๋า\nลูกถ้วย\nลูกทุ่ง\nลูกเธอ\nลูกน้อง\nลูกน้ำ\nลูกนิมิต\nลูกบอล\nลูกบ้าน\nลูกบาศก์\nลูกบิด\nลูกเบี้ยว\nลูกประคบ\nลูกประคำ\nลูกปัด\nลูกปืน\nลูกโป่ง\nลูกผสม\nลูกผู้ชาย\nลูกผู้หญิง\nลูกพรรค\nลูกพี่\nลูกฟูก\nลูกไฟ\nลูกมือ\nลูกโม่\nลูกไม้\nลูกยาเธอ\nลูกรอก\nลูกรัง\nลูกเรือ\nลูกล้อ\nลูกลอย\nลูกเล่น\nลูกเลี้ยง\nลูกโลก\nลูกวัด\nลูกศร\nลูกศิษย์\nลูกสมุน\nลูกสะใภ้\nลูกสูบ\nลูกเสือ\nลูกหนัง\nลูกหนี้\nลูกหนู\nลูกหมาก\nลูกหลง\nลูกหลาน\nลูกหาบ\nลูกหิน\nลูกเห็บ\nลูกเหม็น\nลูกแหง่\nลูกอม\nลูกหม้อ\nลูบคม\nลูบคลำ\nลูบไล้\nเล็กน้อย\nเลขคณิต\nเลขผา\nเลขหมาย\nเล็ดลอด\nเล่นงาน\nเล่นแง่\nเล่นชู้\nเล่นตัว\nเล่นลิ้น\nเล่นหัว\nเลนส์นูน\nเลนส์เว้า\nเล็บครุฑ\nเลยเถิด\nเลศนัย\nเล่ห์กล\nเล่ห์เหลี่ยม\nเลอโฉม\nเลอมาน\nเลอเลิศ\nเลอสรวง\nเล่อล่า\nเลอะเลือน\nเล่าเรียน\nเล่าลือ\nเลาะลัด\nเลิกรา\nเลิกร้าง\nเลิกล้ม\nเลิศเลอ\nเลี้ยงชีพ\nเลี้ยงดู\nเลี้ยงต้อย\nเลียบเคียง\nเลี้ยวลด\nเลือกตั้ง\nเลือกเฟ้น\nเลือกสรร\nเลื่องลือ\nเลือดกำเดา\nเลือดเนื้อ\nเลือดฝาด\nเลือดเย็น\nเลือดร้อน\nเลือดหมู\nเลือดอุ่น\nเลือนราง\nเลื่อนเปื้อน\nเลื่อนลอย\nเลื่อมพราย\nเลื่อมใส\nเลื่อยฉลุ\nเลื่อยลันดา\nเลื่อยวงเดือน\nเลื้อยคลาน\nแลเหลียว\nแลกเปลี่ยน\nแล้วกัน\nและเล็ม\nโล่งใจ\nโล่งโถง\nโล่งอก\nโลดเต้น\nโลดโผน\nโลดลิ่ว\nโลดแล่น\nไล่ที่\nไล่เบี้ย\nไล่เลี่ย\nไล่เลียง\nไล่หลัง\nไล่ออก\nวกวน\nวงกบ\nวงกลม\nวงการ\nวงแขน\nวงเงิน\nวงจร\nวงนอก\nวงใน\nวงรี\nวงเล็บ\nวงเวียน\nวงแหวน\nวงศ์วาน\nวจีกรรม\nวจีเภท\nวจีภาค\nวนเวียน\nวอดวาย\nว็อบแว็บ\nวังวน\nวังหน้า\nวังหลวง\nวังหลัง\nวัดราษฎร์\nวัดวา\nวัดหลวง\nวัดผล\nวัดพื้น\nวัตถุนิยม\nวัตถุประสงค์\nวัตรปฏิบัติ\nวันโกน\nวันพระ\nวันเพ็ญ\nวัยรุ่น\nวัยวุฒิ\nว่ากล่าว\nว่าจ้าง\nว่าด้วย\nว่าที่\nวางก้าม\nวางใจ\nวางตัว\nวางตา\nวางโต\nวางท่า\nวางมวย\nวางมาด\nวางมือ\nวางวาย\nว่างเปล่า\nว่างเว้น\nวาดเขียน\nว่านเครือ\nวาบหวาม\nวายชนม์\nวายปราณ\nวายวาง\nวายวอด\nวายร้าย\nวายุภักษ์\nวาววับ\nวาววาม\nวาวแวว\nวาวแสง\nวิกฤตการณ์\nวิกฤติการณ์\nวิกฤตกาล\nวิกฤติกาล\nวิกลจริต\nวิงเวียน\nวิ่งเต้น\nวิ่งผลัด\nวิ่งรอก\nวิ่งราว\nวิจิตรศิลป์\nวิชาการ\nวิชาชีพ\nวิชาธร\nวิญญูชน\nวิดพื้น\nวิตกจริต\nวิถีทาง\nวิทยากร\nวิทยากล\nวิทยาการ\nวิทยาเขต\nวิทยาทาน\nวิทยาธร\nวิทยานิพนธ์\nวิทยาศาสตร์\nวิเทศสัมพันธ์\nวิธีการ\nวินัยธร\nวินัยปิฎก\nวินาศกรรม\nวินาศภัย\nวินาศสันตะโร\nวิภัชพยากรณ์\nวิภัชวาที\nวิไลวรรณ\nวิสัญญีแพทย์\nวิสัญญีภาพ\nวิสัญญีวิทยา\nวุฒิบัตร\nวุฒิสภา\nวุฒิสมาชิก\nวุ่นวาย\nวุ้นเส้น\nวูบวาบ\nเวจกุฎี\nเวจมรรค\nเวชกรรม\nเวชภัณฑ์\nเวชศาสตร์\nเวทมนตร์\nเวนคืน\nเวรกรรม\nเวฬุการ\nเวฬุวัน\nเว้าวอน\nเวิ้งว้าง\nเวียงวัง\nเวียนเทียน\nแว้งกัด\nแวดล้อม\nแวดวง\nแว่นขยาย\nแว่นแคว้น\nแว่นตา\nแวบวับ\nแววตา\nแวววาม\nแวววาว\nแวะเวียน\nโวยวาย\nไวไฟ\nไว้ใจ\nไว้ชื่อ\nไว้ตัว\nไว้ทุกข์\nไว้ลาย\nไว้หน้า\nไว้อาลัย\nศนิวาร\nศอกกลับ\nศอกกำ\nศอกกำมา\nศักดิ์ศรี\nศักดิ์สิทธิ์\nศารทวิษุวัติ\nศาลแขวง\nศาลจังหวัด\nศาลชั้นต้น\nศาลฎีกา\nศาลเตี้ย\nศาลทหาร\nศาลปกครอง\nศาลพระภูมิ\nศาลเพียงตา\nศาลแพ่ง\nศาลรัฐธรรมนูญ\nศาลแรงงาน\nศาลล้มละลาย\nศาลโลก\nศาลสูง\nศาลสูงสุด\nศาลอาญา\nศาลอุทธรณ์\nศาลากลาง\nศาลาดิน\nศาลาราย\nศาลาวัด\nศิลาฤกษ์\nศิลาแลง\nศิษย์เก่า\nศิษย์เอก\nศีลจุ่ม\nศีลธรรม\nศีลวัต\nศีลอด\nศูนย์กลาง\nศูนย์การค้า\nศูนย์ถ่วง\nศูนย์สูตร\nศูนย์หน้า\nเศร้าใจ\nเศร้าโศก\nเศร้าสร้อย\nเศร้าสลด\nเศร้าหมอง\nเศวตฉัตร\nเศษเกิน\nเศษซ้อน\nเศษวรรค\nเศษส่วน\nเศษเหล็ก\nโศกนาฏกรรม\nโศกศัลย์\nโศกเศร้า\nโศกสลด\nสกลโลก\nส่งเดช\nส่งท้าย\nส่งเสริม\nส่งเสีย\nส่งเสียง\nสงบเงียบ\nสงบเสงี่ยม\nสง่างาม\nสง่าราศี\nสดชื่น\nสดใส\nสตรีเพศ\nสติปัญญา\nสถลมารค\nสถานกงสุล\nสถานที่\nสถานทูต\nสถานการณ์\nสถานภาพ\nสถิติศาสตร์\nสนตะพาย\nสนใจ\nส้นตีน\nสนธิสัญญา\nสนนราคา\nสนับแข้ง\nสนับเพลา\nสนับมือ\nสนามบิน\nสนามเพลาะ\nสนิทสนม\nสนิมขุม\nสนิมสร้อย\nสนุกสนาน\nสบประมาท\nสบายใจ\nสภาพธรรม\nสมควร\nสมจริง\nสมใจ\nสมนัย\nสมน้ำหน้า\nสมประกอบ\nสมส่วน\nสมหวัง\nสมคบ\nสมทบ\nสมยอม\nสมรัก\nสมรู้\nสมสู่\nส้มฉุน\nส้มตำ\nส้มลิ้ม\nส้มกุ้ง\nส้มเช้า\nสมญานาม\nสมมติฐาน\nสมมุติฐาน\nสมมติเทพ\nสมรภูมิ\nสมัครใจ\nสมัยนิยม\nสมุทรศาสตร์\nสมุทรเสนา\nสยดสยอง\nสยองขวัญ\nสยามรัฐ\nสรรหา\nสรวมชีพ\nสรวลเส\nสร้อยเศร้า\nสร้างสรรค์\nสร้างเสริม\nสลดใจ\nสลบไสล\nสละสลวย\nสลาเหิน\nสลากภัต\nสวนครัว\nสวนป่า\nสวนสนุก\nสวนหย่อม\nส่วนกลาง\nส่วนเกิน\nส่วนตัว\nส่วนบุญ\nส่วนแบ่ง\nส่วนประกอบ\nส่วนพระองค์\nส่วนผสม\nส่วนรวม\nส่วนร่วม\nส่วนลด\nส่วนสัด\nสวมกอด\nสวมเขา\nสวมรอย\nสวยมภู\nสว่างไสว\nสวามิภักดิ์\nสวิงสวาย\nสสารนิยม\nส่อเสียด\nสอดคล้อง\nสอดแทรก\nสอดแนม\nสอบถาม\nสอบทาน\nสอบไล่\nสอบสวน\nส้อมเสียง\nสะสวย\nสะแกวัลย์\nสะแกแสง\nสะใจ\nสะเด็ดยาด\nสะเทือนใจ\nสะบัดช่อ\nสั่งสม\nสั่งสอน\nสั่งเสีย\nสังเกตการณ์\nสังคมนิยม\nสังคมวิทยา\nสังคมศาสตร์\nสังคมศึกษา\nสังคมสงเคราะห์\nสัญญาบัตร\nสัดส่วน\nสัตการ\nสัตบุรุษ\nสัตบริภัณฑ์\nสัตภัณฑ์\nสัตมหาสถาน\nสัตโลหะ\nสันเขา\nสันดอน\nสันหลัง\nสั่นเทา\nสั่นเทิ้ม\nสันติบาล\nสันติภาพ\nสันติวิธี\nสันติสุข\nสับเปลี่ยน\nสับสน\nสับหลีก\nสับหว่าง\nสัมมาคารวะ\nสัมมาชีพ\nส่าเหล้า\nสากกะเบือ\nสาทิสลักษณ์\nสาธุการ\nสาธุชน\nสาบเสือ\nสาปสรร\nสาปแช่ง\nสาปส่ง\nสามง่าม\nสามล้อ\nสามเหลี่ยม\nสามเวท\nสามัญชน\nสามัญสำนึก\nสายดิ่ง\nสายดิน\nสายตรวจ\nสายน้ำ\nสายบัว\nสายพาน\nสายฟ้า\nสายยาง\nสายยู\nสายใย\nสายรก\nสายรุ้ง\nสายล่อฟ้า\nสายลับ\nสายเลือด\nสายโลหิต\nสายวัด\nสายส่ง\nสายสวาท\nสายสะดือ\nสายสะพาย\nสายสัมพันธ์\nสายสิญจน์\nสายสืบ\nสายไหม\nสายอากาศ\nสายตา\nสายหยุด\nสารตรา\nสารประกอบ\nสารละลาย\nสารส้ม\nสารหนู\nสารทฤดู\nสาวใช้\nสาวน้อย\nสาวใหญ่\nสำนักงาน\nสำนักพิมพ์\nสำนักสงฆ์\nสำมะโนครัว\nสำเร็จรูป\nสิกขาบท\nสิงสถิต\nสิงสู่\nสิ่งก่อสร้าง\nสิ่งของ\nสิ่งปฏิกูล\nสิ่งพิมพ์\nสิ่งแวดล้อม\nสิ่งศักดิ์สิทธิ์\nสิทธิกร\nสิทธิ์ขาด\nสิทธิชัย\nสิทธิโชค\nสิทธิบัตร\nสินค้า\nสินจ้าง\nสินเชื่อ\nสินไถ่\nสินทรัพย์\nสินน้ำใจ\nสินบน\nสินแร่\nสินสมรส\nสินสอด\nสินไหม\nสิ้นเชิง\nสิ้นสุด\nสีผึ้ง\nสีลม\nสีชอล์ก\nสีถ่าน\nสีเทียน\nสีน้ำ\nสีน้ำมัน\nสีโปสเตอร์\nสีฝุ่น\nสี่เหลี่ยม\nสีหน้า\nสึกหรอ\nสืบทอด\nสืบค้น\nสืบสวน\nสืบสาว\nสืบเสาะ\nสื่อผสม\nสื่อมวลชน\nสื่อสาร\nสุกงอม\nสุกดิบ\nสุกปลั่ง\nสุกใส\nสุขนาฏกรรม\nสุขภัณฑ์\nสุขภาพ\nสุขลักษณะ\nสุขวิทยา\nสุขศาลา\nสุขศึกษา\nสุดท้าย\nสุตกวี\nสุนทรพจน์\nสุภาพชน\nสู่ขอ\nสู่รู้\nสู่สม\nสูงส่ง\nสูญเปล่า\nสูญสิ้น\nสูญเสีย\nสูญหาย\nเสสรวล\nเสแสร้ง\nเสกสรร\nเสถียรภาพ\nเส้นชัย\nเส้นตรง\nเส้นตาย\nเส้นทาง\nเส้นใย\nเส้นรุ้ง\nเส้นเลือด\nเส้นแวง\nเส้นสาย\nเส้นเสียง\nเส้นหมี่\nเส้นเอ็น\nเสบียงกรัง\nเสมอภาค\nเสมอหน้า\nเสมอเหมือน\nเสมียนตรา\nเสร็จสรรพ\nเสร็จสิ้น\nเสริมส่ง\nเสริมสร้าง\nเสริมสวย\nเสรีไทย\nเสรีธรรม\nเสรีนิยม\nเสรีภาพ\nเสาเข็ม\nเสาธง\nเสียใจ\nเสียเชิง\nเสียดาย\nเสียที\nเสียเที่ยว\nเสียเปรียบ\nเสียเปล่า\nเสียรู้\nเสียแรง\nเสียสละ\nเสียหลัก\nเสียหาย\nเสี่ยงทาย\nเสียดแทง\nเสียดแทรก\nเสียดสี\nเสี้ยนศึก\nเสี้ยนหนาม\nเสี้ยมสอน\nเสียวซ่าน\nเสียวไส้\nเสือดาว\nเสือดำ\nเสือปลา\nเสือป่า\nเสือไฟ\nเสื่อกก\nเสื่อกระจูด\nเสื่อน้ำมัน\nเสื่อลำแพน\nเสื้อกล้าม\nเสื้อกั๊ก\nเสื้อเกราะ\nเสื้อครุย\nเสื้อแสง\nเสื้อเมือง\nเสือกคลาน\nเสือกสน\nเสือกไส\nเสื่อมคลาย\nเสื่อมถอย\nเสื่อมทราม\nเสื่อมโทรม\nเสื่อมสลาย\nเสื่อมสูญ\nเสื่อมเสีย\nเสือหมอบ\nแสกหน้า\nแสดงออก\nแสเถา\nแสนกล\nแสนรู้\nแสร้งว่า\nใส่ความ\nใส่ไคล้\nใส่ใจ\nใส่ไฟ\nไส้กรอก\nไส้ไก่\nไส้ติ่ง\nไส้ศึก\nไส้อั่ว\nไส้เดือน\nไส้ตัน\nไสยเวท\nไสยศาสตร์\nหกล้ม\nหงส์หยก\nหงอนไก่\nหงอยก๋อย\nหงอยเหงา\nหงายท้อง\nหงายหลัง\nหงำเหงอะ\nหงำเหงือก\nหดหาย\nหดหู่\nหนทาง\nหนวกหู\nหน่วงเหนี่ยว\nหน่วยก้าน\nหน่อไม้\nหนองใน\nหนองแซง\nหนักข้อ\nหนักใจ\nหนักแน่น\nหนักหน่วง\nหนักหนา\nหนังกลับ\nหนังตะลุง\nหนังเรียด\nหนังสด\nหนังใหญ่\nหนังสือพิมพ์\nหนาแน่น\nหน้ากระดาน\nหน้ากาก\nหน้ากาฬ\nหน้าแข้ง\nหน้าจั่ว\nหน้าฉาน\nหน้าตัก\nหน้าตา\nหน้าต่าง\nหน้าท้อง\nหน้าทับ\nหน้าที่\nหน้าที่นั่ง\nหน้าบัน\nหน้าปัด\nหน้าผา\nหน้าผาก\nหน้าม้า\nหน้ามุข\nหน้าไม้\nหน้าเลือด\nหน้าอก\nหนามเตย\nหน่ายหนี\nหน่ายแหนง\nหนาวเหน็บ\nหนำใจ\nหนี้สิน\nหนี้สูญ\nหนุนเนื่อง\nหนุนหลัง\nหมกมุ่น\nหมดจด\nหมอขวัญ\nหมอความ\nหมอแคน\nหมองู\nหมอดู\nหมอตำแย\nหมอทำขวัญ\nหมอนวด\nหมอผี\nหมอยา\nหมอลำ\nหมอเสน่ห์\nหม้อแกง\nหม้อตาล\nหม้อน้ำ\nหม้อแปลง\nหมองใจ\nหมองมัว\nหมองหม่น\nหมองหมาง\nหมอนขวาน\nหมอนข้าง\nหมอนทอง\nหม่อมเจ้า\nหม่อมฉัน\nหม่อมราชวงศ์\nหม่อมหลวง\nหม่อมห้าม\nหมั่นไส้\nหมาป่า\nหมาหมู่\nหมากฝรั่ง\nหมากสง\nหมากหอม\nหมากเก็บ\nหมากรุก\nหมากเม่า\nหมางใจ\nหมางเมิน\nหมาไม้\nหมายเกณฑ์\nหมายขัง\nหมายค้น\nหมายความ\nหมายจับ\nหมายใจ\nหมายตา\nหมายปล่อย\nหมายมั่น\nหมายเรียก\nหมายเลข\nหมายเหตุ\nหมิ่นเหม่\nหมึกจีน\nหมุนเวียน\nหมูแดง\nหมูป่า\nหมูแผ่น\nหมูยอ\nหมูหย็อง\nหมูหัน\nหมูแฮม\nหมู่บ้าน\nหยดย้อย\nหยอกเย้า\nหยักรั้ง\nหยักศก\nหยั่งทราบ\nหยั่งรู้\nหยั่งเสียง\nหยาบคาย\nหยาบช้า\nหยาบโลน\nหยาบหยาม\nหยิบมือ\nหยิบยก\nหยิบยืม\nหยิบหย่ง\nหยิบโหย่ง\nหริรักษ์\nหริวงศ์\nหลงผิด\nหลบฉาก\nหลบมุม\nหลวงจีน\nหลวงพ่อ\nหลวมตัว\nหล่อลื่น\nหล่อเลี้ยง\nหล่อหลอม\nหลอกลวง\nหลอกล่อ\nหลอกล้อ\nหลอดลม\nหลอดเลือด\nหลอดอาหาร\nหลอมตัว\nหลอมเหลว\nหลักการ\nหลักเกณฑ์\nหลักชัย\nหลักฐาน\nหลักทรัพย์\nหลักเมือง\nหลักลอย\nหลักสูตร\nหลักแหล่ง\nหลักแหลม\nหลังคา\nหลังเต่า\nหลั่งไหล\nหลับนก\nหลับใน\nหลากใจ\nหลากหลาย\nหลาบจำ\nหลายหลาก\nหลายแหล่\nหลุดพ้น\nหลุดลอย\nหลุดลุ่ย\nหลุมโจน\nหลุมพราง\nหวงก้าง\nหวงห้าม\nหวงแหน\nห่วงใย\nห้วงน้ำ\nหวังใจ\nหวังดี\nหวั่นกลัว\nหวั่นเกรง\nหวั่นใจ\nหวั่นวิตก\nหวั่นหวาด\nหวั่นไหว\nหวาดกลัว\nหวาดเกรง\nหวาดผวา\nหวาดเสียว\nหวาดหวั่น\nหวาดไหว\nหวานเย็น\nหว่านล้อม\nหอคอย\nหอคำ\nหอฉัน\nหอไตร\nหอประชุม\nหอพัก\nห่อหมก\nห่อเหี่ยว\nหอกซัด\nห้องเครื่อง\nห้องชุด\nห้องแถว\nห้องโถง\nห้องน้ำ\nห้องสมุด\nหอสมุด\nหอมหวน\nห้อมล้อม\nห้อยโหน\nหักล้าง\nหักหาญ\nหักห้าม\nหักเห\nหักโหม\nหักมุก\nหันเห\nหับเผย\nหัวขโมย\nหัวข้อ\nหัวขั้ว\nหัวเข่า\nหัวโขน\nหัวคะแนน\nหัวค่ำ\nหัวคิด\nหัวจุก\nหัวโจก\nหัวใจ\nหัวเทียน\nหัวนม\nหัวนอน\nหัวป่า\nหัวมุม\nหัวเรื่อง\nหัวแร้ง\nหัวใส\nหัวหน้า\nหัวหน่าว\nหัวหอก\nหัวเห็ด\nหัวไหล่\nหัวอก\nหัสดนตรี\nหัสนาฏกรรม\nหัสนิยาย\nหัสดีลิงค์\nหางเครื่อง\nหางแถว\nหางเลข\nหางว่าว\nหางเสียง\nหางเสือ\nห่างเหิน\nหาบเร่\nห้ามปราม\nห้ามล้อ\nหายตัว\nหาวนอน\nห้าวหาญ\nห้ำหั่น\nหินงอก\nหินทราย\nหินปูน\nหินย้อย\nหินอ่อน\nหินชาติ\nหินยาน\nหีบเพลง\nหีบห่อ\nหุ่นกระบอก\nหุ่นยนต์\nหุ้นลม\nหุ้นส่วน\nหุบเขา\nหุบผา\nหุบเหว\nหูกระต่าย\nหูช้าง\nหูรูด\nหูกวาง\nเหงาหงอย\nเหงื่อกาฬ\nเหตุการณ์\nเหตุผล\nเห็นแก่\nเห็นใจ\nเหน็บแนม\nเหน็บชา\nเหนียวแน่น\nเหนี่ยวนำ\nเหนี่ยวรั้ง\nเหนื่อยหน่าย\nเหมาะเจาะ\nเหมาะสม\nเหมาะเหม็ง\nเหยเก\nเหยียดหยาม\nเหล็กกล้า\nเหล็กจาร\nเหล็กใน\nเหล็กส่ง\nเหล็กเส้น\nเหล็กหล่อ\nเหล็กไหล\nเหลวแหลก\nเหลวไหล\nเหลอหลา\nเหล่ากอ\nเหลียวแล\nเหลือเกิน\nเหลือขอ\nเหลือใจ\nเหลือเชื่อ\nเหลือเฟือ\nเหลือร้าย\nเหลือล้น\nเหลือหลาย\nเหลือแหล่\nเหลือแสน\nเหลือหลอ\nเหลื่อมล้ำ\nเห่อเหิม\nเหินห่าง\nเหิมเกริม\nเหิมหาญ\nเหี้ยมเกรียม\nเหี้ยมหาญ\nเหี้ยมโหด\nเหี่ยวแห้ง\nเหือดหาย\nเหือดแห้ง\nแห่แหน\nแหนงหน่าย\nแหลกลาญ\nแหลกเหลว\nแหวกแนว\nแหวกว่าย\nโหงพราย\nโหดร้าย\nโหดเหี้ยม\nโหยหวน\nโหวงเหวง\nให้การ\nให้ท่า\nให้ท้าย\nให้ร้าย\nให้หลัง\nไหมพรม\nไหวพริบ\nอกไก่\nอกร่อง\nองค์กร\nองค์การ\nอดกลั้น\nอดทน\nอดสู\nอดอยาก\nอดออม\nอดีตกาล\nอดีตชาติ\nอดีตภพ\nอติชาตบุตร\nอธิการบดี\nอนาคตกาล\nอนิจกรรม\nอนุชาตบุตร\nอเนกประสงค์\nอบรม\nอบอวล\nอบอ้าว\nอบอุ่น\nอบายภูมิ\nอบายมุข\nอภัพบุคคล\nอภัยทาน\nอภัยโทษ\nอภิชาตบุตร\nอมยิ้ม\nอมรรัตน์\nอมฤตบท\nอมฤตรส\nอย่างไร\nอรรถกร\nอรรถกวี\nอรรถคดี\nอรรถประโยชน์\nอรรถรส\nอรรธนิศา\nอรรธภาค\nอรรธสระ\nอรสุมพล\nอรูปฌาน\nอรูปพรหม\nอรูปภพ\nอรูปภูมิ\nอวชาตบุตร\nอวดดี\nอวดอ้าง\nอ้วนท้วน\nอ้วนพี\nอวบอั๋น\nอวยชัย\nอวยพร\nอสุภกรรมฐาน\nอสุภสัญญา\nอโหสิกรรม\nออเจ้า\nออกแขก\nออกตัว\nออกโรง\nออกฤทธิ์\nออกลาย\nออกหาก\nออดอ้อน\nออดแอด\nอ่อนข้อ\nอ่อนใจ\nอ่อนช้อย\nอ่อนน้อม\nอ่อนเปลี้ย\nอ่อนเพลีย\nอ่อนโยน\nอ่อนหวาน\nอ่อนหัด\nอ่อนไหว\nอ่อนแอ\nอ้อนวอน\nอ้อนออด\nอ้อมค้อม\nอักษรศาสตร์\nอักษรสาส์น\nอัคคีภัย\nอัญชนะศักราช\nอัดฉีด\nอัดอั้น\nอัตราส่วน\nอันโตชน\nอันโตนาที\nอับจน\nอับเฉา\nอับอาย\nอัสสุชล\nอัสสุธารา\nอากัปกิริยา\nอาการนาม\nอากาศธาตุ\nอากาศยาน\nอาคารชุด\nอ่างเก็บน้ำ\nอ้างอิง\nอาจหาญ\nอาจอง\nอาชญากร\nอาชญากรรม\nอาชญาบัตร\nอาชญาสิทธิ์\nอาญาสิทธิ์\nอาณาเขต\nอาณาจักร\nอาณานิคม\nอาณาประโยชน์\nอาโปกสิณ\nอาโปธาตุ\nอาภากร\nอายุขัย\nอายุวัฒนะ\nอาโลกกสิณ\nอาหารว่าง\nอำพราง\nอิดโรย\nอิดออด\nอิดเอื้อน\nอิตถีลิงค์\nอิทธิปาฏิหาริย์\nอิทธิพล\nอิทธิฤทธิ์\nอินังขังขอบ\nอิ่มตัว\nอิ่มหนำ\nอิ่มเอม\nอิ่มเอิบ\nอีฉัน\nอีตัว\nอึงคะนึง\nอึงมี่\nอึงอล\nอึ่งยาง\nอึ่งอ่าง\nอึดใจ\nอึดอัด\nอืดอาด\nอื้อฉาว\nอื้อซ่า\nอื้ออึง\nอุกฉกรรจ์\nอุกอาจ\nอุดอู้\nอุ่นเครื่อง\nอุ่นใจ\nอุบอิบ\nอุบัติภัย\nอุบัติเหตุ\nอุโบสถกรรม\nอุโบสถหัตถี\nอุปมาโวหาร\nอุ้มชู\nอุ้มสม\nอุ้ยอ้าย\nอู้อี้\nเอกจิต\nเอกฉันท์\nเอกชน\nเอกเทศ\nเอกนัย\nเอกบุคคล\nเอกบุรุษ\nเอกพจน์\nเอกภพ\nเอกภาพ\nเอกมัย\nเอกราช\nเอกรูป\nเอกลักษณ์\nเอกศก\nเอกสาร\nเอกสิทธิ์\nเอกอุ\nเอ็ดอึง\nเอนเอียง\nเอมอร\nเอออวย\nเออออ\nเอาการ\nเอางาน\nเอาจริง\nเอาใจ\nเอาเปรียบ\nเอาเยี่ยง\nเอิบอาบ\nเอียงอาย\nเอียงเอน\nเอื้อเฟื้อ\nโอ่โถง\nโอ้โถง\nโอ่อวด\nโอ้อวด\nโอ่อ่า\nโอ้โลม\nโอดครวญ\nโอดโอย\nโอนอ่อน\nโอนเอน\nโอบอ้อม\nโอบอุ้ม\nโอสถกรรม\nไอเสีย\nไอกรน\nฮวบฮาบ\nฮาป่า\nฮึกหาญ\nฮึกห้าว\nฮึกเหิม\nฮึกโหม\nฮึกฮัก\nเฮงซวย\nโฮกฮือ\nโฮกฮาก\n\nก็\nกก\nก๊ก\nกกุธภัณฑ์\nกง\nก่ง\nก้ง\nก๊ง\nก๋ง\nกงกอน\nกงไฉ่\nกงเต๊ก\nกงสี\nกงสุล\nกช\nกฎ\nกฏุก\nกฐิน\nกณิกนันต์\nกณิการ์\nกด\nกตเวทิตา\nกตเวที\nกตัญชลี\nกตัญญุตา\nกตัญญู\nกตาธิการ\nกตาภินิหาร\nกติกา\nกถา\nกถิกาจารย์\nกทลี\nกน\nก่น\nก้น\nกนก\nกนิษฐ์\nกนิษฐา\nกบ\nกบฏ\nกบดาน\nกบทู\nกบาล\nกบินทร์\nกบิล\nกบี่\nกบูร\nกเบนทร์\nกม\nก้ม\nกมณฑลาภิเษก\nกมณฑโลทก\nกมล\nกมลา\nกมลาศ\nกมลาสน์\nกมเลศ\nกมัณฑลุ\nกมุท\nกร\nกรกฎ\nกรกฎาคม\nกรกฏ\nกรง\nกรชกาย\nกรณฑ์\nกรณิการ์\nกรณี\nกรณีย์\nกรณียกิจ\nกรณียะ\nกรด\nกรน\nกรบ\nกรบูร\nกรพินธุ์\nกรม\nกรรกฎ\nกรรกศ\nกรรเกด\nกรรไกร\nกรรเจียก\nกรรชิง\nกรรเชียง\nกรรโชก\nกรรฐ์\nกรรฐา\nกรรณ\nกรรณา\nกรรณิกา\nกรรณิการ์\nกรรดิ\nกรรดิก\nกรรดึก\nกรรตุ\nกรรไตร\nกรรทบ\nกรรแทก\nกรรบิด\nกรรบูร\nกรรภิรมย์\nกรรม\nกรรม์\nกรรม์ภิรมย์\nกรรมชวาต\nกรรมัชวาต\nกรรมาชีพ\nกรรมาธิการ\nกรรมาร\nกรรษก\nกรรสะ\nกรรแสง\nกรวด\nกรวบ\nกรวม\nกร้วม\nกรวย\nกรวิก\nกรสาปน์\nกรสุทธิ์\nกรอ\nกร้อ\nกรอก\nกร็อกกร๋อย\nกรอกแกรก\nกรอง\nกรองกรอย\nกรอด\nกร่อน\nกรอบ\nกรอม\nกร่อย\nกระ\nกระกร\nกระกรุ่น\nกระกลับกลอก\nกระกี้\nกระเกรอก\nกระเกริก\nกระเกริ่น\nกระคน\nกระคาย\nกระงกกระเงิ่น\nกระง่องกระแง่ง\nกระง่อนกระแง่น\nกระเง้ากระงอด\nกระโงก\nกระจก\nกระจง\nกระจร\nกระจอก\nกระจองหง่อง\nกระจ๋องหง่อง\nกระจองอแง\nกระจ้อน\nกระจอนหู\nกระจ้อย\nกระจ๋อหวอ\nกระจะ\nกระจัก\nกระจัง\nกระจัด\nกระจับ\nกระจ่า\nกระจ่าง\nกระจาด\nกระจาน\nกระจาบ\nกระจาม\nกระจาย\nกระจาว\nกระจิก\nกระจิ๋ง\nกระจิด\nกระจิบ\nกระจิ๋ม\nกระจิริด\nกระจิ๋ว\nกระจี้\nกระจี๋\nกระจุก\nกระจุ๋งกระจิ๋ง\nกระจุบ\nกระจุ๊บ\nกระจุ๋มกระจิ๋ม\nกระจุย\nกระจู้\nกระจู๋กระจี๋\nกระจูด\nกระเจอะกระเจิง\nกระเจา\nกระเจ่า\nกระเจ้า\nกระเจาะ\nกระเจิง\nกระเจิดกระเจิง\nกระเจี้ยง\nกระเจี๊ยบ\nกระเจียว\nกระเจี๊ยว\nกระแจะ\nกระโจน\nกระโจม\nกระฉอก\nกระฉ่อน\nกระฉับกระเฉง\nกระฉิ่ง\nกระฉีก\nกระฉูด\nกระเฉก\nกระเฉด\nกระแฉก\nกระโฉกกระเฉก\nกระโฉม\nกระชดกระช้อย\nกระชอน\nกระชอมดอก\nกระช้อย\nกระชัง\nกระชั้น\nกระชับ\nกระชาก\nกระชาย\nกระชิง\nกระชิด\nกระชุ\nกระชุก\nกระชุ่มกระชวย\nกระเชอ\nกระเชา\nกระเช้า\nกระเชียง\nกระแชง\nกระแชะ\nกระโชก\nกระซ่องกระแซ่ง\nกระซับ\nกระซาบ\nกระซิก\nกระซิบ\nกระซี้\nกระซุง\nกระซุบกระซิบ\nกระซุ้ม\nกระซู่\nกระเซ็น\nกระเซอ\nกระเซอะกระเซอ\nกระเซอะกระเซิง\nกระเซ้า\nกระเซิง\nกระแซ\nกระแซะ\nกระโซกระเซ\nกระฎี\nกระฎุมพี\nกระดก\nกระด้ง\nกระดนโด่\nกระดวง\nกระดวน\nกระด้วมกระเดี้ยม\nกระดอ\nกระดอง\nกระดองหาย\nกระดอน\nกระดอม\nกระดักกระเดี้ย\nกระดังงัว\nกระดังงา\nกระดาก\nกระด้าง\nกระดางลาง\nกระดาด\nกระดาดขาว\nกระดาน\nกระดานพน\nกระดาษ\nกระดำกระด่าง\nกระดิก\nกระดิ่ง\nกระดิ้ง\nกระดิบ\nกระดี่\nกระดี้กระเดียม\nกระดึง\nกระดืบ\nกระดุ\nกระดุกกระดิก\nกระดุ้งกระดิ้ง\nกระดุบ\nกระดุบกระดิบ\nกระดุม\nกระดูก\nกระเดก\nกระเด้ง\nกระเด็น\nกระเด้า\nกระเดาะ\nกระเดิด\nกระเดี้ย\nกระเดียด\nกระเดือก\nกระเดื่อง\nกระแด็ก\nกระแด้ง\nกระแด้แร่\nกระแด่ว\nกระแดะ\nกระโดก\nกระโดง\nกระโดด\nกระโดน\nกระได\nกระตรับ\nกระตราก\nกระตรุด\nกระตรุม\nกระต้วมกระเตี้ยม\nกระต้อ\nกระต่องกระแต่ง\nกระต๊อบ\nกระต้อยตีวิด\nกระตัก\nกระตั้ว\nกระต่าย\nกระติก\nกระติ๊ด\nกระติบ\nกระตือรือร้น\nกระตุก\nกระตุ้งกระติ้ง\nกระตุ่น\nกระตุ้น\nกระตูบ\nกระเตง\nกระเต็น\nกระเตอะ\nกระเตาะ\nกระเตาะกระแตะ\nกระเตื้อง\nกระแต\nกระแตแต้แว้ด\nกระโตกกระตาก\nกระโตน\nกระถด\nกระถอบ\nกระถั่ว\nกระถาง\nกระถิก\nกระถิน\nกระเถิบ\nกระโถน\nกระทก\nกระทง\nกระทบ\nกระทรวง\nกระทอก\nกระท้อน\nกระท่อนกระแท่น\nกระท่อม\nกระท้อมกระแท้ม\nกระทะ\nกระทั่ง\nกระทั้น\nกระทา\nกระทาย\nกระทาสี\nกระทาหอง\nกระทำ\nกระทิกกระทวย\nกระทิง\nกระทึง\nกระทืบ\nกระทุ\nกระทุง\nกระทุ้ง\nกระทุ่ม\nกระทู้\nกระเท่\nกระเทียบ\nกระเทียม\nกระเทือน\nกระเทื้อม\nกระแทก\nกระแท่น\nกระแทะ\nกระไทชาย\nกระน่อง\nกระนั้น\nกระนี้\nกระแนะกระแหน\nกระโน้น\nกระไน\nกระบก\nกระบม\nกระบวน\nกระบวย\nกระบวร\nกระบอก\nกระบอง\nกระบะ\nกระบัด\nกระบั้วกระเบี้ย\nกระบ่า\nกระบ้า\nกระบาก\nกระบาย\nกระบาล\nกระบิ\nกระบิ้ง\nกระบิด\nกระบิล\nกระบี่\nกระบือ\nกระบุง\nกระบุ่มกระบ่าม\nกระบู้กระบี้\nกระบูน\nกระบูร\nกระเบง\nกระเบญ\nกระเบ็ดกระบวน\nกระเบน\nกระเบา\nกระเบิก\nกระเบียด\nกระเบียน\nกระเบื้อง\nกระแบก\nกระแบะ\nกระโบม\nกระปมกระปำ\nกระปมกระเปา\nกระปรอก\nกระปรอกว่าว\nกระปรี้กระเปร่า\nกระปอก\nกระป้อกระแป้\nกระป่อง\nกระป๋อง\nกระปอดกระแปด\nกระป๋อหลอ\nกระปั้วกระเปี้ย\nกระป่ำ\nกระปุก\nกระปุ๊กลุก\nกระปุ่ม\nกระปุ่มกระป่ำ\nกระปุ่มกระปิ่ม\nกระเป๋า\nกระเปาะ\nกระโปก\nกระโปรง\nกระผม\nกระผลีกระผลาม\nกระผาน\nกระผีก\nกระพรวน\nกระพริ้ม\nกระพอก\nกระพอง\nกระพ้อม\nกระพัก\nกระพัง\nกระพังเหิร\nกระพังโหม\nกระพัด\nกระพัตร\nกระพัน\nกระพั่น\nกระพา\nกระพาก\nกระพี้\nกระพือ\nกระพุ้ง\nกระพุ่ม\nกระเพาะ\nกระเพิง\nกระเพื่อม\nกระแพ้ง\nกระฟัดกระเฟียด\nกระฟูมกระฟาย\nกระมล\nกระมอบ\nกระมอมกระแมม\nกระมัง\nกระมัน\nกระมิดกระเมี้ยน\nกระมุท\nกระเมาะ\nกระย่อง\nกระย่องกระแย่ง\nกระย่อน\nกระย่อม\nกระยา\nกระยาง\nกระยาจก\nกระยาหงัน\nกระยิก\nกระยิ้มกระย่อง\nกระยึกกระยือ\nกระยืดกระยาด\nกระเย้อกระแหย่ง\nกระรอก\nกระเรียน\nกระโรกน้ำข้าว\nกระโรกใหญ่\nกระไร\nกระลด\nกระลบ\nกระลอก\nกระลอม\nกระละหล่ำ\nกระลัด\nกระลับ\nกระลัมพร\nกระลา\nกระลำ\nกระลำพัก\nกระลำพุก\nกระลิง\nกระลี\nกระลุมพาง\nกระลุมพุก\nกระลุมพู\nกระลูน\nกระลู่น์\nกระเล็น\nกระเลียด\nกระเลือก\nกระโลง\nกระวน\nกระวัด\nกระวาด\nกระวาน\nกระวาย\nกระวิน\nกระวี\nกระวีกระวาด\nกระวูดกระวาด\nกระเวน\nกระเวยกระวาย\nกระแวน\nกระโวยกระวาย\nกระษัย\nกระษาปณ์\nกระสง\nกระสบ\nกระสม\nกระสรวล\nกระสร้อย\nกระสวน\nกระสวย\nกระสอบ\nกระสะ\nกระสัง\nกระสัน\nกระสับกระส่าย\nกระสา\nกระสานติ์\nกระสาบ\nกระสาย\nกระสือ\nกระสุงกระสิง\nกระสุน\nกระสูทธิ์\nกระสูบ\nกระเสด\nกระเส็นกระสาย\nกระเส่า\nกระเสาะกระแสะ\nกระเสียน\nกระเสียร\nกระเสือกกระสน\nกระแส\nกระแสง\nกระแสะ\nกระโสง\nกระไส\nกระหนก\nกระหนาก\nกระหนาบ\nกระหน่ำ\nกระหมวด\nกระหมอบ\nกระหม่อม\nกระหมั่ง\nกระหมิบ\nกระหมุดกระหมิด\nกระหมุบ\nกระหย่ง\nกระหย่อม\nกระหยัง\nกระหยับ\nกระหยิ่ม\nกระหรอด\nกระหริ่ง\nกระหวน\nกระหวัด\nกระหอง\nกระหัง\nกระหัด\nกระหาง\nกระหาย\nกระหึม\nกระหึ่ม\nกระหืดกระหอบ\nกระเห็น\nกระเหนียด\nกระเหม็ดกระเหมียด\nกระเหม็ดกระแหม่\nกระเหม่น\nกระเหม่า\nกระเหว่า\nกระเห่อ\nกระเหิม\nกระเหี้ยนกระหือรือ\nกระแห\nกระแหทอง\nกระแหนบ\nกระแหนะ\nกระแหมบ\nกระแหม่ว\nกระแหย่ง\nกระแหร่ม\nกระแหล่ง\nกระโห้\nกระโหนด\nกระโหม\nกระโหย\nกระโหย่ง\nกระอวล\nกระอ้อกระแอ้\nกระออดกระแอด\nกระออบ\nกระออม\nกระอ้อมกระแอ้ม\nกระอัก\nกระอักกระอ่วน\nกระอั้วแทงควาย\nกระอ้า\nกระอาน\nกระอิด\nกระอิดกระเอื้อน\nกระอึก\nกระอืด\nกระอุ\nกระอุก\nกระเอา\nกระเอิก\nกระเอิบ\nกระแอก\nกระแอบ\nกระแอม\nกระไอ\nกรัก\nกรักขี\nกรัง\nกรัชกาย\nกรัณฑ์\nกรัณย์\nกรัน\nกรับ\nกรัม\nกราก\nกราง\nกร่าง\nกราด\nกราดวง\nกราน\nกร้าน\nกราบ\nกราฟ\nกราม\nกราย\nกร่าย\nกราว\nกร้าว\nกรำ\nกร่ำ\nกริก\nกริ๊ก\nกริกกริว\nกริกกรี\nกริ่ง\nกริ๊ง\nกริงกริว\nกริ้งกริ้ว\nกริช\nกริณี\nกริน\nกรินทร์\nกรินี\nกริบ\nกริม\nกริ่ม\nกริยา\nกริยานุเคราะห์\nกริว\nกริ้ว\nกรี\nกรีฑา\nกรีด\nกรี๊ด\nกรีธา\nกรีษ\nกรีส\nกรึ๊บ\nกรุ\nกรุง\nกรุ้งกริ่ง\nกรุณ\nกรุณา\nกรุณาธิคุณ\nกรุ่น\nกรุบ\nกรุ่ม\nกรุ้มกริ่ม\nกรุย\nกรุยเกรียว\nกรู\nกรูด\nกรูม\nกเรณุ\nกเรนทร\nกเรนทร์\nกฤช\nกฤดาภินิหาร\nกฤตติกา\nกฤษฎา\nกฤษฎาธาร\nกฤษฎาภินิหาร\nกฤษฎีกา\nกฤษณา\nกล\nกลด\nกล่น\nกลบ\nกลม\nกลละ\nกลวง\nกล้วย\nกลศ\nกล้อ\nกลอก\nกลอง\nกล่อง\nกล้อง\nกล้องแกล้ง\nกลอน\nกล่อน\nกล้อน\nกล่อม\nกล้อมแกล้ม\nกลอย\nกลัก\nกลัด\nกลั่น\nกลั้น\nกลันทก์\nกลันทะ\nกลับ\nกลัมพร\nกลัมพัก\nกลัว\nกลั้ว\nกลา\nกล้า\nกลาก\nกลากลาด\nกลาง\nกลาด\nกลาบาต\nกลาป\nกล้าม\nกลาย\nกล้าย\nกลายกลอก\nกล่าว\nกลาโหม\nกล่ำ\nกล้ำ\nกลิ้ง\nกลิงค์\nกลิ่น\nกลี\nกลีบ\nกลึง\nกลึงค์\nกลืน\nกลุ่ม\nกลุ้ม\nกลูโคส\nกเลวระ\nกวด\nกวน\nกวม\nกวย\nกวยจั๊บ\nกวยจี๊\nก๋วยเตี๋ยว\nกวัก\nกวัด\nกวา\nกว่า\nกวาง\nกว่าง\nกว้าง\nกว่างโซ้ง\nกวางตุ้ง\nกวาด\nกว้าน\nกว๊าน\nกว้าว\nกวาวเครือ\nกวี\nกษณะ\nกษมา\nกษัตร\nกษัตรา\nกษัตริย์\nกษัตรี\nกษัตรีย์\nกษัย\nกษาปณ์\nกษิดิ\nกษีร\nกษีรธารา\nกษีระ\nกสานติ์\nกสิกร\nกสิกรรม\nกสิณ\nกหังปายา\nกหาปณะ\nกเฬวราก\nกอ\nก่อ\nก้อ\nก๊อ\nกอก\nก๊อก\nกอแก\nกอง\nก่อง\nก้อง\nกองกอย\nก๊อซ\nกอด\nก่อน\nก้อน\nกอบ\nกอบนาง\nก๊อบปี้\nกอปร\nก้อม\nกอมก้อ\nก่อมก้อ\nกอย\nก้อย\nก๋อย\nกอริลลา\nกอล์ฟ\nกอและ\nกอเอี๊ยะ\nกะ\nกะกัง\nกะง้องกะแง้ง\nกะจัง\nกะแจะ\nกะชะ\nกะชัง\nกะชามาศ\nกะชิง\nกะชึ่กกะชั่ก\nกะแช่\nกะซวก\nกะซ้าหอย\nกะซี่\nกะโซ่\nกะโซ้\nกะดก\nกะดง\nกะดวน\nกะดอก\nกะดะ\nกะดังบาย\nกะดัด\nกะด้าง\nกะดำกะด่าง\nกะดี\nกะดี่\nกะดุ้ง\nกะเด้\nกะเดก\nกะเดี๋ยว\nกะตรุด\nกะตอก\nกะต่อย\nกะตัก\nกะตั้ก\nกะตัง\nกะตังกะติ้ว\nกะต๊าก\nกะต้ำ\nกะติ๊กริก\nกะติงกะแตง\nกะตีบ\nกะตึงกะแตง\nกะตุ๊ก\nกะตุด\nกะตูก\nกะเตง\nกะโต๊ก\nกะโตงกะเตง\nกะโต้งโห่ง\nกะถัว\nกะทกรก\nกะทอ\nกะทัง\nกะทังหัน\nกะทัดรัด\nกะทันหัน\nกะทับ\nกะทิ\nกะทือ\nกะทุน\nกะเทย\nกะเทาะ\nกะแท้\nกะแท่ง\nกะแทน\nกะนวล\nกะนัด\nกะบ่อนกะแบ่น\nกะบัง\nกะบั้ง\nกะบิ้ง\nกะบิล\nกะบึงกะบอน\nกะบุด\nกะเบ้อ\nกะเบียน\nกะเบือ\nกะปริดกะปรอย\nกะปริบ\nกะปริบกะปรอย\nกะปลกกะเปลี้ย\nกะปวกกะเปียก\nกะปอม\nกะปอมขาง\nกะปะ\nกะป้ำกะเป๋อ\nกะปิ\nกะปู\nกะปูด\nกะปูดหลูด\nกะเปะ\nกะเปิ๊บกะป๊าบ\nกะเปียด\nกะแป้น\nกะแปะ\nกะโปรง\nกะโปโล\nกะผลุบกะโผล่\nกะเผ่น\nกะเผลก\nกะโผลกกะเผลก\nกะพง\nกะพรวดกะพราด\nกะพร่องกะแพร่ง\nกะพริบ\nกะพรุน\nกะพรูดกะพราด\nกะพล้อ\nกะพ้อ\nกะเพรา\nกะเพียด\nกะเม็ง\nกะร่องกะแร่ง\nกะระตะ\nกะระหนะ\nกะรัง\nกะรัต\nกะราง\nกะริง\nกะรุงกะรัง\nกะรุ่งกะริ่ง\nกะรุน\nกะเร\nกะเรกะร่อน\nกะเร่กะร่อน\nกะเร่อ\nกะเรี่ยกะราด\nกะโรกะเร\nกะลวย\nกะลอ\nกะล่อกะแล่\nกะลอจี๊\nกะล่อน\nกะล่อมกะแล่ม\nกะล่อยกะหลิบ\nกะละปังหา\nกะละมัง\nกะละแม\nกะละออม\nกะลังตังไก่\nกะลัน\nกะลันทา\nกะลา\nกะลาง\nกะลาสี\nกะลำพอ\nกะลิง\nกะลิงปลิง\nกะลิ้มกะเหลี่ย\nกะลิอ่อง\nกะลุมพี\nกะเล็ง\nกะเล่อกะล่า\nกะเลิด\nกะเลียว\nกะแล\nกะโล่\nกะโลง\nกะวอกกะแวก\nกะวะ\nกะส้มชื่น\nกะสัง\nกะส้าหอย\nกะหนอกะแหน\nกะหน็องกะแหน็ง\nกะหนะ\nกะหนุงกะหนิง\nกะหร่อง\nกะหรอด\nกะหร็อมกะแหร็ม\nกะหราน\nกะหรี่\nกะหรี่ปั๊บ\nกะหลาป๋า\nกะหล่ำ\nกะหลี่\nกะหลีกะหลอ\nกะหลุกกะหลิก\nกะหำ\nกะหำแพะ\nกะหือ\nกะหูด\nกะเหรี่ยง\nกะเหลาะเปาะ\nกะแหยก\nกะแหะ\nกะโหลก\nกะโหล้ง\nกะไหล่\nกะอวม\nกะออม\nกะอาน\nกะอาม\nกะอูบ\nกัก\nกั๊ก\nกักกรา\nกักการุ\nกักขฬะ\nกัง\nกั้ง\nกังก้า\nกังเกียง\nกังขา\nกังฉิน\nกังฟู\nกังวล\nกังวาน\nกังสดาล\nกังไส\nกังหัน\nกัจฉปะ\nกัจฉะ\nกัจฉา\nกัญ\nกัญจุก\nกัญจุการา\nกัญชา\nกัญญา\nกัฐ\nกัณฏกะ\nกัณฐกะ\nกัณฐชะ\nกัณฐัศ\nกัณฐัศว์\nกัณฐา\nกัณฐี\nกัณฑ์\nกัณณ์\nกัณหา\nกัด\nกัตติกมาส\nกัตติกา\nกัตติเกยา\nกัตรา\nกัทลี\nกัน\nกั่น\nกั้น\nกันเกรา\nกันไกร\nกันชิง\nกันเชอ\nกันดาร\nกันดาล\nกันได\nกันต์\nกันตัง\nกันไตร\nกันทร\nกันทรากร\nกันภิรมย์\nกันเมียง\nกันย์\nกันยา\nกันยายน\nกันลง\nกันลอง\nกันแสง\nกั้นหยั่น\nกับ\nกับแก้\nกัป\nกัปตัน\nกัปปาสิก\nกัปปิยภัณฑ์\nกัปปิยะ\nกัมปนาท\nกัมประโด\nกัมปี\nกัมพล\nกัมพุช\nกัมพู\nกัมพูชา\nกัมโพช\nกัมมัชวาต\nกัมมัฏฐาน\nกัมมันตภาพรังสี\nกัมมันตรังสี\nกัมมาร\nกัมลาศ\nกัยวิกัย\nกัลชาญ\nกัลบก\nกัลป์\nกัลปนา\nกัลปพฤกษ์\nกัลปังหา\nกัลปาวสาน\nกัลปิต\nกัลเม็ด\nกัลยา\nกัลยาณมิตร\nกัลยาณี\nกัลออม\nกัศยป\nกัษณ\nกา\nก๋า\nกาก\nกากบาท\nกากะทิง\nกากะเยีย\nกากี\nกาง\nก้าง\nกางเกง\nกางเขน\nก๊าซ\nกาซะลอง\nกาญจนา\nกาฐ\nกาด\nก๊าด\nกาน\nก่าน\nก้าน\nก๊าน\nกานดา\nกานต์\nกานน\nก้านพร้าว\nกานพลู\nกาน้า\nกาบ\nก้าบ\nกาบู\nกาพย์\nกาเฟอีน\nกาแฟ\nกาม\nก้าม\nกามารมณ์\nกามินี\nกาเมสุมิจฉาจาร\nกาย\nก่าย\nกาเยน\nการ\nการณ์\nการ์ด\nการ์ตูน\nการบูร\nการย์\nการวิก\nการเวก\nการะเกด\nการะบุหนิง\nการัณย์\nการันต์\nการางหัวขวาน\nการิตการก\nการิตวาจก\nการุญ\nการุณย์\nกาเรการ่อน\nกาล\nกาลกรรณี\nกาลกิณี\nกาลจักร\nกาลัญญุตา\nกาลัญญู\nกาลัด\nกาลานุกาล\nกาลิก\nกาลี\nกาแล\nกาแล็กซี\nกาแล็กโทส\nกาว\nก้าว\nกาววาว\nกาวาง\nกาแวน\nกาศิก\nกาษฐะ\nกาษา\nกาสร\nกาสะ\nกาสา\nกาสาร\nกาสาวะ\nกาสิโน\nกาหล\nกาหลง\nกาหลา\nกาเหว่า\nกาไหล่\nกาฬ\nกาฬาวก\nกาฮัง\nกำ\nก่ำ\nกำกวม\nกำกัด\nกำกับ\nก้ำกึ่ง\nกำกูน\nก้ำเกิน\nกำเกียง\nกำคูน\nกำจร\nกำจัด\nกำจาย\nกำชับ\nกำชำ\nกำซาบ\nกำซำ\nกำด้น\nกำดัด\nกำดาล\nกำเดา\nกำธร\nกำนล\nกำนัน\nกำนัล\nกำเนิด\nกำบัง\nก่ำบึ้ง\nกำเบ้อ\nกำปอ\nกำปั่น\nกำผลา\nกำพง\nกำพด\nกำพต\nกำพร้า\nกำพราก\nกำพวด\nกำพอง\nกำพืด\nกำพุด\nกำพู\nกำเพลิง\nกำแพง\nกำภู\nกำมลาศน์\nกำมเลศ\nกำมะถัน\nกำมะลอ\nกำมะหยี่\nกำมะหริด\nกำมังละการ\nกำมังวิลิต\nกำมัชพล\nกำยาน\nกำยำ\nกำรอ\nกำราบ\nกำราล\nกำเริบ\nกำไร\nกำลัง\nกำลุง\nกำเลา\nกำไล\nกำสรด\nกำสรวล\nกำหนด\nกำหนัด\nกำเหน็จ\nกำแหง\nกิก\nกิ๊ก\nกิ่ง\nกิ้งก่า\nกิ้งกือ\nกิ้งโครง\nกิจ\nกิจจะ\nกิจจา\nกิดาการ\nกิดาหยัน\nกิตติ\nกิตติมศักดิ์\nกิน\nกินนร\nกินปลี\nกินเปี้ยว\nกินริน\nกินรี\nกิ๊บ\nกิมตึ๋ง\nกิมิชาติ\nกิมิวิทยา\nกิโมโน\nกิโยตีน\nกิระ\nกิริณี\nกิรินท\nกิริเนศวร\nกิริยา\nกิเลน\nกิเลส\nกิโล\nกิโลมกะ\nกิ่ว\nกิ๋ว\nกี\nกี่\nกี้\nกี๊\nกี๋\nกีฏวิทยา\nกีด\nกีตาร์\nกีบ\nกีรติ\nกีฬา\nกึก\nกึง\nกึ่ง\nกึ๋น\nกุ\nกุก\nกุ๊ก\nกุกกุฏ\nกุกกุร\nกุกรรม\nกุ้ง\nกุงอน\nกุงาน\nกุโงก\nกุจี\nกุญแจ\nกุญชร\nกุฎ\nกุฎา\nกุฎี\nกุฎุมพี\nกุฏฐัง\nกุฏิ\nกุณฑ์\nกุณฑล\nกุณฑี\nกุณโฑ\nกุณาล\nกุณี\nกุด\nกุดัง\nกุดั่น\nกุดา\nกุทัณฑ์\nกุน\nกุ๊น\nกุนเชียง\nกุนที\nกุโนกามอ\nกุบ\nกุบกับ\nกุม\nกุ่ม\nกุมฝอย\nกุมภ์\nกุมภนิยา\nกุมภัณฑ์\nกุมภา\nกุมภิล\nกุมภีล์\nกุมเหง\nกุมาร\nกุมารา\nกุมารี\nกุมุท\nกุย\nกุ๊ย\nกุ๋ย\nกุยช่าย\nกุยเฮง\nกุรระ\nกุรุพินท์\nกุเรา\nกุล\nกุลา\nกุลาหล\nกุลี\nกุลีกุจอ\nกุเลา\nกุแล\nกุเวร\nกุศราช\nกุศล\nกุศโลบาย\nกุสุม\nกุสุมภ์\nกุสุมา\nกุสุมาลย์\nกุสุมิตลดาเวลลิตา\nกุหนี\nกุหนุง\nกุหร่า\nกุหล่า\nกุหลาบ\nกุแหละ\nกู\nกู่\nกู้\nกู๊ก\nกูฏ\nกูฏา\nกูณฑ์\nกูด\nกูบ\nกูปรี\nกูรมะ\nกูรมาวตาร\nเก\nเก้\nเก๊\nเก๋\nเกก\nเก๊ก\nเกกมะเหรก\nเก๊กฮวย\nเก้กัง\nเก็ง\nเก่ง\nเก้ง\nเก๋ง\nเกงกอย\nเก่งกาจ\nเกงเขง\nเก๋งเคง\nเก็จ\nเกจิอาจารย์\nเกชา\nเกณฑ์\nเกด\nเก็ด\nเกตุ\nเกน\nเก็บ\nเกม\nเกย\nเกยูร\nเกรง\nเกร็ง\nเกร็ด\nเกรน\nเกร่อ\nเกรอะ\nเกราะ\nเกริก\nเกริน\nเกริ่น\nเกรียก\nเกรียง\nเกรียด\nเกรียน\nเกรียบ\nเกรียม\nเกรียว\nเกรี้ยว\nเกเร\nเกล็ด\nเกลศ\nเกลอ\nเกลา\nเกล้า\nเกลาะ\nเกลี่ย\nเกลี้ย\nเกลียง\nเกลี้ยง\nเกลียด\nเกลียว\nเกลือ\nเกลื้อ\nเกลือก\nเกลื่อน\nเกลื้อน\nเกวัฏ\nเกวียน\nเกศ\nเกศว\nเกศวะ\nเกศา\nเกศินี\nเกศี\nเกษตร\nเกษม\nเกษียณ\nเกษียน\nเกษียร\nเกส\nเกสร\nเกสรี\nเกสา\nเกสี\nเก้อ\nเกอิชา\nเกะ\nเกะกะ\nเกา\nเก่า\nเก้า\nเก๋า\nเกาต์\nเกาทัณฑ์\nเกาบิล\nเกาลัด\nเกาลิน\nเกาไศย\nเกาหลี\nเกาเหลา\nเกาเหลียง\nเก้าอี้\nเกาะ\nเกิ้ง\nเกิด\nเกิน\nเกิบ\nเกีย\nเกียกกาย\nเกียง\nเกี่ยง\nเกี๋ยง\nเกียจ\nเกียด\nเกียน\nเกี้ยมไฉ่\nเกี้ยมอี๋\nเกียร์\nเกียรติ\nเกียรติ์\nเกี่ยว\nเกี้ยว\nเกี๊ยว\nเกี๊ยะ\nเกื้อ\nเกือก\nเกื้อกูล\nเกือบ\nแก\nแก่\nแก้\nแกง\nแก่ง\nแก้ง\nแก๊ง\nแกงได\nแกงแนง\nแกโดลิเนียม\nแกน\nแก่น\nแก๊ป\nแกม\nแก้ม\nแกมมา\nแกรก\nแกร่ง\nแกร็น\nแกรนิต\nแกรไฟต์\nแกร่ว\nแกระ\nแกล\nแกล้ง\nแกลน\nแกลบ\nแกล้ม\nแกลลอน\nแกลเลียม\nแกล้ว\nแกละ\nแกแล\nแกว\nแก้ว\nแกว่ง\nแก๊ส\nแกะ\nโก\nโก่\nโก้\nโก๋\nโกก\nโกกนุท\nโกกิลา\nโกโก้\nโกง\nโก่ง\nโกงกาง\nโก้งเก้ง\nโกงโก้\nโก้งโค้ง\nโกเชาว์\nโกญจนาท\nโกญจา\nโกฏิ\nโกฐ\nโกฐาส\nโกณะ\nโกดัง\nโกทัณฑ์\nโกน\nโก่น\nโก๋น\nโกมล\nโกมุท\nโกเมน\nโกเมศ\nโกย\nโกรก\nโกรกกราก\nโกรง\nโกร่ง\nโกร่งกร่าง\nโกรงเกรง\nโกร๋งเกร๋ง\nโกรญจ\nโกรต๋น\nโกรธ\nโกรธา\nโกร๋น\nโกรม\nโกรย\nโกรศ\nโกโรโกเต\nโกโรโกโรก\nโกโรโกโส\nโกลน\nโกลาหล\nโกไล\nโกวิท\nโกศ\nโกศล\nโกษม\nโกสน\nโกสัช\nโกสินทร์\nโกสีย์\nโกสุม\nโกไสย\nโกหก\nใกล้\nไก\nไก่\nไก๊\nไก๋\nไก่กอม\nไกพัล\nไกร\nไกรพ\nไกรลาส\nไกรศร\nไกรศรี\nไกรสร\nไกรสรี\nไกรสิทธิ\nไกล\nไกล่\nไกลาส\nไกว\nไกวัล\nขงจื๊อ\nขจร\nขจรจบ\nขจัด\nขจ่าง\nขจาย\nขจาว\nขจิต\nขจี\nขจุย\nขเจา\nขณะ\nขด\nขน\nข้น\nขนง\nขนด\nขนบ\nขนม\nขนอง\nขนอน\nขนอบ\nขนัด\nขนัน\nขนาก\nขนาง\nขนาด\nขนาน\nขนาบ\nขนาย\nขนำ\nขนิษฐ\nขนิษฐา\nขนุน\nขนุนนก\nขบ\nขบถ\nขบวน\nขบวร\nขม\nข่ม\nขมงโกรย\nขมวด\nขมวน\nขมอง\nขม่อม\nขมัง\nขมับ\nขมา\nขม้ำ\nขมิ้น\nขมิบ\nขมีขมัน\nขมึง\nขมึงทึง\nขมุ\nขมุกขมัว\nขมุบ\nขโมย\nขยด\nขยม\nขย่ม\nขยอก\nขยอง\nขย่อน\nขย้อน\nขยะ\nขยัก\nขยัน\nขยั้น\nขยับ\nขยาด\nขยาย\nขยำ\nขย้ำ\nขยิก\nขยิบ\nขยิ่ม\nขยี้\nขยุกขยิก\nขยุกขยุย\nขยุบ\nขยุบขยิบ\nขยุม\nขยุ้ม\nขยุย\nขรม\nขรรค์\nขรัว\nขริบ\nขรี\nขรึม\nขรุขระ\nขลบ\nขล้อ\nขลัง\nขลับ\nขลาด\nขลาย\nขลิบ\nขลุก\nขลุกขลัก\nขลุกขลิก\nขลุบ\nขลุม\nขลุ่ย\nขลู\nขลู่\nขวง\nข่วง\nขวด\nข่วน\nขวนขวาย\nขวบ\nขวย\nขวักไขว่\nขวัญ\nขวั้น\nขวับ\nขวับเขวียว\nขวา\nขวาก\nขวาง\nขว้าง\nขวาด\nขวาน\nขวายขวน\nขวาว\nขว้าว\nขวิด\nขอ\nข่อ\nข้อ\nของ\nข้อง\nขอด\nขอน\nข้อน\nขอบ\nขอม\nข่อย\nข้อย\nข่อยหยอง\nขะแจะ\nขะเน็ด\nขะมอมขะแมม\nขะมักเขม้น\nขะมุกขะมอม\nขะยิก\nขะยุก\nขะเย้อแขย่ง\nขัค\nขัง\nขังขอก\nขัช\nขัณฑสกร\nขัณฑสีมา\nขัด\nขัดมอน\nขัตติยมานะ\nขัน\nขั้น\nขันติ\nขันตี\nขันโตก\nขันที\nขันธ์\nขันธาวาร\nขับ\nขัว\nขั้ว\nขา\nข่า\nข้า\nขาก\nขาก๊วย\nขาง\nข่าง\nข้าง\nขาณุ\nขาด\nขาทนียะ\nขาน\nขาบ\nข้าพเจ้า\nขาม\nข่าม\nข้าม\nขาย\nข่าย\nขาล\nขาว\nข่าว\nข้าว\nข้าวอังกุลี\nขำ\nขิก\nขิง\nขิงแกลง\nขิงแครง\nขิด\nขิปสัทโท\nขิม\nขี่\nขี้\nขี้เข็บ\nขีณาสพ\nขีด\nขี้ตังนี\nขีปนาวุธ\nขี้ยอก\nขีระ\nขึง\nขึ้ง\nขึ้น\nขึ้นฉ่าย\nขืน\nขื่น\nขื่อ\nขุก\nขุด\nขุน\nขุ่น\nขุนเพ็ด\nขุม\nขุย\nขู่\nขูด\nเข\nเข้\nเขก\nเข็ง\nเข่ง\nเขจร\nเข็ญ\nเข็ด\nเขดา\nเขต\nเขน\nเข็น\nเข่น\nเขนง\nเขน็ด\nเขนย\nเขบ็จขบวน\nเขบ็ต\nเขม\nเข็ม\nเข้ม\nเข้มขาบ\nเขม็ง\nเขม็ดแขม่\nเขม่น\nเขม้น\nเขม้นขะมัก\nเขมร\nเขมา\nเขม่า\nเขมือบ\nเขย\nเขยก\nเขย่ง\nเขย้อแขย่ง\nเขย่า\nเขยิน\nเขยิบ\nเขยื้อน\nเขรอะ\nเขลง\nเขลอะ\nเขละ\nเขลา\nเขลาะ\nเขว\nเขษม\nเขฬะ\nเขะขะ\nเขา\nเข่า\nเข้า\nเขิง\nเขิน\nเขิบ\nเขี่ย\nเขียง\nเขียด\nเขียดตะปาด\nเขียน\nเขี่ยน\nเขียม\nเขียว\nเขี้ยว\nเขียะ\nเขือ\nเขือง\nเขื่อง\nเขื่อน\nเขือม\nแข\nแข้\nแขก\nแข็ง\nแข่ง\nแข้ง\nแขน\nแข่น\nแข้น\nแขนง\nแขม\nแขม็บ\nแขม่ว\nแขยง\nแขย่ง\nแขวก\nแขวง\nแขวน\nแขวะ\nโข\nโขก\nโขง\nโข่ง\nโขด\nโขดง\nโขน\nโขนง\nโขม\nโขมง\nโขมด\nโขยก\nโขยง\nโขย่ง\nโขยด\nโขลก\nโขลง\nโขลน\nโขษม\nไข\nไข่\nไข้\nไขว่\nไขว้\nคคนะ\nคคนัมพร\nคคนางค์\nคคนานต์\nคง\nคงคา\nคงไคย\nคช\nคชาชาติ\nคชาชีพ\nคชาธาร\nคชาภรณ์\nคณนา\nคณบดี\nคณะ\nคณาจารย์\nคณาธิการ\nคณาธิปไตย\nคณานับ\nคณิกา\nคณิต\nคเณศ\nคด\nคดี\nคติ\nคทา\nคน\nค้น\nคนทา\nคนทิสอ\nคนที\nคนโท\nคนธ์\nคันธ์\nคนธรรพ์\nคเนจร\nคบ\nคม\nคมน์\nคมนาการ\nคมนาคม\nคมิกภัต\nครก\nครบ\nครรชิต\nครรภ\nครรภ์\nครรลอง\nครรโลง\nครรไล\nครวญ\nครวี\nครหา\nครอก\nครอง\nครองแครง\nคร่อเงาะ\nคร่อเทียน\nครอบ\nคร่อม\nคระเมิม\nคระแลง\nคระไล\nคระแวง\nคระหน\nคระหวน\nคระหาย\nคระโหย\nครั่ง\nครั้ง\nครัดเคร่ง\nครัน\nครั่น\nครั้น\nครับ\nครัว\nครา\nคร่า\nคราก\nคราง\nคราญ\nคราด\nคร้าน\nคราบ\nคราม\nคร้าม\nครามครัน\nคราว\nคร่าว\nคราส\nครำ\nคร่ำ\nคร่ำเคร่ง\nคริปทอน\nคริสต์\nครีบ\nครีม\nครีษมายัน\nครึ\nครึกครื้น\nครึกโครม\nครึ่ง\nครึ่ด\nครึน\nครึ้ม\nครืด\nครืน\nครื้น\nครืนครั่น\nครื้นครั่น\nครื้นครึก\nครื้นเครง\nครือ\nครุ\nครุคระ\nครุฑ\nครุ่น\nครุมเครือ\nครุย\nครุวนา\nครู\nครู่\nครูด\nคฤโฆษ\nคฤนถ์\nคฤหบดี\nคฤหัสถ์\nคฤหาสน์\nคลวง\nคลอ\nคล้อ\nคลอก\nคลอง\nคล่อง\nคล้อง\nคลอด\nคลอน\nคล้อย\nคลอรีน\nคลอโรฟอร์ม\nคลอโรฟีลล์\nคละ\nคละคลุ้ง\nคลัก\nคลั่ก\nคลัง\nคลั่ง\nคลัตช์\nคลับคล้าย\nคลับคลา\nคลา\nคล้า\nคลางแคลง\nคลาด\nคลาน\nคลาย\nคล้าย\nคล้ายคลึง\nคล่าว\nคลำ\nคล่ำ\nคล้ำ\nคลิ้งโคลง\nคลิด\nคลินิก\nคลี\nคลี่\nคลึง\nคลื่น\nคลุก\nคลุ้ง\nคลุบ\nคลุม\nคลุ่ม\nคลุ้ม\nควง\nควณ\nควน\nควบ\nควย\nควร\nควัก\nควั่ก\nควั่งคว้าง\nควัน\nควั่น\nคว้า\nควาก\nคว้าง\nควาญ\nควาน\nคว้าน\nความ\nควาย\nคว่าว\nคว่ำ\nควินิน\nควิวคว่าง\nคหกรรม\nคหกรรมศาสตร์\nคหบดี\nคหัฐ\nคอ\nค้อ\nคอก\nค็อกคัส\nค็อกเทล\nคอเคซอยด์\nค่องอ้อย\nคอด\nคอแดง\nคอน\nค่อน\nค้อน\nคอนกรีต\nคอนเดนเซอร์\nคอนแวนต์\nคอนเสิร์ต\nคอม\nค่อม\nค้อม\nคอมพิวเตอร์\nคอมมานโด\nคอมมิวนิสต์\nคอย\nค่อย\nค้อย\nคอยล์\nคอร์ด\nคอแลน\nคอสติกโซดา\nคะ\nค่ะ\nคะไขว่\nคะค้อย\nคะคาน\nคะนน\nคะนอง\nคะน้า\nคะนึง\nคะเน\nคะเนงร้าย\nคะเน็ด\nคะแนน\nคะมำ\nคะยั้นคะยอ\nคะเยอ\nคัก\nคั่ก\nคัคนะ\nคัคนัมพร\nคัคนางค์\nคัคนานต์\nคั่ง\nคังไคย\nคัจฉ\nคัณฑมาลา\nคัณฑสูตร\nคัด\nคัดเค้า\nคัดมอน\nคัดเม็ง\nคัทลียา\nคัน\nคั่น\nคั้น\nคันถรจนาจารย์\nคันธกุฎี\nคันธมาทน์\nคันธารราษฎร์\nคับ\nคับค้อน\nคับคา\nคับแค\nคัพภ์\nคัมภีร์\nคัมภีรภาพ\nคัล\nคั่ว\nคา\nค่า\nค้า\nค่าคบ\nคาง\nค่าง\nค้าง\nคางคก\nค้างคาว\nคาด\nคาถา\nคาทอลิก\nคาน\nค้าน\nคาบ\nคาพยุต\nคาม\nคามวาสี\nคามณีย์\nคามภีร์\nคาย\nค่าย\nคาร์บอน\nคาร์บอเนต\nคาร์บอลิก\nคาร์บูเรเตอร์\nคาร์โบรันดัม\nคาร์โบไฮเดรต\nคารม\nคารวะ\nคาราเต้\nคาราวาน\nคาว\nค่าว\nค้าว\nคาวตอง\nคาวี\nคาวุต\nคาส\nคำ\nค่ำ\nค้ำ\nคำนวณ\nคำนวร\nคำนับ\nคำนัล\nคำนึง\nคำนูณ\nคำฝอย\nคำเพลิง\nคำรน\nคำรบ\nคำราม\nคำแสด\nคำแหง\nคำโอง\nคิก\nคิง\nคิด\nคิมหันต์\nคิรี\nคิลาน\nคิลานะ\nคิว\nคิ้ว\nคี่\nคีต\nคีบ\nคีม\nคีรี\nคีรีบูน\nคึก\nคึ่ก\nคึกคัก\nคืน\nคืบ\nคือ\nคุ\nคุก\nคุกกี้\nคุกคาม\nคุกพาทย์\nคุ้ง\nคุณ\nคุด\nคุดทะราด\nคุต\nคุตติ\nคุ่น\nคุ้น\nคุป\nคุปต์\nคุปติ\nคุม\nคุ่ม\nคุ้ม\nคุย\nคุ้ย\nคุยหฐาน\nคุยหประเทศ\nคุรุ\nคุลา\nคุลิก่า\nคุลีการ\nคุหา\nคู\nคู่\nคู้\nคูณ\nคูถ\nคูน\nคูปอง\nคูเรียม\nคูหา\nเค้ก\nเค้เก้\nเค้ง\nเคณฑะ\nเคด\nเค็ด\nเคน\nเค้น\nเคเบิล\nเค็ม\nเคมี\nเคย\nเครง\nเคร่ง\nเครงครา\nเครงครำ\nเครดิต\nเครน\nเครา\nเคร่า\nเคราหณี\nเคราะห์\nเครียด\nเครียว\nเครือ\nเครื่อง\nเคล้ง\nเคล็ด\nเคล้น\nเคล้า\nเคล่าคล่อง\nเคลิบเคลิ้ม\nเคลิ้ม\nเคลีย\nเคลื่อน\nเคลือบ\nเคว้ง\nเคหะ\nเคหา\nเคอะ\nเค้า\nเคาน์เตอร์\nเคารพ\nเคาะ\nเคาะแคะ\nเคียง\nเคียด\nเคียน\nเคียม\nเคี่ยม\nเคียร\nเคียว\nเคี่ยว\nเคี้ยว\nเคือง\nแค\nแค่\nแค้\nแคแล\nแคดเมียม\nแค็ตตาล็อก\nแคแตร\nแคโทด\nแคน\nแค่น\nแค้น\nแคบ\nแคบหมู\nแคปซูล\nแคม\nแคร่\nแครก\nแครง\nแคระ\nแคลคูลัส\nแคลง\nแคลเซียม\nแคลน\nแคล้ว\nแคล่วคล่อง\nแคลอรี\nแคลิฟอร์เนียม\nแคว\nแควก\nแคว้น\nแคแสด\nแคะ\nโค\nโคก\nโคเคน\nโค่ง\nโค้ง\nโคจร\nโคเซแคนต์\nโคไซน์\nโคตร\nโคแทนเจนต์\nโคธา\nโคน\nโค่น\nโคบอลต์\nโคปผกะ\nโคม\nโคม่า\nโครก\nโครกคราก\nโครง\nโคร่ง\nโคร่งคร่าง\nโครม\nโครเมียม\nโครโมโซม\nโคราช\nโครำ\nโคล\nโคลง\nโคลน\nโควตา\nโคออร์ดิเนต\nใคร\nใคร่\nใคร่ครวญ\nไค\nไค้\nไคร้\nไคร้เครือ\nไคล\nไคล้\nฆนะ\nฆราวาส\nฆ้อง\nฆ่า\nฆาต\nฆาน\nฆานินทรีย์\nเฆี่ยน\nโฆรวิส\nโฆษก\nโฆษณา\nโฆษะ\nโฆษิต\nงก\nงง\nงด\nงดงาม\nงบ\nงม\nงวง\nง่วง\nงวด\nง่วน\nง้วน\nงวยงง\nงอ\nง้อ\nงอก\nงอกแงก\nง่อกแง่ก\nง่อง\nง่องแง่ง\nงอแง\nงอด\nงอดแงด\nงอน\nง่อน\nง่อนแง่น\nงอนหง่อ\nงอบ\nงอม\nง้อม\nงอย\nง่อย\nงัก\nงั่ก\nงั่ง\nงัด\nงัน\nงันงก\nงับ\nงัว\nงั่ว\nงัวเงีย\nงา\nง่า\nง้าง\nงาน\nง่าน\nงาบ\nงาม\nง่าม\nงาย\nง่าย\nง้าว\nงำ\nง่ำ\nง้ำ\nงิ้ว\nงี่เง่า\nงีบ\nงึก\nงึน\nงึม\nงุด\nงุนงง\nงุ่นง่าน\nงุบ\nงุบงิบ\nงุ้ม\nงุ่มง่าม\nงุย\nงู\nงูบ\nงูสวัด\nเงก\nเงย\nเงอะ\nเงอะงะ\nเงา\nเง่า\nเง้า\nเงาะ\nเงิน\nเงี่ยง\nเงี่ยน\nเงียบ\nเงี้ยว\nเงี่ยหู\nเงื้อ\nเงือก\nเงื่อง\nเงือด\nเงื่อน\nเงือบ\nเงื้อม\nแง\nแง่\nแง่ง\nแง่น\nแง้ม\nแงะ\nโง\nโง่\nโงก\nโงกเงก\nโงง\nโง่ง\nโง้ง\nโงงเงง\nโง่งเง่ง\nโงเง\nโงน\nโงนเงน\nไง้\nจก\nจง\nจ่ง\nจงกรม\nจงกล\nจงกลนี\nจงโคร่ง\nโจงโคร่ง\nจงอร\nจงอาง\nจด\nจดุรงค์\nจตุปัจจัย\nจตุลังคบาท\nจตุโลกบาล\nจตุสดมภ์\nจตุตถ\nจตุตถี\nจตุร\nจตุรงค์\nจตุรพักตร์\nจตุรพิธ\nจตุรพิธพร\nจน\nจบ\nจม\nจ่ม\nจมร\nจมรี\nจมูก\nจยุติ\nจร\nจรณะ\nจรด\nจรรจา\nจรรโจษ\nจรรม\nจรรยา\nจรรโลง\nจรลี\nจรวจ\nจรวด\nจรส\nจรอก\nจระเข้\nจระนำ\nจระบี\nจรัล\nจรัส\nจราจร\nจราญ\nจริก\nจริง\nจริต\nจริม\nจริยธรรม\nจริยวัตร\nจริยาวัตร\nจริยศาสตร์\nจริยศึกษา\nจริยา\nจรุง\nจรูง\nจรูญ\nจเร\nจล\nจลนพลศาสตร์\nจลนศาสตร์\nจลนี\nจลาจล\nจวก\nจ๊วก\nจวง\nจ้วง\nจ๋วง\nจวด\nจวน\nจวบ\nจวัก\nจอ\nจ่อ\nจ้อ\nจ๋อ\nจอก\nจ้อก\nจ๊อก\nจ้อกแจ้ก\nจอง\nจ้อง\nจ๋อง\nจ้องเต\nจองเปรียง\nจ้องหน่อง\nจองหอง\nจอแจ\nจ๋อแจ๋\nจอด\nจอน\nจ้อน\nจอนจ่อ\nจอบ\nจอม\nจ่อม\nจอมสุรางค์\nจ่อย\nจ้อย\nจ๋อย\nจอแส\nจะ\nจ้ะ\nจ๊ะ\nจ๋ะ\nจะกละ\nจะกลาม\nจะกูด\nจะขาบ\nจะเข้\nจะเข็บ\nจะงอย\nจะจะ\nจ๊ะจ๋า\nจะแจ้ง\nจะแจ่ม\nจะละเม็ด\nจะละหวั่น\nจัก\nจั้ก\nจักกาย\nจั๊กกิ้ม\nจักขุ\nจักจั่น\nจักจี้\nจั๊กจี้\nจั๊กเดียม\nจักร\nจักรพาก\nจักรวาก\nจักริน\nจักรี\nจั๊กเล้อ\nจักษุ\nจักแหล่น\nจัง\nจั้ง\nจั๋ง\nจังกวด\nจังกอบ\nจังก้า\nจังกูด\nจังโกฏก์\nจังงัง\nจั้งมั่ง\nจังไร\nจังหนับ\nจังหรีด\nจังหวะ\nจังหวัด\nจังหัน\nจัญไร\nจัณฑ์\nจัณฑาล\nจัด\nจัตตาฬีสะ\nจัตวา\nจัตุ\nจัตุรงค์\nจัตุรัส\nจัตุลังคบาท\nจัตุโลกบาล\nจัตุสดมภ์\nจัน\nจั่น\nจันโจษ\nจั่นดิน\nจันท์\nจันทน์\nจันทร์\nจันทรคติ\nจันทรคราส\nจันทรุปราคา\nจันทรเม็ด\nจันทวาร\nจันทัน\nจันอับ\nจับ\nจับกัง\nจับฉ่าย\nจับเดิม\nจับปิ้ง\nจับยี่กี\nจัมบก\nจัมปกะ\nจัมปา\nจัมมะ\nจัว\nจั่ว\nจั๊วะ\nจา\nจ่า\nจ้า\nจ๋า\nจาก\nจากพาก\nจาคะ\nจาคี\nจาง\nจ่าง\nจ้าง\nจางปาง\nจางวาง\nจาด\nจาตุรงค์\nจาตุรนต์\nจาตุรันต์\nจาน\nจ้าน\nจาบ\nจาบัล\nจาบัลย์\nจาป\nจาม\nจ่ามงกุฎ\nจามจุรี\nจามร\nจามรี\nจามีกร\nจ่าย\nจาร\nจ่ารง\nจารวาก\nจาระไน\nจาระบี\nจาริก\nจารึก\nจารี\nจารีต\nจารุ\nจ้าละหวั่น\nจาว\nจ้าว\nจ่าหวัก\nจำ\nจ้ำ\nจำกัด\nจำงาย\nจ้ำจี้\nจำเจ\nจำเดิม\nจำทวย\nจำนง\nจำนน\nจำนรรจ์\nจำนรรจา\nจำนวน\nจำนอง\nจำนัล\nจำนำ\nจำเนียน\nจำเนียม\nจำเนียร\nจำแนก\nจำบ่ม\nจำบัง\nจ้ำเบ้า\nจำปา\nจำปาดะ\nจำปี\nจำปูน\nจำพวก\nจำเพาะ\nจ้ำม่ำ\nจำรัส\nจำราญ\nจำรูญ\nจำเริญ\nจำเรียง\nจำลอง\nจำเลย\nจำเลาะ\nจำแลง\nจำแล่น\nจำหนับ\nจ๋ำหนับ\nจำหน่าย\nจำหระ\nจำหล่อ\nจำหลัก\nจำเหียง\nจำอวด\nจิ\nจิก\nจิ้งโกร่ง\nจิ้งจก\nจิงจ้อ\nจิ้งจอก\nจิงจัง\nจิ้งจัง\nจิงโจ้\nจิ้งหรีด\nจิ้งเหลน\nจิต\nจิตกาธาน\nจิตต์\nจิตร\nจิตรจุล\nจิตระ\nจิตรา\nจินเจา\nจินดา\nจินดาหนา\nจินดาหรา\nจินต์\nจิบ\nจิปาถะ\nจิ่ม\nจิ้ม\nจิ้มก้อง\nจิ้มลิ้ม\nจิรกาล\nจิ๋ว\nจี\nจี่\nจี้\nจี๋\nจี๋จ้อ\nจีแจ๊บ\nจี๊ด\nจีน\nจีนแส\nจีบ\nจีโบ\nจีม\nจีวร\nจึง\nจึ่ง\nจึ้ง\nจืด\nจุ\nจุก\nจุ๊กกรู๊\nจุกจิก\nจุกชี\nจุกผาม\nจุกโรหินี\nจุ่ง\nจุ๋งจิ๋ง\nจุฑา\nจุณ\nจุณณียบท\nจุด\nจุติ\nจุตูปปาตญาณ\nจุทส\nจุน\nจุ่น\nจุ้น\nจุนจู๋\nจุ้นจู๊\nจุนทการ\nจุนสี\nจุบ\nจุ๊บ\nจุบจิบ\nจุ๊บแจง\nจุ่ม\nจุ้ม\nจุ๋มจิ๋ม\nจุมพฏ\nจุมพรวด\nจุมพล\nจุมพิต\nจุมโพล่\nจุ้ย\nจุรณ\nจูรณ\nจุรี\nจุไร\nจุล\nจุลจอมเกล้า\nจุลวงศ์\nจุฬา\nจุฬาราชมนตรี\nจุฬาลัมพา\nจุฬาลำพา\nจู\nจู่\nจู้\nจู๋\nจูง\nจู้จี้\nจู๋จี๋\nจู๊ด\nจูบ\nเจ\nเจ๊ก\nเจ่ง\nเจ้ง\nเจ๊ง\nเจ๋ง\nเจ็ด\nเจ็ดตะคลี\nเจดีย์\nเจดียสถาน\nเจต\nเจตนา\nเจตพังคี\nเจตมูลเพลิง\nเจตสิก\nเจโตวิมุติ\nเจน\nเจ็บ\nเจรจา\nเจริญ\nเจริด\nเจรียง\nเจลียง\nเจว็ด\nเจษฎา\nเจ๊สัว\nเจอ\nเจ่อ\nเจ๋อ\nเจ๋อเจ๊อะ\nเจอร์เมเนียม\nเจอะ\nเจา\nเจ่า\nเจ้า\nเจ๊า\nเจาะ\nเจิ่ง\nเจิด\nเจิ่น\nเจิม\nเจีย\nเจียง\nเจียด\nเจียน\nเจี๋ยน\nเจี๊ยบ\nเจียม\nเจี๋ยมเจี้ยม\nเจียร\nเจียระไน\nเจียระบาด\nเจียว\nเจี๊ยวจ๊าว\nเจือ\nเจื่อน\nเจื้อย\nเจือสม\nแจ\nแจ้\nแจ๋\nแจก\nแจกัน\nแจง\nแจ่ง\nแจ้ง\nแจงลอน\nแจ๊ด\nแจ๊ดแจ๋\nแจตร\nแจ้น\nแจบ\nแจ่ม\nแจรง\nแจว\nแจ่ว\nแจ้ว\nแจ๋ว\nแจะ\nโจก\nโจ๊ก\nโจง\nโจ่งครึ่ม\nโจ๋งครึ่ม\nโจ่งครุ่ม\nโจ๋งเจ๋ง\nโจ่งแจ้ง\nโจท\nโจทก์\nโจทนา\nโจทย์\nโจน\nโจม\nโจร\nโจล\nโจษ\nโจษจัน\nใจ\nไจ\nไจ้\nฉก\nฉกรรจ์\nฉกษัตริย์\nฉกาจ\nฉกามาพจร\nฉกามาวจร\nฉง\nฉงน\nฉงาย\nฉทึง\nฉนวน\nฉนัง\nฉนาก\nฉนำ\nฉบัง\nฉบัด\nฉบับ\nฉบำ\nฉม\nฉมบ\nฉมวก\nฉมวย\nฉม่อง\nฉมัง\nฉมัน\nฉมา\nฉมำ\nฉล\nฉลวย\nฉลอง\nฉลอม\nฉลัก\nฉลับ\nฉลาก\nฉลาง\nฉลาด\nฉลาม\nฉลาย\nฉลิว\nฉลีก\nฉลุ\nฉลู\nฉวย\nฉวะ\nฉวัดเฉวียน\nฉวาง\nฉวี\nฉศก\nฉ้อ\nฉอก\nฉ่อง\nฉอด\nฉ่อย\nฉอเลาะ\nฉะ\nฉะฉาด\nฉะฉาน\nฉะฉ่ำ\nฉะฉี่\nฉะเฉื่อย\nฉะนั้น\nฉะนี้\nฉะอ้อน\nฉักกะ\nฉัฐ\nฉัด\nฉัตร\nฉัททันต์\nฉัน\nฉันท\nฉันท์\nฉันทะ\nฉันทา\nฉันทาคติ\nฉันทานุมัติ\nฉับ\nฉัพพรรณรังสี\nฉัยยา\nฉ่า\nฉาก\nฉาง\nฉ่าง\nฉ่าฉาว\nฉาด\nฉาดฉาน\nฉาตกภัย\nฉาน\nฉาบ\nฉาบฉวย\nฉาย\nฉายา\nฉาว\nฉ่ำ\nฉำฉา\nฉำแฉะ\nฉิ่ง\nฉิน\nฉินท์\nฉินทฤกษ์\nฉิบ\nฉิมพลี\nฉิว\nฉี่\nฉีก\nฉีด\nฉุ\nฉุก\nฉุด\nฉุน\nฉุป\nฉุป\nฉุย\nฉุยฉาย\nฉู่\nฉู่ฉี่\nฉูด\nฉูดฉาด\nเฉ\nเฉก\nเฉโก\nเฉ่ง\nเฉด\nเฉท\nเฉนียน\nเฉพาะ\nเฉย\nเฉลย\nเฉลว\nเฉลา\nเฉลิม\nเฉลี่ย\nเฉลียง\nเฉลี่ยง\nเฉลียบ\nเฉลียว\nเฉวียง\nเฉวียน\nเฉอะแฉะ\nเฉา\nเฉาก๊วย\nเฉาฮื้อ\nเฉาะ\nเฉิด\nเฉิบ\nเฉียง\nเฉียงพร้านางแอ\nเฉียด\nเฉียบ\nเฉียว\nเฉี่ยว\nเฉือน\nเฉื่อย\nแฉ\nแฉ่\nแฉก\nแฉง\nแฉ่ง\nแฉลบ\nแฉล้ม\nแฉะ\nโฉ\nโฉ่\nโฉเก\nโฉ่งฉ่าง\nโฉงเฉง\nโฉด\nโฉนด\nโฉบ\nโฉเบ๊\nโฉม\nโฉลก\nไฉน\nไฉไล\nชก\nชคัตตรัย\nชง\nชงโค\nชงฆ์\nชงฆา\nชงโลง\nชฎา\nชฎามังษี\nชฎามังสี\nชฎิล\nชด\nชน\nชนก\nชนนี\nชนม์\nชนวน\nชนะ\nชนัก\nชนา\nชนาง\nชนิด\nชเนตตี\nชบา\nชม\nชมดชม้อย\nชมนาด\nชมพู\nชมพู่\nชมรม\nชม้อย\nชม้าย\nชไม\nชยา\nชโย\nชรทึง\nชรริน\nชรอุ่ม\nชระล้ำ\nชระลุ\nชระอาบ\nชระเอม\nชรัด\nชรา\nชล\nชโลง\nชโลม\nช่วง\nชวด\nชวน\nชวย\nช่วย\nชวร\nชวลิต\nชวา\nชวาล\nชวาลา\nช่อ\nชอก\nช็อก\nช็อกโกเลต\nช็อกโกแลต\nชอง\nช่อง\nช้อง\nชองระอา\nชอน\nช่อน\nช้อน\nชอบ\nชอม\nช้อย\nชอล์ก\nชอ่ำ\nชอุ่ม\nชะ\nชะคราม\nชะงอก\nชะง่อน\nชะงัก\nชะงัด\nชะง้ำ\nชะงุ้ม\nชะเง้อ\nชะเงื้อม\nชะแง้\nชะโงก\nชะฉ่า\nชะช่อง\nชะชะ\nชะช้า\nชะโด\nชะตา\nชะต้า\nชะนี\nชะเนาะ\nชะเนียง\nชะพลู\nชะเพลิง\nชะมด\nชะมบ\nชะมวง\nชะมัง\nชะมัด\nชะแม่\nชะรอย\nชะลอ\nชะลอม\nชะล่า\nชะลาน\nชะลิน\nชะลูด\nชะเลง\nชะเลย\nชะแล็ก\nชะแลง\nชะวาก\nชะวาด\nชะเวิกชะวาก\nชะแวง\nชะอม\nชะอ้อน\nชะเอม\nชะโอน\nชัก\nชักคราม\nชักช้า\nชัง\nชั่ง\nชังคา\nชังฆ\nชัชวาล\nชัฏ\nชัด\nชัดช้า\nชัน\nชั้น\nชันกาด\nชันชี\nชันตุ\nชันนะตุ\nชันนุ\nชันโรง\nชันษา\nชันสูตร\nชัปนะ\nชัพ\nชัมพูนท\nชัย\nชัยพฤกษ์\nชัยภูมิ\nชัลลุกา\nชั่ว\nชั้ว\nชัวชม\nชา\nช้า\nชาคระ\nชาคริต\nชาคริยานุโยค\nช่าง\nช้าง\nช้าช่อน\nชาญ\nชาด\nชาดก\nชาต\nชาตบุษย์\nชาตรี\nชาตะ\nชาตา\nชาติ\nชาน\nชานุ\nช้าปี่\nชาปีไหน\nช้าแป้น\nช้าพลู\nชาม\nชามพูนท\nชามาดร\nชามาดา\nชามาตุ\nชาย\nชายา\nชาล\nชาลา\nชาลินี\nช้าเลือด\nชาว\nชาวี\nชำ\nช่ำ\nช้ำ\nชำงัด\nชำงาย\nช่ำชอง\nชำนะ\nชำนัญ\nชำนัน\nชำนาญ\nชำนิ\nชำเนียร\nชำมะนาด\nชำมะเลียง\nชำร่วย\nชำระ\nช้ำรั่ว\nชำรุด\nชำเรา\nชำเราะ\nชำแรก\nชำแระ\nชำเลือง\nชำแหละ\nชิ\nชิง\nชิ่ง\nชิงชัน\nชิงช้า\nชิงช้าชาลี\nชิงชี่\nชิงฮื้อ\nชิชะ\nชิชิ\nชิณณะ\nชิด\nชิเดนทรีย์\nชิต\nชิตินทรีย์\nชิน\nชิ้น\nชินโต\nชิโนรส\nชิม\nชิมแปนซี\nชิยา\nชิรณะ\nชิระ\nชิวหา\nชิสา\nชี\nชี่\nชี้\nชีปะขาว\nชีผะขาว\nชีผ้าขาว\nชีพ\nชีฟอง\nชีรณ\nชีระ\nชีวเคมี\nชีวประวัติ\nชีวภาพ\nชีววิทยา\nชีวะ\nชีวัน\nชีวา\nชีวาตม์\nชีวาลัย\nชีวิต\nชีวิตักษัย\nชีวิน\nชีวี\nชืด\nชื่น\nชื้น\nชื่อ\nชุก\nชุกชี\nชุ้ง\nชุณห\nชุด\nชุติ\nชุน\nชุบ\nชุม\nชุ่ม\nชุมนุม\nชุมพร\nชุมพา\nชุมแพรก\nชุมรุม\nชุมแสง\nชุมเห็ด\nชุ่ย\nชุลมุน\nชุลี\nชุษณะ\nชู\nชู้\nเช็ค\nเช้ง\nเช้งวับ\nเชงเลง\nเช็ด\nเชน\nเช่น\nเชย\nเชลง\nเชลย\nเชลแล็ก\nเชลียง\nเชวง\nเชษฐะ\nเชษฐา\nเชอ\nเช่า\nเช้า\nเชาว์\nเชาวน์\nเชิง\nเชิญ\nเชิด\nเชิ้ต\nเชียง\nเชี่ยน\nเชียบ\nเชี่ยม\nเชียร\nเชียร์\nเชียว\nเชี่ยว\nเชื่อ\nเชื้อ\nเชือก\nเชื่อง\nเชือด\nเชือน\nเชื่อม\nแช\nแช่\nแช่ง\nแชงมา\nแชบ๊วย\nแช่ม\nแชร์\nแชล่ม\nแชสซี\nแชะ\nโชก\nโชค\nโชงโลง\nโชดก\nโชดึก\nโชต\nโชตก\nโชติ\nโชติก\nโชน\nโชมโรม\nโชย\nโชยงการ\nโชยชาย\nโชยติส\nโชว์\nใช่\nใช้\nไช\nไชนะ\nไชย\nไชโย\nซก\nซ่ก\nซงดำ\nซ่งฮื้อ\nซด\nซน\nซ้น\nซบ\nซม\nซวดเซ\nซวน\nซวย\nซอ\nซอก\nซอง\nซ่อง\nซ้อง\nซองแมว\nซ้องแมว\nซอน\nซ่อน\nซ้อน\nซอม\nซ่อม\nซ้อม\nซอมซ่อ\nซอย\nซอส\nซัก\nซักส้าว\nซัง\nซั้ง\nซัด\nซับ\nซัลฟา\nซั้ว\nซา\nซ่า\nซาก\nซาง\nซ่าง\nซาด\nซาน\nซ่าน\nซาบซ่าน\nซาบซึ้ง\nซ่าโบะ\nซาแมเรียม\nซ้าย\nซาลาเปา\nซาว\nซ่าหริ่ม\nซำ\nซ้ำ\nซิ\nซี\nซิก\nซิกข์\nซิกซี้\nซิกแซ็ก\nซิการ์\nซิงโคนา\nซิ่น\nซินนามิก\nซินแส\nซิบ\nซิป\nซิฟิลิส\nซิลิคอน\nซิว\nซี่\nซีก\nซีเซียม\nซีด\nซี้ด\nซีนอน\nซีป่าย\nซีเมนต์\nซีเรียม\nซีลีเนียม\nซีอิ๊ว\nซึก\nซึง\nซึ่ง\nซึ้ง\nซึม\nซื่อ\nซื้อ\nซุก\nซุง\nซุน\nซุบ\nซุป\nซุ่ม\nซุ้ม\nซุ่มซ่าม\nซุย\nซู่\nซูโครส\nซูด\nซู้ด\nซูดซาด\nซูบ\nเซ\nเซ็ก\nเซแคนต์\nเซ็ง\nเซ่ง\nเซ้ง\nเซ็งแซ่\nเซต\nเซน\nเซ็น\nเซ่น\nเซนติกรัม\nเซนติเกรด\nเซนติเมตร\nเซนติลิตร\nเซปักตะกร้อ\nเซราะ\nเซรุ่ม\nเซลเซียส\nเซลล์\nเซลลูลอยด์\nเซลลูโลส\nเซ่อ\nเซอร์โคเนียม\nเซอะ\nเซา\nเซ้าซี้\nเซาะ\nเซิง\nเซิ้ง\nเซียน\nเซียบ\nเซียมซี\nเซียว\nเซี่ยว\nเซี่ยวกาง\nเซื่อง\nแซ\nแซ่\nแซ็กคาริน\nแซง\nแซงแซว\nแซด\nแซบ\nแซม\nแซยิด\nแซ่ว\nแซะ\nโซ\nโซ่\nโซก\nโซ่ง\nโซงโขดง\nโซเซ\nโซดา\nโซเดียม\nโซม\nโซรม\nโซลา\nไซ\nไซ้\nไซเกิล\nไซโคลน\nไซน์\nไซยาไนด์\nไซร้\nไซเรน\nไซโล\nฌาน\nฌาปน\nฌาปนกิจ\nฌาปนสถาน\nเฌอ\nเฌอเอม\nญวน\nญัตติ\nญาณ\nญาติ\nญานาซะฮ์\nญิบ\nญี่ปุ่น\nเญยธรรม\nไญยธรรม\nฎีกา\nฐกัด\nฐากูร\nฐาน\nฐานะ\nฐานันดร\nฐานานุกรม\nฐานานุรูป\nฐานานุศักดิ์\nฐานียะ\nฐาปน\nฐาปนา\nฐายี\nฐิต\nฐิติ\nฑาหก\nฑาหะ\nเฒ่า\nณรงค์\nเณร\nดก\nดง\nด้ง\nด้น\nดนโด่\nดนตรี\nดนัย\nดนุ\nดนู\nดบัสวิน\nดบัสวี\nดม\nดรงค์\nดรณี\nดรรชนี\nดราฟต์\nดรุณ\nดรุณี\nดล\nดวง\nด้วง\nดวด\nด่วน\nด้วน\nด้วย\nดอก\nดอง\nด่อง\nด้อง\nดองฉาย\nดองดึง\nดอด\nดอน\nด่อน\nดอม\nด้อม\nดอย\nด้อย\nดอลลาร์\nดะ\nดะโต๊ะ\nดะหมัง\nดัก\nดักดาน\nดักแด้\nดัง\nดั่ง\nดั้ง\nดัชนี\nดัด\nดัตช์\nดัน\nดั้น\nดับ\nดัมพ์\nดั้วเดี้ย\nดัสกร\nดา\nด่า\nดาก\nด่าง\nด้าง\nดาด\nดาน\nด่าน\nด้าน\nดาบ\nดาบส\nดาม\nด้าม\nด้ามจิ้ว\nดามพ์\nดาย\nด้าย\nดารกะ\nดารณี\nดารดาษ\nดาระ\nดารา\nดาล\nดาลัด\nดาว\nด่าว\nด้าว\nดาวดึงส์\nดาวบส\nดาษ\nดาษดา\nดำ\nด่ำ\nด้ำ\nดำกล\nดำเกิง\nดำแคง\nดำดง\nดำนาณ\nดำเนิน\nดำบล\nดำรง\nดำรวจ\nดำรัส\nดำริ\nดำรี\nดำรู\nดำฤษณา\nดำเลิง\nดิก\nดิ่ง\nดิฉัน\nดิฐ\nดิตถ์\nดิถี\nดิน\nดิ้น\nดิบ\nดิรัจฉาน\nดิลก\nดิ่ว\nดิ้ว\nดิ้วเดี้ยว\nดิษฐ์\nดิสโพรเซียม\nดี\nดีเซล\nดีด\nดีดีที\nดีบุก\nดีปลี\nดีเปรสชัน\nดีหมี\nดีหลี\nดึก\nดึง\nดึ่ง\nดึ่ม\nดื่น\nดื่ม\nดือ\nดื้อ\nดุ\nดุก\nดุกดิก\nดุกทะเล\nดุ้ง\nดุ้งดิ้ง\nดุจ\nดุด\nดุน\nดุ้น\nดุบ\nดุม\nดุ่ม\nดุ่ย\nดุรงค์\nดุริยะ\nดุริยางค์\nดุริยางคศาสตร์\nดุริยางคศิลป์\nดุล\nดุษฎี\nดุษณี\nดุษณีภาพ\nดุษิต\nดุสิต\nดุเหว่า\nดู\nดูกค่าง\nดูกร\nดูด\nดูรา\nดูแล\nเด\nเด่\nเดก\nเด็ก\nเดกซ์โทรส\nเดคากรัม\nเดคาเมตร\nเดคาลิตร\nเด้ง\nเด็จ\nเดช\nเดชน์\nเดชนะ\nเดชะ\nเดโช\nเดซิกรัม\nเดซิเมตร\nเดซิลิตร\nเด็ด\nเดน\nเด่น\nเดนมาร์ก\nเดรัจฉาน\nเด๋อ\nเด๋อด๋า\nเดา\nเด้า\nเดาะ\nเดิน\nเดิ่น\nเดิม\nเดียง\nเดียด\nเดียรดาษ\nเดียรถีย์\nเดียรัจฉาน\nเดียว\nเดี่ยว\nเดี๋ยว\nเดียะ\nเดื่อ\nเดือก\nเดื่อง\nเดือด\nเดือน\nเดือย\nแด\nแด่\nแดก\nแด็ก\nแดกงา\nแดกแด้\nแดง\nแดด\nแดน\nแด่น\nแด่ว\nแดะ\nแดะแด๋\nโด\nโด่\nโดกเดก\nโด่ง\nโดด\nโดน\nโดม\nโดมร\nโดย\nโดรณ\nใด\nได\nได้\nไดแซ็กคาไรด์\nไดนาโม\nไดนาไมต์\nไดโนเสาร์\nไดเรกตริกซ์\nตก\nต๊กโต\nตง\nต๋ง\nตงฉิน\nตงิด\nตงุ่น\nตด\nตติย\nตถาคต\nตน\nต้น\nตนัย\nตนุ\nตบ\nตบะ\nตปนียะ\nตม\nต้ม\nตมูก\nตยาคี\nตรง\nตรณี\nตรม\nตรรก\nตรรกะ\nตรลบ\nตรลอด\nตรลาด\nตรวจ\nตรวน\nตรอก\nตรอง\nตรอมใจ\nตรอมตรม\nตระ\nตระกล\nตระกวน\nตระกอง\nตระการ\nตระกูล\nตระคัร\nตระเตรียม\nตระนาว\nตระบก\nตระบอก\nตระบอง\nตระบัด\nตระบัน\nตระเบ็ง\nตระแบก\nตระแบง\nตระโบม\nตระพอง\nตระพัง\nตระลาการ\nตระวัน\nตระเว็ด\nตระเวน\nตระสัก\nตระหง่าน\nตระหนก\nตระหนัก\nตระหน่ำ\nตระหนี่\nตรัง\nตรังค์\nตรับ\nตรับฟัง\nตรัย\nตรัยตรึงศ์\nตรัส\nตรัสสา\nตรา\nตรากตรำ\nตราชู\nตราบ\nตราสัง\nตรำ\nตริ\nตริว\nตรี\nตรีปวาย\nตรีพิธพรรณ\nตรียัมปวาย\nตรึก\nตรึง\nตรุ\nตรุณ\nตรุณะ\nตรุษ\nตรู\nตรู่\nตฤณ\nตฤตีย\nตฤษณา\nตลก\nตลบ\nตลอด\nตลับ\nตลาด\nตลิ่ง\nตลึง\nตวง\nต่วน\nต้วมเตี้ยม\nตวัก\nตวัด\nตวาด\nตอ\nตอม่อ\nต่อ\nต้อ\nตอก\nต๊อก\nต๊อกต๋อย\nตอง\nต้อง\nตองกราย\nต้องเต\nตองแตก\nต่องแต่ง\nตองเหลือง\nตอด\nตอน\nต้อน\nตอบ\nตอเบา\nตอม\nต่อม\nต๋อม\nต่อย\nต้อย\nต้อยตริ่ง\nต้อยติ่ง\nต้อยตีวิด\nตอแย\nตอร์ปิโด\nต่อไส้\nตอแหล\nตะ\nตะกรน\nตะกร้อ\nตะกรัน\nตะกรับ\nตะกร้า\nตะกราม\nตะกรุด\nตะกรุม\nตะกรุมตะกราม\nตะกละ\nตะกลาม\nตะกวด\nตะกอ\nตะกอน\nตะกัง\nตะกั่ว\nตะกาง\nตะกาด\nตะกาย\nตะกาว\nตะกุกตะกัก\nตะกุย\nตะกู\nตะกูด\nตะเกียกตะกาย\nตะเกียง\nตะเกียบ\nตะแก\nตะแก่\nตะแกรง\nตะโก\nตะโก้\nตะโกก\nตะโกน\nตะโกรง\nตะโกรม\nตะไกร\nตะขบ\nตะขอ\nตะขาบ\nตะขิดตะขวง\nตะเข้\nตะเข็บ\nตะโขง\nตะคร้อ\nตะครอง\nตะครั่นตะครอ\nตะคร้ำ\nตะคริว\nตะคิว\nตะครุบ\nตะคอก\nตะคัน\nตะค้า\nตะคาก\nตะค้าน\nตะคุ่ม\nตะเครียว\nตะเคียว\nตะเคียน\nตะแคง\nตะไคร่\nตะไคร้\nตะเฆ่\nตะนอย\nตะนาว\nตะบม\nตะบอง\nตะบอย\nตะบัน\nตะบิ้ง\nตะบิด\nตะบิดตะบอย\nตะบี้ตะบัน\nตะบึง\nตะบูน\nตะเบ็ง\nตะเบ็งมาน\nตะเบ๊ะ\nตะแบก\nตะแบง\nตะโบม\nตะไบ\nตะปบ\nตะปลิง\nตะปิ้ง\nตะปุ่มตะป่ำ\nตะปู\nตะพง\nตะพด\nตะพอง\nตะพัก\nตะพัง\nตะพัด\nตะพั้น\nตะพาก\nตะพาน\nตะพาบ\nตะพาย\nตะพึด\nตะพึดตะพือ\nตะพุ่น\nตะเพรา\nตะเพิง\nตะเพิด\nตะเพียน\nตะโพก\nตะโพง\nตะโพน\nตะเภา\nตะใภ้\nตะม่อ\nตะมอย\nตะรังกะนู\nตะรังตังกวาง\nตะรังตังช้าง\nตะราง\nตะลอง\nตะลอน\nตะล่อม\nตะละ\nตะลาน\nตะลิงปลิง\nตะลิบ\nตะลีตะลาน\nตะลึง\nตะลึงพรึงเพริด\nตะลุง\nตะลุ่ม\nตะลุ่มนก\nตะลุมบอน\nตะลุ่มโปง\nตะลุมพอ\nตะลุมพุก\nตะลุย\nตะเลง\nตะแลงแกง\nตะไล\nตะวัน\nตะเวน\nตะหลิว\nตะหลุก\nตะหลุง\nตะแหง่ว\nตะแหมะแขะ\nตะโหงก\nตัก\nตักกะ\nตักเตือน\nตั๊กแตน\nตักษัย\nตัง\nตั่ง\nตั้ง\nตังเก\nตังฉ่าย\nตังเม\nตังวาย\nตังโอ๋\nตัจฉก\nตัจฉนี\nตัณฑุล\nตัณหา\nตัด\nตัน\nตันตระ\nตันติ\nตันหยง\nตับ\nตับปิ้ง\nตัว\nตั๋ว\nตัวจี๊ด\nตัวตืด\nตั้วโผ\nตั้วเหี่ย\nตา\nตาก\nตากวาง\nต่าง\nตาด\nตาน\nต่าน\nต้าน\nตานนกกด\nตานี\nตาบ\nตาม\nตามะแน\nตามิน\nตาย\nตาราไต\nตาล\nตาลุ\nต๋าว\nตาเสือ\nตาหนู\nตาฬ\nตำ\nต่ำ\nตำนาน\nตำบล\nตำแบ\nตำแย\nตำรวจ\nตำรับ\nตำรา\nตำรุ\nตำลึง\nตำเสา\nตำหนัก\nตำหนิ\nตำแหน่ง\nติ\nติก\nติ๊ก\nติกะ\nติกาหรัง\nติง\nติ่ง\nติ๋ง\nติ่งตั่ง\nติ๋งต่าง\nติงส\nติงสติ\nติณ\nติด\nติตติกะ\nติตติร\nติตถ\nติตถะ\nติถี\nติมิงคละ\nติรัจฉาน\nติลก\nติละ\nติ้ว\nตี\nตี่\nตีน\nตีบ\nตีรถะ\nตีระ\nตึ\nตึก\nตึ้ก\nตึ้กตั้ก\nตึง\nตึดตื๋อ\nตึ๊ดตื๋อ\nตืด\nตื่น\nตื้น\nตื้อ\nตื๊อ\nตื๋อ\nตุ\nตุ๊\nตุ๊กแก\nตุ๊กตา\nตุ๊กต่ำ\nตุกติก\nตุ๊กติ๊ก\nตุ๊กตุ่น\nตุ๊กตุ๋ย\nตุง\nตุ้งก่า\nตุ้งติ้ง\nตุ๊ดตู่\nตุน\nตุ่น\nตุ๋น\nตุนาหงัน\nตุบ\nตุ้บ\nตุ๊บป่อง\nตุปัดตุป่อง\nตุปัดตุเป๋\nตุ่ม\nตุ้ม\nตุ๋ม\nตุ้มกว้าว\nตุมกา\nตุ้มแซะ\nตุมตัง\nตุ้มเต๋น\nตุ้มปี่\nตุมพะ\nตุ่ย\nตุ้ย\nตุ๊ย\nตุ๋ยตุ่ย\nตุรคะ\nตุรงค์\nตุล\nตุลา\nตุหรัดตุเหร่\nตู\nตู่\nตู้\nตูก\nตูด\nตูบ\nตูม\nเต๊ก\nเต็ง\nเต่ง\nเตช\nเตโช\nเต้น\nเต็นท์\nเต็ม\nเตย\nเตร่\nเตร็ด\nเตรตา\nเตรียม\nเตรียมตรม\nเตละ\nเตลิด\nเตว็ด\nเต่อ\nเตอะ\nเตะ\nเตา\nเต่า\nเต้า\nเต๋า\nเต่าเกียด\nเต้าเจี้ยว\nเต้าทึง\nเต้าหู้\nเต้าฮวย\nเต๊าะ\nเตาะแตะ\nเติ่ง\nเติบ\nเติม\nเตี้ย\nเตียง\nเตียน\nเตียบ\nเตี๋ยม\nเตียรถ์\nเตียว\nเตี่ยว\nเตือน\nแต่\nแต้\nแตก\nแตง\nแต่ง\nแตงเม\nแต้จิ๋ว\nแตด\nแต๊ดแต๋\nแตน\nแต้ม\nแตร\nแตระ\nแต้ว\nแต้วแร้ว\nแต้วแล้ว\nแต่ว่า\nแต้แว้ด\nแตะ\nโต\nโต้\nโตก\nโต่ง\nโต้ง\nโตงเตง\nโตฎก\nโต๊ด\nโตน\nโตนด\nโต้โผ\nโตมร\nโตย\nโตรก\nโต๊ะ\nใต้\nไต\nไต่\nไต้\nไต๋\nไตร\nไตรกิศยา\nไตรดายุค\nไตร่ตรอง\nไตรย\nไต้หวัน\nถก\nถกล\nถงาด\nถด\nถนน\nถนอม\nถนัด\nถนัน\nถนำ\nถนิม\nถม\nถ่ม\nถมอ\nถมึงทึง\nถลก\nถลกบาตร\nถลน\nถล่ม\nถลอก\nถลัน\nถลา\nถลาก\nถลาย\nถลำ\nถลึงตา\nถลุง\nถ่วง\nถ้วน\nถ้วย\nถวัล\nถวัลย์\nถวาย\nถวิน\nถวิล\nถ่อ\nถ้อ\nถอก\nถอง\nถ่อง\nถ้อง\nถอด\nถอน\nถอบ\nถอบแถบ\nถ่อม\nถอย\nถ่อย\nถ้อย\nถะ\nถะถั่น\nถะมัดถะแมง\nถัก\nถัง\nถั่ง\nถัด\nถัทธ\nถัน\nถั่น\nถับ\nถัมภ์\nถัว\nถั่ว\nถา\nถ้า\nถาก\nถาง\nถ่าง\nถาด\nถาน\nถ่าน\nถาบ\nถาม\nถามะ\nถ่าย\nถ่าว\nถาวร\nถาวรธิรา\nถ้ำ\nถิ่น\nถี่\nถีบ\nถึก\nถึง\nถือ\nถุง\nถุน\nถุย\nถู\nถูก\nเถกิง\nเถน\nเถร\nเถระ\nเถรานุเถระ\nเถรี\nเถลไถล\nเถลิง\nเถลือกถลน\nเถ่อ\nเถอะ\nเถา\nเถ้า\nเถาวัลย์\nเถาะ\nเถิก\nเถิง\nเถิด\nเถิดเทิง\nเถิน\nเถียง\nเถียร\nเถือ\nเถือก\nเถื่อน\nแถ\nแถก\nแถง\nแถน\nแถบ\nแถม\nแถลง\nแถลบ\nแถว\nโถ\nโถง\nโถงเถง\nโถบ\nโถม\nโถมนาการ\nไถ\nไถ่\nไถ้\nไถง\nไถล\nทกล้า\nทแกล้ว\nท่ง\nทด\nทน\nท้น\nทนต์\nทนโท่\nทนาย\nทบ\nทบวง\nทมอ\nทมะ\nทมิฬ\nทโมน\nทยอย\nทแยง\nทรกรรม\nทรชน\nทรชาติ\nทรพิษ\nทรยศ\nทรราช\nทรลักษณ์\nทรง\nทรพี\nทรมาทรกรรม\nทรมาน\nทรรทึง\nทรรป\nทรรปณ์\nทรรปณะ\nทรรศนะ\nทรรศนาการ\nทรรศนีย์\nทรวง\nทรวดทรง\nทรวาร\nทรหด\nทรหวล\nทรหึง\nทรอมโบน\nทระนง\nทรัพย์\nทรัพยากร\nทรัมเป็ต\nทรานซิสเตอร์\nทราบ\nทราม\nทราย\nทรุด\nทฤษฎี\nทลาย\nทลิท\nทลิททก\nทวง\nท้วง\nท่วงท่า\nท่วงทำนอง\nท่วงที\nทวด\nทวน\nท้วน\nท่วม\nท้วม\nทวย\nท่วย\nท้วย\nทวอย\nทวัตดึงส์\nทวัย\nทวา\nทวาบร\nทว่า\nทวาย\nทวาร\nทวิ\nทวิช\nทวิตีย์\nทวิตียา\nทวี\nทวีธาภิเษก\nทวีป\nทศ\nทศมี\nทศางค์\nทหระ\nทหาร\nทอ\nท่อ\nท้อ\nทอก\nทอง\nท่อง\nท้อง\nทองกวาว\nทองภู\nทองลิน\nทองหลาง\nทองโหลง\nทองอุไร\nทอด\nทอน\nท่อน\nทอนซิล\nทอฟฟี่\nท่อม\nทอย\nทอเรียม\nทะ\nทะงัน\nทะนง\nทะนน\nทะนาน\nทะนุ\nทะเบียน\nทะมัดทะแมง\nทะมึน\nทะมื่น\nทะแม่ง\nทะยาน\nทะเยอทะยาน\nทะแย\nทะร่อทะแร่\nทะลวง\nทะลอก\nทะลัก\nทะลาย\nทะลึ่ง\nทะลุ\nทะลุดทะลาด\nทะเล\nทะเล้น\nทะเล่อทะล่า\nทะเลาะ\nทะเลิ่กทะลั่ก\nทะวาย\nทัก\nทักข์\nทักขิญ\nทักขิณ\nทักขิณา\nทักขิณาวัฏ\nทักขิโณทก\nทักขิไณยบุคคล\nทักทิน\nทักษะ\nทักษา\nทักษิณ\nทักษิณา\nทักษิโณทก\nทัง\nทั่ง\nทั้ง\nทังวล\nทังวี้ทังวล\nทังสเตน\nทัณฑ์\nทัณฑกรรม\nทัณฑฆาต\nทัณฑสถาน\nทัณฑะ\nทัณฑิกา\nทัณฑิมา\nทัณฑีบท\nทัด\nทัดทา\nทัต\nทัน\nทันต์\nทันตชะ\nทันตแพทย์\nทันติน\nทันตี\nทันธ์\nทับ\nทับทิม\nทับสมิงคลา\nทัพ\nทัพพะ\nทัพพี\nทั่ว\nทัศ\nทัศน์\nทัศนะ\nทัศนา\nทัศนคติ\nทัศนวิสัย\nทัศนศาสตร์\nทัศนศิลป์\nทัศนศึกษา\nทัศนาการ\nทัศนาจร\nทัศนีย์\nทัศนียภาพ\nทัศนูปกรณ์\nทัศไนย\nทัสนานุตริยะ\nทัฬหะ\nทัฬหิ\nทัฬหี\nทา\nท่า\nท้า\nทาก\nทาง\nท้าง\nทาฐะ\nทาฐิกะ\nทาฒะ\nทาฒิกะ\nทาน\nท่าน\nทานต์\nทานพ\nทาบ\nทาม\nท่ามกลาง\nทาย\nท้าย\nทายก\nทายัช\nทายาด\nทายาท\nทายิกา\nทารก\nทารพี\nทาริกา\nทารุณ\nทาว\nท่าว\nท้าว\nทาส\nทาสี\nทำ\nทำนบ\nทำนอง\nทำนาย\nทำนุ\nทำนูล\nทำเนา\nทำเนียบ\nทำไม\nทำลาย\nทำเล\nทิคัมพร\nทิฆัมพร\nทิ้ง\nทิงเจอร์\nทิ้งถ่อน\nทิ้งทูด\nทิชะ\nทิชากร\nทิชาชาติ\nทิฏฐะ\nทิฏฐานุคติ\nทิฏฐุชุกรรม\nทิฐธรรม\nทิฐิ\nทิด\nทิต\nทิน\nทิพ\nทิพย์\nทิพา\nทิม\nทิ่ม\nทิมทอง\nทิว\nทิวงคต\nทิวทัศน์\nทิวา\nทิศ\nทิศา\nทิศานุทิศ\nที\nที่\nทีฆชาติ\nทีฆนิกาย\nทีฆสระ\nทีฆายุ\nทีป\nทีม\nทีเอ็นที\nทึก\nทึกทัก\nทึ่ง\nทึ้ง\nทึดทือ\nทึนทึก\nทึบ\nทึม\nทึ่ม\nทื่อ\nทุ\nทุก\nทุกข์\nทุกขลาภ\nทุกขเวทนา\nทุกขารมณ์\nทุกฏ\nทุกรกิริยา\nทุกะ\nทุกัง\nทุกูล\nทุคตะ\nทุคติ\nทุ่ง\nทุ้ง\nทุงงะ\nทุจริต\nทุด\nทุทรรศนนิยม\nทุนิยม\nทุน\nทุ่น\nทุนนิมิต\nทุบ\nทุบทู\nทุปปัญญา\nทุพพรรณ\nทุพพล\nทุพพลภาพ\nทุพภิกขภัย\nทุม\nทุ่ม\nทุ้ม\nทุย\nทุ้ย\nทุรกันดาร\nทุรชน\nทุรชาติ\nทุรพล\nทุรลักษณ์\nทุรน\nทุรนทุราย\nทุรัศ\nทุราคม\nทุราจาร\nทุเรศ\nทุเรียน\nทุลักทุเล\nทุเลา\nทุศีล\nทุสสะ\nทุสสีล\nทู\nทูโม่ง\nทู่\nทู้\nทูกัง\nทู่ซี้\nทูต\nทูตานุทูต\nทูน\nทูบ\nทูม\nทูล\nทูเลียม\nเท\nเท่\nเทคนิค\nเทคนีเชียม\nเทคโนโลยี\nเท้ง\nเท้งเต้ง\nเท็จ\nเทนนิส\nเทพ\nเทพา\nเทพารักษ์\nเทพยเจ้า\nเทพยดา\nเทพยุดา\nเทพิน\nเทพินทร์\nเทพี\nเทเพนทร์\nเทโพ\nเทริด\nเทลลูเรียม\nเทวทัณฑ์\nเทวดา\nเทวทูต\nเทวธรรม\nเทวนาครี\nเทวนิยม\nเทวรูป\nเทวโลก\nเทววิทยา\nเทวสถาน\nเทวศ\nเทวษ\nเทวัญ\nเทวัน\nเทวาลัย\nเทวินทร์\nเทวี\nเทเวศ\nเทเวศร์\nเทเวศวร์\nเทศ\nเทศะ\nเทศาภิบาล\nเทศน์\nเทศนา\nเทห์\nเท่ห์\nเทห์ฟากฟ้า\nเทหวัตถุ\nเท่อ\nเท้อ\nเทอญ\nเทอม\nเทอร์เบียม\nเทอร์โมมิเตอร์\nเทอะทะ\nเทา\nเท่า\nเท้า\nเท้ายายม่อม\nเท่ารึง\nเทิ่ง\nเทิด\nเทิน\nเทิบ\nเทิบทาบ\nเทิ้ม\nเที่ยง\nเทียด\nเทียน\nเที้ยน\nเทียบ\nเทียม\nเทียร\nเที้ยร\nเทียว\nเที่ยว\nเทือ\nเทื่อ\nเทื้อ\nเทือก\nแท้\nแท็กซี่\nแทง\nแท่ง\nแท้ง\nแท็งก์\nแทงทวย\nแทงวิสัย\nแทตย์\nแทน\nแท่น\nแทนเจนต์\nแทนทาลัม\nแทบ\nแทรก\nแทรกเตอร์\nแทลเลียม\nแทะ\nโท\nโท่\nโทกเทก\nโทง\nโทงเทง\nโทณะ\nโทน\nโทนโท่\nโทมนัส\nโทรคมนาคม\nโทรทรรศน์\nโทรทัศน์\nโทรพิมพ์\nโทรภาพ\nโทรเลข\nโทรศัพท์\nโทรสาร\nโทรม\nโทษ\nโทษา\nโทษานุโทษ\nโทสะ\nโทสาคติ\nโทโส\nโทหฬินี\nไท\nไท้\nไทเทเนียม\nไทเทรต\nไทย\nไทร\nไทวะ\nธง\nธงก์\nธชะ\nธชี\nธตรฐ\nธนบัตร\nธนสมบัติ\nธนสาร\nธนะ\nธนา\nธนาคม\nธนาคาร\nธนาณัติ\nธเนศ\nธโนปจัย\nธไนศวรรย์\nธนิต\nธนิษฐะ\nธนิษฐา\nธนุ\nธนุรวิทยา\nธนุรเวท\nธนู\nธม\nธมกรก\nธรณะ\nธรณิน\nธรณินทร์\nธรณิศ\nธรณิศร\nธรณิศวร์\nธรณี\nธรมาน\nธรรม\nธรรมนูญ\nธรรมยุต\nธรรมยุติกนิกาย\nธรรมะ\nธรรมาทิตย์\nธรรมาธรรม\nธรรมาธิปไตย\nธรรมาธิษฐาน\nธรรมานุสาร\nธรรมาภิมุข\nธรรมาภิสมัย\nธรรมายตนะ\nธรรมารมณ์\nธรรมาสน์\nธรรมิก\nธรา\nธราดล\nธราธร\nธราธาร\nธราธิบดี\nธราธิป\nธริษตรี\nธเรษตรี\nธเรศ\nธวัช\nธัช\nธัญ\nธัญญาหาร\nธันยา\nธันยาวาท\nธันวาคม\nธัมมะ\nธาดา\nธาตรี\nธาตวากร\nธาตุ\nธาตุโขภ\nธาตุมมิสสา\nธานิน\nธานินทร์\nธานี\nธาร\nธารกำนัล\nธารคำนัล\nธารณะ\nธารณา\nธารา\nธาษตรี\nธำมรงค์\nธำรง\nธิดา\nธิติ\nธีระ\nธุช\nธุดงค์\nธุดงควัตร\nธุต\nธุตตะ\nธุมเกตุ\nธุมา\nธุรการ\nธุรกิจ\nธุระ\nธุรำ\nธุลี\nธุวดารา\nธุวภาค\nธุวมณฑล\nธูป\nเธนุ\nเธอ\nเธียร\nโธ่\nโธวนะ\nนก\nนกุล\nนขลิขิต\nนขะ\nนขา\nนเคนทร์\nนโคทร\nนคร\nนครินทร์\nนคเรศ\nนง\nนงคุฐ\nนที\nนนตรา\nนนท์\nนันทน์\nนนทรี\nนนทลี\nนนทิ\nนบ\nนปุงสกลิงค์\nนปุงสกลึงค์\nนพ\nนพนิต\nนภจร\nนภดล\nนภศูล\nนภา\nนภาลัย\nนม\nนมตำเรีย\nนมตำเลีย\nนมะ\nนมัสการ\nนมาซ\nนยนะ\nนยนา\nนโยบาย\nนรชาติ\nนรเทพ\nนรนาถ\nนรบดี\nนรบาล\nนรสิงห์\nนรสีห์\nนรา\nนรากร\nนราธิป\nนรินทร์\nนริศ\nนริศร\nนริศวร\nนเรศ\nนเรศวร\nนเรศวร์\nนโรดม\nนรก\nนรกานต์\nนรการ\nนรี\nนฤเทพ\nนฤบดี\nนฤบาล\nนฤเบศ\nนฤปเวศม์\nนฤปัตนี\nนฤคหิต\nนฤนาท\nนฤมล\nนฤตย์\nนฤตยสถาน\nนฤพาน\nนฤมาณ\nนฤมิต\nนลาฏ\nนลิน\nนลินี\nนวกรรม\nนวการ\nนวกิจ\nนวนิยาย\nนวปฎล\nนวรัตน์\nนวโลหะ\nนวกะ\nนวโกวาท\nนวด\nนวม\nน่วม\nนวมี\nนวย\nนวล\nนวัตกรรม\nนวาระ\nนหารุ\nนหุต\nนฬการ\nนอ\nนอก\nนอง\nน่อง\nน้อง\nน่องแน่ง\nนอต\nนอน\nนอบ\nน้อม\nน้อย\nน้อยหน่า\nน้อยโหน่ง\nนะ\nนะแน่ง\nนัก\nนักขัต\nนักขัตฤกษ์\nนักษัตร\nนักสราช\nนัข\nนั่ง\nนังคัล\nนัจ\nนัฑ\nนัด\nนัดดา\nนัตถุ์\nนั่น\nนั้น\nนันททายี\nนันทนาการ\nนันทวัน\nนันทิ\nนับ\nนัย\nนัยน์\nนัยนา\nนัว\nนัวเนีย\nนา\nน่า\nน้า\nนาก\nนากบุด\nนากาสาหรี\nนาค\nนาคร\nนาคา\nนาคาวโลก\nนาคินทร์\nนาคี\nนาเคนทร์\nนาเคศวร\nนาง\nนางเกล็ด\nนางนวล\nนางนูน\nนางรม\nนางรำ\nนางล้อม\nนางเล็ด\nนางเลิ้ง\nนางหงส์\nนางอาย\nนางแอ่น\nนาฏ\nนาฏกะ\nนาด\nนาถ\nนาท\nนาที\nนาน\nน่าน\nนานัครส\nนานัปการ\nนานา\nนาเนก\nนาบ\nนาภี\nนาม\nนามานุกรม\nนามาภิไธย\nนาย\nน่าย\nนายก\nนายิกา\nนารา\nนารายณ์\nนารี\nนาเรศ\nนาลิวัน\nนาว\nน้าว\nนาวา\nนาวิก\nนาวิน\nนาวี\nนาเวศ\nนาศ\nนาสา\nนาสิก\nนาฬิกา\nนาฬิเก\nนาฬี\nนำ\nน้ำ\nน้ำละว้า\nน้ำว้า\nนิ\nนิกเกิล\nนิกขะ\nนิกร\nนิกรอยด์\nนิกาย\nนิคม\nนิครนถ์\nนิคหกรรม\nนิคหะ\nนิคหิต\nนิคาลัย\nนิเคราะห์\nนิโคติน\nนิโครธ\nนิโครม\nนิ่ง\nนิจ\nนิด\nนิตย์\nนิตยทาน\nนิตยภัต\nนิตยสาร\nนิติ\nนิทร\nนิทรรศการ\nนิทรา\nนิทรารมณ์\nนิทัศน์\nนิทาน\nนิเทศ\nนิธาน\nนิธิ\nนินทา\nนินนาท\nนินาท\nนิบาต\nนิปริยาย\nนิปัจการ\nนิพจน์\nนิพนธ์\nนิพพาน\nนิพพิทา\nนิพัทธ์\nนิพันธ์\nนิพิท\nนิเพท\nนิภา\nนิ่ม\nนิ้ม\nนิมนต์\nนิมมาน\nนิมมานรดี\nนิมิต\nนิยต\nนิยม\nนิยัตินิยม\nนิยาม\nนิยาย\nนิยุต\nนิรคุณ\nนิรชร\nนิรชรา\nนิรทุกข์\nนิรเทศ\nนิรโทษ\nนิรโทษกรรม\nนิรนัย\nนิรนาม\nนิรภัย\nนิรมล\nนิรมาน\nนิรัตศัย\nนิรันดร\nนิราพาธ\nนิรามัย\nนิรามิษ\nนิราศรัย\nนิรินธน์\nนิรมาณ\nนิรมิต\nนิรยบาล\nนิรัพพุท\nนิรา\nนิราศ\nนิรุกติ\nนิรุตติ\nนิรุทธ์\nนิโรธ\nนิล\nนิลุบล\nนิโลบล\nนิ่ว\nนิ้ว\nนิวคลิอิก\nนิวเคลียร์\nนิวเคลียส\nนิวตรอน\nนิวรณ์\nนิวัต\nนิวัตน์\nนิวาต\nนิวาส\nนิเวศ\nนิเวศน์\nนิศา\nนิษาท\nนิสัช\nนิสัชชาการ\nนิสัย\nนิสาท\nนิสิต\nนิสีทนสันถัต\nนิสีทนะ\nนิสีทนาการ\nนิเสธ\nนี่\nนี้\nนี่นัน\nนีรนาท\nนีออน\nนีโอดิเมียม\nนึก\nนึง\nนึ่ง\nนุง\nนุ่ง\nนุงนัง\nนุช\nนุต\nนุ่น\nนุ่ม\nนุ้ย\nนูน\nนู่น\nนู้น\nเนกขัม\nเนตบอล\nเนตร\nเนติ\nเน้น\nเนบิวลา\nเนปจูน\nเนปทูเนียม\nเนมิ\nเนย\nเนรกัณฐี\nเนรคุณ\nเนรเทศ\nเนรนาด\nเนรมิต\nเนระพูสี\nเนอ\nเน้อ\nเนา\nเน่า\nเนาวนิต\nเนาวรัตน์\nเนิน\nเนิ่น\nเนิบ\nเนียง\nเนียน\nเนียม\nเนียร\nเนียรทุกข์\nเนียรเทศ\nเนียรนาท\nเนื้อ\nเนือง\nเนื่อง\nเนือย\nแน่\nแน่ง\nแน่น\nแนบ\nแน่บ\nแนม\nแนว\nแน่ว\nแนะ\nแน่ะ\nแนะแหน\nโน\nโน้ต\nโนน\nโน่น\nโน้น\nโนเบเลียม\nโน้ม\nโนมพรรณ\nโนรา\nโนรี\nใน\nไน\nไนต์คลับ\nไนโตรเจน\nไนลอน\nไนโอเบียม\nบ่\nบก\nบง\nบ่ง\nบงก์\nบ๊งเบ๊ง\nบงสุ์\nบด\nบดินทร์\nบดี\nบถ\nบท\nบน\nบ่น\nบพิตร\nบพิธ\nบ่ม\nบรม\nบรมัตถ์\nบรรจง\nบรรจถรณ์\nบรรจบ\nบรรจวบ\nบรรจุ\nบรรเจิด\nบรรณ\nบรรดา\nบรรตานึก\nบรรถร\nบรรทม\nบรรทัด\nบรรทาน\nบรรทุก\nบรรเทา\nบรรเทือง\nบรรพ\nบรรพ์\nบรรพชา\nบรรพชิต\nบรรพต\nบรรยง\nบรรยงก์\nบรรยเวกษก์\nบรรยากาศ\nบรรยาย\nบรรลัย\nบรรลาย\nบรรลุ\nบรรเลง\nบรรโลม\nบรรษัท\nบรรสบ\nบรรสพ\nบรรสม\nบรรสาน\nบรรสาร\nบรรหาน\nบรรหาร\nบรอนซ์\nบรั่นดี\nบรัศว์\nบราลี\nบริกรรม\nบริการ\nบริขาร\nบริขารโจล\nบริคณห์\nบริจาค\nบริจาริกา\nบริเฉท\nบริชน\nบริดจ์\nบริบท\nบริบาล\nบริบูรณ์\nบริพนธ์\nบริพัตร\nบริพันธ์\nบริพาชก\nบริพาร\nบริภัณฑ์\nบริภาษ\nบริโภค\nบริมาส\nบริยาย\nบริรม\nบริรักษ์\nบริราช\nบริวรรต\nบริวาร\nบริวาส\nบริเวณ\nบริษัท\nบริสชน\nบริสุทธิ์\nบริหาร\nบล็อก\nบวก\nบวง\nบ่วง\nบวช\nบวน\nบ้วน\nบวบ\nบวม\nบ๊วย\nบวร\nบหลิ่ม\nบอ\nบ่อ\nบ้อ\nบอก\nบอง\nบ่อง\nบ้อง\nบ๊อง\nบ้องแบ๊ว\nบองหลา\nบอด\nบอน\nบ่อน\nบอบ\nบ้อม\nบ๋อม\nบ่อย\nบอระเพ็ด\nบอล\nบอลลูน\nบ้อหุ้น\nบ๊ะ\nบ๊ะจ่าง\nบะหมี่\nบัก\nบักโกรก\nบัคเตรี\nบัง\nบั้ง\nบังกะโล\nบังเกิด\nบังคน\nบังคม\nบังคล\nบังควร\nบังคับ\nบังคัล\nบังแทรก\nบังวาย\nบังเวียน\nบังสุกุล\nบังสุกูลิก\nบังสูรย์\nบังหวน\nบังเหตุ\nบังเหียน\nบังอร\nบังอวจ\nบังอาจ\nบังเอิญ\nบัญจก\nบัญชร\nบัญชา\nบัญชี\nบัญญัติ\nบัญหา\nบัฏ\nบัณฑร\nบัณฑิต\nบัณฑิตย์\nบัณฑุ\nบัณฑูร\nบัณเฑาะก์\nบัณเฑาะว์\nบัณณาส\nบัณรส\nบัณรสี\nบัด\nบัดกรี\nบัดซบ\nบัดสี\nบัตร\nบัทม์\nบัน\nบั่น\nบั้น\nบันจวบ\nบันดล\nบันดาล\nบันได\nบันทึก\nบันทึง\nบันเทิง\nบันยะบันยัง\nบันลือ\nบัปผาสะ\nบัพ\nบัพชา\nบัพพาชนียกรรม\nบัล\nบัลลพ\nบัลลังก์\nบัลลูน\nบัลเลต์\nบัว\nบา\nบ่า\nบ้า\nบาก\nบาง\nบ่าง\nบ้าง\nบาจรีย์\nบาซิลลัส\nบาด\nบาดทะจิต\nบาดทะพิษ\nบาดทะยัก\nบาดาล\nบาตร\nบาท\nบาทสกุณี\nบาทหลวง\nบาทาธึก\nบาทุกา\nบาน\nบ้าน\nบานชื่น\nบานเช้า\nบานบุรี\nบานไม่รู้โรย\nบานเย็น\nบ้าบ๋า\nบาป\nบาย\nบ่าย\nบ้าย\nบาร์\nบารนี\nบารมี\nบาร์เรล\nบาร์เลย์\nบารอมิเตอร์\nบ้าระบุ่น\nบาเรียน\nบาเรียม\nบาล\nบาลี\nบ่าว\nบ่าวขุน\nบาศ\nบาศก์\nบาสเกตบอล\nบาหลี\nบ๋ำ\nบำเทิง\nบำนาญ\nบำบวง\nบำบัด\nบำเพ็ญ\nบำราบ\nบำราศ\nบำรุง\nบำรู\nบำเรอ\nบำหยัด\nบำเหน็จ\nบิ\nบิฐ\nบิณฑบาต\nบิด\nบิดร\nบิดหล่า\nบิดา\nบิตุ\nบิตุจฉา\nบิตุรงค์\nบิตุเรศ\nบิตุลา\nบิน\nบิ่น\nบินยา\nบิลเลียด\nบิวเรตต์\nบิสมัท\nบี้\nบีฑา\nบีตา\nบีบ\nบีเยศ\nบึก\nบึกบึน\nบึง\nบึ่ง\nบึ้ง\nบุ\nบุก\nบุคคล\nบุคลากร\nบุคลาธิษฐาน\nบุคลิก\nบุง\nบุ่ง\nบุ้ง\nบุ้งกี๋\nบุญ\nบุญญาธิการ\nบุญญานุภาพ\nบุญญาภินิหาร\nบุญญาภิสังขาร\nบุณฑริก\nบุณมี\nบุณย์\nบุตร\nบุตรี\nบุถุชน\nบุทคล\nบุนนาค\nบุบ\nบุบบิบ\nบุปผชาติ\nบุพกรรม\nบุพการี\nบุพกิจ\nบุพชาติ\nบุพทักษิณ\nบุพนิมิต\nบุพบท\nบุพพาจารย์\nบุพเพสันนิวาส\nบุพโพ\nบุ๋ม\nบุ่มบ่าม\nบุ้ย\nบุรณะ\nบุรพทิศ\nบุรพบท\nบุรพาจารย์\nบูรพาจารย์\nบุระ\nบุราณ\nบุรินทร์\nบุริมทิศ\nบุริมพรรษา\nบุริมสิทธิ\nบุรี\nบุรุษ\nบุโรทั่ง\nบุษกร\nบุษบก\nบุษบง\nบุษบัน\nบุษบา\nบุษบามินตรา\nบุษปราค\nบุษปะ\nบุษย์\nบุษย์น้ำทอง\nบุษยมาส\nบุษยะ\nบุษราคัม\nบุหงัน\nบุหงา\nบุหรง\nบุหรี่\nบุหลัน\nบู่\nบู้\nบูชนียสถาน\nบูชา\nบูชิต\nบูด\nบูดู\nบูร\nบูรณ์\nบูรณภาพ\nบูรณมี\nบูรณะ\nบูรณาการ\nบูรพ์\nบูรพะ\nบูรพา\nเบ้\nเบ่ง\nเบ๊จี๋\nเบญกานี\nเบญจกัลยาณี\nเบญจกามคุณ\nเบญจขันธ์\nเบญจดุริยางค์\nเบญจธรรม\nเบญจบรรพต\nเบญจพรรณ\nเบญจเพส\nเบญจมาศ\nเบญจรงค์\nเบญจศก\nเบญจศีล\nเบญจะ\nเบญจา\nเบญจางค์\nเบญจางคประดิษฐ์\nเบญญา\nเบญพาด\nเบ็ด\nเบ็ดเตล็ด\nเบ็ดเสร็จ\nเบน\nเบนซิน\nเบรก\nเบริลเลียม\nเบส\nเบ้อ\nเบอร์\nเบอร์คีเลียม\nเบ้อเร่อ\nเบ้อเร่อเท่อ\nเบ้อเริ่ม\nเบ้อเริ่มเทิ่ม\nเบอะ\nเบอะบะ\nเบะ\nเบา\nเบ้า\nเบาราณ\nเบาะ\nเบิก\nเบิ่ง\nเบี้ย\nเบี่ยง\nเบียด\nเบียน\nเบียร์\nเบี้ยว\nเบือ\nเบื่อ\nเบื้อ\nเบื้อง\nเบือน\nแบ\nแบ้\nแบก\nแบคทีเรีย\nแบ่ง\nแบงก์\nแบดมินตัน\nแบตเตอรี่\nแบน\nแบนโจ\nแบบ\nแบ็บ\nแบเรียม\nแบหลา\nแบะ\nโบ\nโบ้\nโบ๋\nโบก\nโบกขรณี\nโบกขรพรรษ\nโบชุก\nโบต\nโบนัส\nโบ๊เบ๊\nโบย\nโบรมีน\nโบรอน\nโบราณ\nโบสถ์\nใบ\nใบ้\nไบ่\nปก\nปกติ\nปกรณ์\nปกรณัม\nปกิณกะ\nปกีรณัม\nปโกฏิ\nปง\nป่ง\nปงช้าง\nปฎล\nปฏัก\nปฏิกรณ์\nปฏิกรรม\nปฏิการะ\nปฏิกิริยา\nปฏิกูล\nปฏิคม\nปฏิคหิต\nปฏิคาหก\nปฏิฆะ\nปฏิชีวนะ\nปฏิญญา\nปฏิญาณ\nปฏิทิน\nปฏิบถ\nปฏิบัติ\nปฏิปทา\nปฏิปักษ์\nปฏิปัน\nปฏิปุจฉาพยากรณ์\nปฏิปุจฉาวาที\nปฏิพัทธ์\nปฏิพากย์\nปฏิภาค\nปฏิภาณ\nปฏิมา\nปฏิมากร\nปฏิยุทธ์\nปฏิรพ\nปฏิรูป\nปฏิโลม\nปฏิวัติ\nปฏิวาต\nปฏิวาท\nปฏิเวธ\nปฏิสนธิ\nปฏิสวะ\nปฏิสังขรณ์\nปฏิสันถาร\nปฏิสัมภิทา\nปฏิเสธ\nปฐพี\nปฐม\nปฐวี\nปณต\nปณาม\nปณิธาน\nปณิธิ\nปณีต\nปด\nปดิวรัดา\nปติ\nปถพี\nปถมัง\nปถวี\nปทัฏฐาน\nปทัสถาน\nปทานุกรม\nปทีป\nปทุม\nปน\nป่น\nปนัดดา\nปปัญจะ\nปม\nปรนัย\nปรปักษ์\nปรโลก\nปรวาที\nปรก\nปรกติ\nปรง\nปรตยักษ์\nปรน\nปรนนิบัติ\nปรนิมมิตวสวัตดี\nปรบ\nปรปักษ์\nปรมัตถ์\nปรมาจารย์\nปรมาณู\nปรมาภิไธย\nปรมาภิเษก\nปรมินทร์\nบรเมนทร์\nปรเมศวร์\nปรเมษฐ์\nปรวด\nปรวนแปร\nปรศุ\nปรสิต\nปร๋อ\nปรองดอง\nปรอด\nปรอท\nปรอย\nประ\nประกบ\nประกฤต\nประกฤติ\nประกล\nประกวด\nประกวดประขัน\nประกอบ\nประกัน\nประกับ\nประกาย\nประกายพรึก\nประการ\nประกาศ\nประกาศนียบัตร\nประกาศิต\nประกำ\nประกิด\nประกิต\nประคด\nประคนธรรพ\nประคนธรรพ์\nประคบ\nประคบประหงม\nประคอง\nประคับประคอง\nประคัลภ์\nประคำ\nประคิ่น\nประคุณ\nประเคน\nประเคราะห์\nประโคน\nประโคนธรรพ\nประโคนธรรพ์\nประโคม\nประจง\nประจญ\nประจบ\nประจบประแจง\nประจวบ\nประจ๋อประแจ๋\nประจักษ์\nประจักษนิยม\nประจัญ\nประจัน\nประจาก\nประจาค\nประจาน\nประจำ\nประจิม\nประจิ้มประเจ๋อ\nประจุ\nประจุคมน์\nประจุบัน\nประเจก\nประเจิด\nประเจิดประเจ้อ\nประเจียด\nประแจ\nประชด\nประชน\nประชวม\nประชวร\nประชัน\nประชา\nประชาธิปไตย\nประชิด\nประชี\nประชุม\nประเชิญ\nประณต\nประณม\nประณาม\nประณิธาน\nประณิธิ\nประณีต\nประณุท\nประดง\nประดน\nประดวน\nประดอน\nประดอย\nประดัก\nประดักประเดิด\nประดัง\nประดับ\nประดา\nประดาก\nประดาป\nประดาษ\nประดิชญา\nประดิดประดอย\nประดิทิน\nประดิษฐ์\nประดิษฐกรรม\nประดิษฐาน\nประดุง\nประดุจ\nประดู่\nประเด\nประเด็น\nประเดิม\nประเดียง\nประเดี๋ยว\nประเดี๋ยวประด๋าว\nประแดง\nประแดะ\nประโดง\nประโดย\nประตง\nประตัก\nประตาป\nประติชญา\nประติญาณ\nประติทิน\nประติมากร\nประติมากรรม\nประติรพ\nประตู\nประถม\nประถมจินดา\nประทม\nประท้วง\nประทวน\nประทักษ์\nประทักษิณ\nประทัง\nประทัด\nประทับ\nประทาน\nประทาย\nประทาศี\nประทิน\nประทิ่น\nประทีป\nประทุฐ\nประทุน\nประทุษ\nประทุษฐ์\nประเทศ\nประเทา\nประเทียด\nประเทียบ\nประเทือง\nประธาน\nประธานาธิบดี\nประนม\nประนอ\nประนอม\nประนัง\nประนัปดา\nประนีประนอม\nประปราน\nประปราย\nประปา\nประเปรี้ยง\nประเปรียว\nประพจน์\nประพนธ์\nประพรม\nประพฤติ\nประพฤทธิ์\nประพัด\nประพัทธ์\nประพันธ์\nประพาต\nประพาส\nประพาสมหรณพ\nประพาฬ\nประพิณ\nประพิมพ์ประพาย\nประพุทธ์\nประเพณี\nประโพธ\nประไพ\nประไพร\nประภพ\nประภัสสร\nประภา\nประภาคาร\nประภาพ\nประภาษ\nประภาส\nประเภท\nประมง\nประมวล\nประมาณ\nประมาท\nประมุข\nประมุท\nประมูล\nประเมิน\nประโมง\nประโมทย์\nประยงค์\nประยุกต์\nประยุทธ์\nประยุร\nประยูร\nประโยค\nประโยชน์\nประโรหิต\nประลมพ์\nประลอง\nประลัย\nประลาต\nประลาย\nประลุ\nประเล่ห์\nประเล้าประโลม\nประโลม\nประวรรต\nประวรรตน์\nประวัติ\nประวาล\nประวาลปัทม์\nประวาส\nประวิง\nประวิช\nประวิตร\nประวิน\nประวีณ\nประเวณี\nประเวศ\nประเวศน์\nประศม\nประศาสน์\nประศุ\nประสก\nประสงค์\nประสบ\nประสพ\nประสม\nประสะ\nประสัก\nประสันนาการ\nประสัยห์\nประสา\nประสาท\nประสาธน์\nประสาน\nประสาร\nประสิทธิ์\nประสิทธิผล\nประสิทธิภาพ\nประสีประสา\nประสูต\nประสูติ\nประเสบัน\nประเสบันอากง\nประเสริฐ\nประหนึ่ง\nประหม่า\nประหยัด\nประหลาด\nประหล่ำ\nประหวัด\nประหวั่น\nประหัตประหาร\nประหาณ\nประหาร\nประเหล\nประเหส\nประไหมสุหรี\nประอบ\nประอร\nปรัก\nปรักปรำ\nปรักมะ\nปรัง\nปรัชญา\nปรัตถจริยา\nปรัตยุบัน\nปรัน\nปรับ\nปรัมปรา\nปรัศจิม\nปรัศนา\nปรัศนี\nปรัศว์\nปรัสสบท\nปร่า\nปรากฏ\nปรากรม\nปรากฤต\nปราการ\nปราง\nปรางค์\nปราจีน\nปราชญ์\nปราชญา\nปราชัย\nปราณ\nปราณี\nปราด\nปราน\nปรานี\nปราบ\nปราบดาภิเษก\nปราปต์\nปราม\nปรามาส\nปราโมช\nปราโมทย์\nปราย\nปรารถนา\nปรารภ\nปรารมภ์\nปราศ\nปราศจาก\nปราศรัย\nปราษณี\nปราษาณ\nปราสัย\nปราสาท\nปรำ\nปริ\nปริก\nปริกขาร\nปริกรรม\nปริกัป\nปริคณห์\nปริจาค\nปริจาริกา\nปริเฉท\nปริชน\nปริซึม\nปริญญา\nปริณาม\nปริณายก\nปริต\nปริตตะ\nปริตโตทก\nปริตร\nปริทรรศน์\nปริทัยหัคคี\nปริทัศน์\nปริเทพ\nปริเทวะ\nปรินิพพาน\nปริบ\nปริบท\nปริปันถ์\nปริพนธ์\nปริพัตร\nปริพันธ์\nปริพาชก\nปริภัณฑ์\nปริภาษ\nปริภูมิ\nปริโภค\nปริ่ม\nปริมณฑล\nปริมาณ\nปริมาตร\nปริยัติ\nปริยานุช\nปริยาย\nปริเยศ\nปริโยสาน\nปริวรรต\nปริวัตร\nปริวาร\nปริวาส\nปริวิตก\nปริเวณ\nปริศนา\nปริษัท\nปริสัญญู\nปริสุทธิ\nปริหาน\nปริหาร\nปรี่\nปรีชญา\nปรีชา\nปรี๊ด\nปรีดา\nปรีดิ\nปรีดิ์\nปรีดี\nปรีติ\nปรียะ\nปรียา\nปรึก\nปรึกษา\nปรึง\nปรือ\nปรื๋อ\nปรุ\nปรุง\nปรู\nปรู๋\nปรูด\nปรู๊ด\nปรู๊ดปร๊าด\nปรู๊ฟ\nปฤงคพ\nปฤจฉา\nปฤษฎางค์\nปฤษฐ\nปลก\nปลกเปลี้ย\nปลง\nปล่ง\nปลด\nปล้น\nปลวก\nปลอก\nปล่อง\nปล้อง\nปลอด\nปล้อน\nปลอบ\nปลอม\nปล่อย\nปละ\nปลัก\nปลั๊ก\nปลัง\nปลั่ง\nปลัด\nปลัดขิก\nปลา\nปลาต\nปลาบ\nปลาย\nปลาสเตอร์\nปลาสนาการ\nปล้ำ\nปลิง\nปลิด\nปลิ้น\nปลิโพธ\nปลิม\nปลิ่ม\nปลิว\nปลี\nปลีก\nปลื้ม\nปลุก\nปลูก\nปวกเปียก\nปวง\nป่วง\nปวด\nป่วน\nป้วน\nป้วนเปี้ยน\nป่วย\nปวัตน์\nปวารณา\nปวาล\nปวาส\nปวาฬ\nปวิช\nปวิตร\nปวิธ\nปวิเวก\nปวีณ\nปวุติ\nปเวณี\nปเวส\nปเวสน์\nปศุ\nปสันนะ\nปสันนาการ\nปสาท\nปสาน\nปสาสน์\nปสุ\nปสุต\nปสูติ\nปหังสนะ\nปหาน\nปหาร\nปหาส\nปอ\nป้อ\nป๋อ\nปอก\nปอง\nป่อง\nป้อง\nปอด\nปอน\nป้อน\nปอนด์\nปอเนาะ\nปอบ\nป้อแป้\nปอม\nป้อม\nป๋อม\nปอย\nป้อย\nป้อยอ\nปะ\nปะกน\nปะกัง\nปะการัง\nปะกำ\nปะขาว\nปะงาบ\nปะตาปา\nปะตาระกาหลา\nปะติดปะต่อ\nปะติยาน\nปะทะ\nปะทะปะทัง\nปะทุ\nปะทุน\nปะปน\nปะมง\nปะราลี\nปะรำ\nปะไร\nปะลอม\nปะเลง\nปะแล่ม\nปะโลง\nปะวะหล่ำ\nปะหงับ\nปะหนัน\nปะหัง\nปะเหลาะ\nปัก\nปักข์\nปักเป้า\nปักษ์\nปักษา\nปักษิน\nปักษี\nปัง\nปั๋ง\nปังสุ์\nปังสุกุล\nปัจจัตตะ\nปัจจันต์\nปัจจันตคาม\nปัจจันตชนบท\nปัจจันตประเทศ\nปัจจัย\nปัจจามิตร\nปัจจุคมน์\nปัจจุทธรณ์\nปัจจุบัน\nปัจจุสมัย\nปัจเจก\nปัจโจปการกิจ\nปัจฉา\nปัจฉิม\nปัจถรณ์\nปัจนึก\nปัจยาการ\nปัจเวกขณ์\nปัชชุน\nปัญจนที\nปัญจวัคคีย์\nปัญจก\nปัญจกะ\nปัญจมี\nปัญจวีสติ\nปัญญัติ\nปัญญา\nปัญหา\nปัฏ\nปัฏนะ\nปัฐยาวัต\nปัณฑรหัตถี\nปัณณะ\nปัณณาส\nปัณณาสก์\nปัณรสี\nปัณหิ\nปัด\nปัตคาด\nปัตตะ\nปัตตานึก\nปัตตานุโมทนา\nปัตตาเวีย\nปัตติ\nปัตติก\nปัตถร\nปัตถะ\nปัตนิ\nปัตนี\nปัตหล่า\nปัถพี\nปัถวี\nปัทม์\nปัทมะ\nปัทมาสน์\nปัน\nปั่น\nปั้น\nปั้นจั่น\nปันจุเหร็จ\nปั้นลม\nปั้นหยา\nปั้นเหน่ง\nปับ\nปั๊บ\nปัปผาสะ\nปัพพาชนียกรรม\nปัพภาระ\nปั๊ม\nปัยกา\nปัยยิกา\nปัวเปีย\nปัศจิม\nปัศตัน\nปัสสาวะ\nปัสสาสะ\nปา\nป่า\nป้า\nปาก\nปาง\nป้าง\nปาจรีย์\nปาจิตตีย์\nปาจีน\nปาฏลิ\nปาฏิบท\nปาฏิบุคลิก\nปาฏิโภค\nปาฏิหาริย์\nปาฐก\nปาฐกถา\nปาฐะ\nปาณกชาติ\nปาณะ\nปาณาติบาต\nปาณิ\nปาณี\nปาด\nปาติโมกข์\nปาตี\nปาเต๊ะ\nปาท่องโก๋\nปาทังกา\nปาทาน\nปาทุกา\nปาน\nป่าน\nป้าน\nปานะ\nปานียะ\nป้าบ\nป๊าบ\nปาพจน์\nปาม\nปาโมกข์\nป่าย\nป้าย\nปายาส\nปาร์เกต์\nปารมี\nปารเมศ\nปาราชิก\nปาริฉัตร\nปาริชาต\nปารุสกวัน\nปาล\nปาล์ม\nปาลิไลยก์\nปาลี\nปาว\nป่าว\nป๊าว\nปาวาร\nปาษาณ\nปาส\nปาสาณ\nปาสาทิกะ\nปาหนัน\nปาหี่\nปำ\nป้ำ\nป้ำเป๋อ\nปิกนิก\nปิ้ง\nปิงคละ\nปิงปอง\nปิฎก\nปิฏฐะ\nปิฐิ\nปิณฑะ\nปิด\nปิตตะ\nปิตา\nปิตามหัยกา\nปิตามหัยยิกา\nปิตุ\nปิตุจฉา\nปิตุภูมิ\nปิตุลา\nปิโตรเลียม\nปิ่น\nปิ่นแก้ว\nปิ่นโต\nปิปผลี\nปิ่ม\nปิ้ม\nปิยะ\nปิยังคุ\nปิโยรส\nปิลันธน์\nปิ๋ว\nปิศาจ\nปิหกะ\nปี\nปี่\nปี้\nปี๋\nปีก\nปีฐะ\nปี๊ด\nปีติ\nปีน\nปีบ\nปี๊บ\nปีศาจ\nปีฬกะ\nปึก\nปึง\nปึ่ง\nปึ๋ง\nปึ้ด\nปึมปื้อ\nปืน\nปื้น\nปือ\nปื้อ\nปื๋อ\nปุ\nปุ๊\nปุก\nปุกปุย\nปุคละ\nปุ้งกี๋\nปุงควะ\nปุงลิงค์\nปุงลึงค์\nปุจฉา\nปุฏะ\nปุณฑริก\nปุด\nปุตตะ\nปุถุชน\nปุนนาค\nปุนภพ\nปุนัพสุ\nปุบ\nปุ๊บ\nปุปผะ\nปุปะ\nปุพพะ\nปุ่ม\nปุ่มป่ำ\nปุ้ม\nปุ๋ม\nปุย\nปุ้ย\nปุ๋ย\nปุรณะ\nปุระ\nปุราณ\nปุราณะ\nปุริมพรรษา\nปุเรจาริก\nปุโรหิต\nปุลลิงค์\nปุลลึงค์\nปุลินท์\nปุโลปุเล\nปุษยะ\nปุสสะ\nปู\nปู่\nปูชกะ\nปูชนียบุคคล\nปูชนียวัตถุ\nปูชนียะ\nปูชา\nปูชิต\nปูด\nปูน\nปูม\nปู้ยี่ปู้ยำ\nปูระ\nปูลู\nเป้\nเป๋\nเปก\nเป๊ก\nเป่ง\nเป้ง\nเป๋ง\nเป็ด\nเปตพลี\nเปตอง\nเป็น\nเปยยาล\nเปร็ง\nเปรต\nเปรม\nเปรย\nเปรอ\nเปรอะ\nเปราะ\nเปรียง\nเปรี้ยง\nเปรี้ยงปร้าง\nเปรียญ\nเปรียบ\nเปรี่ยม\nเปรียว\nเปรี้ยว\nเปรียะ\nเปรี๊ยะ\nเปรื่อง\nเปรื้อย\nเปล\nเปล่ง\nเปลว\nเปลา\nเปล่า\nเปล้า\nเปลาะ\nเปลี้ย\nเปลี่ยน\nเปลี่ยม\nเปลี่ยว\nเปลือก\nเปลือง\nเปลื้อง\nเปลือย\nเปศะ\nเปศัส\nเปสการ\nเปสละ\nเปสุญวาท\nเป๋อ\nเป้อเย้อ\nเปอร์\nเปอร์เซ็นต์\nเปะ\nเปา\nเป่า\nเป้า\nเป๊า\nเป๋า\nเป๋าฮื้อ\nเปาะ\nเป๊าะ\nเปาะเปี๊ยะ\nเปาะแปะ\nเปิก\nเปิง\nเปิงมาง\nเปิด\nเปิ่น\nเปิบ\nเปิ๊บ\nเปีย\nเปียก\nเปี๊ยก\nเปี๊ยบ\nเปี่ยม\nเปี้ยว\nเปี๊ยว\nเปียะ\nเปี๊ยะ\nเปือก\nเปื้อน\nเปื่อย\nแป\nแป้ง\nแป๋ง\nแปด\nแป๊ด\nแปทู\nแป้น\nแป๊น\nแปบ\nแป๊บ\nแปม\nแปร\nแปร๋\nแปรก\nแปรง\nแปร่ง\nแปร๊ด\nแปร้น\nแปร๋น\nแปรปรวน\nแประ\nแปล\nแปล้\nแปลก\nแปลง\nแปลน\nแปลบ\nแปล๊บ\nแป้ว\nแป๊ว\nแปะ\nแป๊ะ\nแป๊ะซะ\nโป\nโป่\nโป้\nโป๊\nโปก\nโป๊ก\nโป๊กเกอร์\nโปกขรณี\nโปกขรพรรษ\nโปเก\nโปง\nโป่ง\nโป้ง\nโป่งข่าม\nโปงลาง\nโป่งวิด\nโปฐบท\nโปฐปทมาส\nโปดก\nโปตถกะ\nโปน\nโป๊ป\nโป๊ยเซียน\nโปรแกรม\nโปรง\nโปร่ง\nโปรด\nโปรตอน\nโปรตีน\nโปรเตสแตนต์\nโปรแทรกเตอร์\nโปรย\nโปล่ง\nโปลิโอ\nโปโล\nโปสก\nโปสต์การ์ด\nโปะ\nโป๊ะ\nโป๊ะจ้าย\nไป\nไป่\nไป๋\nไปยาล\nไปรษณีย์\nไปรษณียบัตร\nไปรษณียภัณฑ์\nไปรษณียากร\nไปล่\nไปศาจ\nผก\nผกา\nผกาย\nผคม\nผง\nผงก\nผงม\nผงะ\nผงาด\nผง่าน\nผจง\nผจญ\nผจัญ\nผจาน\nผชุม\nผณิน\nผณินทร\nผณิศวร\nผด\nผดุง\nผเดิน\nผทม\nผนวก\nผนวช\nผนัง\nผนิด\nผนึก\nผม\nผยอง\nผรณาปีติ\nผรสุ\nผริต\nผรุสวาท\nผล\nผลคุน\nผลคุนี\nผล็อย\nผละ\nผลัก\nผลัด\nผลับ\nผลัวะ\nผลา\nผลาญ\nผลานิสงส์\nผลาผล\nผลาหาร\nผลิ\nผลิกะ\nผลิต\nผลิน\nผลี\nผลีผลาม\nผลึก\nผลึ่ง\nผลือ\nผลุ\nผลุง\nผลุด\nผลุน\nผลุนผลัน\nผลุบ\nผลุบผลับ\nผลุย\nผลู\nผวน\nผวย\nผวา\nผสม\nผสาน\nผอง\nผ่อง\nผ่อน\nผอบ\nผอม\nผ็อย\nผอูน\nผะ\nผะดา\nผะสา\nผัก\nผัคคุณ\nผัคคุณี\nผัง\nผัด\nผัน\nผับ\nผัว\nผัวะ\nผัสสะ\nผัสสาหาร\nผา\nผ่า\nผ้า\nผาก\nผาง\nผ่าง\nผาณิต\nผาด\nผาติ\nผ่าน\nผาม\nผาย\nผ่ายผอม\nผาล\nผาลคุน\nผาลา\nผ่าว\nผาสุก\nผ้าฮาด\nผำ\nผ้ำ\nผิ\nผิง\nผิด\nผิตะ\nผิน\nผิว\nผี\nผี้ว์\nผึง\nผึ่ง\nผึ้ง\nผึ้งรวง\nผืน\nผื่น\nผุ\nผุด\nผุยผง\nผุสราคา\nผู้\nผูก\nเผ\nเผง\nเผชิญ\nเผ็ด\nเผด็จ\nเผดิม\nเผดียง\nเผ่น\nเผนิก\nเผย\nเผยอ\nเผยิบ\nเผยิบผยาบ\nเผล\nเผล่\nเผล็ด\nเผลอ\nเผลอไผล\nเผละ\nเผลาะ\nเผลาะแผละ\nเผลียง\nเผอเรอ\nเผอิญ\nเผอิล\nเผะ\nเผา\nเผ่า\nเผ้า\nเผาะ\nเผิ้ง\nเผิน\nเผียน\nเผือ\nเผื่อ\nเผือก\nเผือด\nเผือน\nเผื่อน\nแผ่\nแผก\nแผง\nแผด\nแผน\nแผ่น\nแผนก\nแผล\nแผลง\nแผล็บ\nแผล็ว\nแผละ\nแผ่ว\nแผ้ว\nโผ\nโผง\nโผฏฐัพพะ\nโผน\nโผเผ\nโผย\nโผล่\nโผลกเผลก\nโผละ\nโผอน\nโผะ\nไผ\nไผ่\nไผท\nฝน\nฝรั่ง\nฝรั่งเศส\nฝ่อ\nฝอย\nฝัก\nฝัง\nฝั่ง\nฝัด\nฝัน\nฝา\nฝ่า\nฝ้า\nฝาก\nฝาง\nฝาด\nฝาน\nฝาย\nฝ่าย\nฝ้าย\nฝิ่น\nฝี\nฝี่\nฝีก\nฝึก\nฝืด\nฝืน\nฝุ่น\nฝูง\nเฝ้า\nเฝือ\nเฝือก\nเฝือง\nเฝื่อน\nแฝก\nแฝง\nแฝด\nใฝ่\nไฝ\nพก\nพกุล\nพง\nพงศ์\nพงศกร\nพงศธร\nพงศา\nพงศาวดาร\nพจน์\nพจนา\nพจนานุกรม\nพจนารถ\nพจนีย์\nพจมาน\nพจี\nพชระ\nพญา\nพญาลอ\nพณิช\nพณิชย์\nพดด้วง\nพธู\nพนันดร\nพนาดร\nพนาดอน\nพนาราม\nพนาลัย\nพนาลี\nพนาวาส\nพนาเวศ\nพนาศรม\nพนาสณฑ์\nพนาสัณฑ์\nพเนจร\nพ่น\nพ้น\nพนม\nพนอง\nพนอม\nพนัก\nพนักงาน\nพนัง\nพนัน\nพนัส\nพนา\nพนาย\nพนิดา\nพนิต\nพบ\nพม่า\nพยนต์\nพยศ\nพยัก\nพยักพเยิด\nพยัคฆ์\nพยัคฆา\nพยัคฆิน\nพยัคฆี\nพยัชน์\nพยัญชนะ\nพยัต\nพยับ\nพยากรณ์\nพยาฆร์\nพยางค์\nพยาธิ\nพยาน\nพยาบาท\nพยาบาล\nพยาม\nพยามะ\nพยายาม\nพยุ\nพยุง\nพยุหยาตรา\nพยุหโยธา\nพยุหเสนา\nพยุหะ\nพยู่ห์\nพเยีย\nพร\nพรต\nพรม\nพรรค\nพรรค์\nพรรคานต์\nพรรณ\nพรรณนา\nพรรดึก\nพรรลาย\nพรรษ\nพรรษา\nพรรเอิญ\nพรวด\nพรวน\nพรหม\nพรหมจรรย์\nพรหมจาริณี\nพรหมจารี\nพรหมา\nพรหมาสตร์\nพรหมินทร์\nพรอก\nพร่อง\nพร้อง\nพรอด\nพร้อม\nพร้อมพรัก\nพร่อย\nพร้อย\nพระ\nพระนอม\nพระนาด\nพระฮาม\nพรักพร้อม\nพรั่ง\nพรัด\nพรั่น\nพรับ\nพร่า\nพร้า\nพราก\nพราง\nพร่าง\nพราด\nพราน\nพราย\nพราว\nพราหมณ์\nพราหมณะ\nพราหมณี\nพราหมี\nพรำ\nพร่ำ\nพริก\nพริ้ง\nพริบ\nพริ้ม\nพรึง\nพรึน\nพรึบ\nพรึ่บ\nพรืด\nพรุ\nพรุ่ง\nพรุน\nพรู\nพรูด\nพฤกษ์\nพฤกษชาติ\nพฤกษเทวดา\nพฤกษราช\nพฤกษศาสตร์\nพฤกษา\nพฤฒ\nพฤฒา\nพฤฒาจารย์\nพฤฒิ\nพฤต\nพฤติ\nพฤทธ์\nพฤทธิ์\nพฤนต์\nพฤนท์\nพฤศจิก\nพฤศจิกายน\nพฤษภ\nพฤษภาคม\nพฤหัสบดี\nพล\nพละ\nพลากร\nพลาดิศัย\nพลาธิการ\nพลานามัย\nพลบ\nพลวก\nพลวง\nพลวัต\nพลศาสตร์\nพลอ\nพล้อ\nพลอง\nพลอด\nพลอน\nพลอมแพลม\nพลอย\nพล่อย\nพลั่ก\nพลัง\nพลั่ง\nพลั้ง\nพลัด\nพลัน\nพลับ\nพลับพลา\nพลับพลึง\nพลั่ว\nพล่า\nพลาง\nพลาญ\nพลาด\nพล่าน\nพลาม\nพล่าม\nพลาย\nพลาสติก\nพลาสมา\nพลาหก\nพลำ\nพล้ำ\nพลำภัง\nพลิก\nพลิพัท\nพลิ้ว\nพลี\nพลุ\nพลุก\nพลุ่ก\nพลุกพล่าน\nพลุ่ง\nพลุ้ย\nพลู\nพลูโต\nพลูโทเนียม\nพวก\nพวง\nพ่วง\nพวน\nพวย\nพสก\nพสุ\nพสุธา\nพสุสงกรานต์\nพหล\nพหุ\nพหุล\nพหู\nพอ\nพ่อ\nพ้อ\nพอก\nพอง\nพ้อง\nพอน\nพ้อม\nพอโลเนียม\nพะ\nพะงา\nพะงาบ\nพะจง\nพะทำมะรง\nพะนอ\nพะเน้าพะนอ\nพะเนิน\nพะเนียง\nพะแนง\nพะพาน\nพะพิง\nพะเพิง\nพะยอม\nพ่ะย่ะค่ะ\nพะยูง\nพะยูน\nพะเยิบ\nพะเยิบพะยาบ\nพะรุงพะรัง\nพะโล้\nพะไล\nพะวง\nพะวักพะวน\nพะวา\nพะว้าพะวัง\nพะอง\nพะอากพะอำ\nพะอืดพะอม\nพัก\nพักตร์\nพักตรา\nพักร\nพัง\nพังกา\nพังงา\nพังผืด\nพังพวย\nพังพอน\nพังพาน\nพังพาบ\nพังเพย\nพัช\nพัชนี\nพัชระ\nพัญจน์\nพัฒนะ\nพัฒนา\nพัฒนากร\nพัฒนาการ\nพัด\nพัดชา\nพัดดึงส์\nพัตร\nพัทธ์\nพัทธยา\nพัทธสีมา\nพัทร\nพัน\nพันตู\nพันทาง\nพันธ์\nพันธะ\nพันธกรณี\nพันธบัตร\nพันธมิตร\nพันธนะ\nพันธนาคาร\nพันธนาการ\nพันธุ์\nพันธุกรรม\nพันลึก\nพันลือ\nพันเลิศ\nพันเอิญ\nพับ\nพัลลภ\nพัลวัน\nพัว\nพัวะ\nพัศดี\nพัสดุ\nพัสตร์\nพัสถาน\nพา\nพาก\nพากเพียร\nพากย์\nพาง\nพ่าง\nพาชี\nพาณิช\nพาณิชย์\nพาณิชยกรรม\nพาณิชยการ\nพาณิชยศาสตร์\nพาณิชยศิลป์\nพาณินี\nพาณี\nพาณีนี\nพาด\nพาท\nพาทย์\nพาธ\nพาธา\nพาน\nพ่าน\nพานร\nพานรินทร์\nพาม\nพาย\nพ่าย\nพายม้า\nพายัพ\nพายุ\nพาร์เซก\nพารณ\nพารา\nพาราฟิน\nพาล\nพาลา\nพาลี\nพาลุก\nพาโล\nพาไล\nพาส\nพาสน์\nพาสนา\nพาสุกรี\nพ่าห์\nพาหนะ\nพาหะ\nพาหา\nพาหิรกะ\nพาหิระ\nพาหุ\nพาหุรัด\nพาหุสัจจะ\nพาเหียร\nพาฬ\nพำ\nพำนัก\nพำพึม\nพำลา\nพิกล\nพิกสิต\nพิกัด\nพิกัติ\nพิกัน\nพิการ\nพิกุล\nพิเคราะห์\nพิฆน์\nพิฆเนศ\nพิฆเนศวร\nพิฆาต\nพิง\nพิจัย\nพิจาร\nพิจารณ์\nพิจารณา\nพิจิก\nพิจิต\nพิจิตร\nพิชญ์\nพิชัย\nพิชาน\nพิชิต\nพิเชฐ\nพิเชียร\nพิฑูรย์\nพิณ\nพิดทูล\nพิดาน\nพิโดร\nพิตร\nพิถี\nพิถีพิถัน\nพิทย\nพิทย์\nพิทยา\nพิทยาคม\nพิทยาคาร\nพิทยาธร\nพิทยาลัย\nพิทักษ์\nพิทูร\nพิเทศ\nพิธาน\nพิธี\nพิธุ\nพินทุ\nพินอบพิเทา\nพินัย\nพินาศ\nพินิจ\nพินิต\nพินิศ\nพินิศจัย\nพิเนต\nพิบัติ\nพิบุล\nพิบูล\nพิปริต\nพิปลาส\nพิพรรธ\nพิพรรธน์\nพิพักพิพ่วน\nพิพัฒ\nพิพัฒน์\nพิพากษ์\nพิพากษา\nพิพาท\nพิพิธ\nพิพิธภัณฑ์\nพิพิธภัณฑสถาน\nพิภพ\nพิภัช\nพิภาค\nพิภูษณะ\nพิเภก\nพิมปะการัง\nพิมพ์\nพิมพการัง\nพิมพา\nพิมพาภรณ์\nพิมล\nพิมเสน\nพิมาน\nพิมุข\nพิโมกข์\nพิโมกษ์\nพิโยกพิเกน\nพิโยค\nพิรอด\nพิระ\nพิรากล\nพิราบ\nพิราม\nพิราลัย\nพิริยะ\nพิรี้พิไร\nพิรุณ\nพิรุธ\nพิรุฬห์\nพิเรนทร์\nพิเราะ\nพิโรธ\nพิไร\nพิลังกาสา\nพิลาป\nพิลาส\nพิลิปดา\nพิลึก\nพิลึกกึกกือ\nพิลึกพิลั่น\nพิโลน\nพิไล\nพิศ\nพิศวง\nพิศวาส\nพิศาล\nพิศุทธ์\nพิศุทธิ์\nพิเศษ\nพิษ\nพิษฐาน\nพิษนาศน์\nพิสดาร\nพิสมร\nพิสมัย\nพิสัง\nพิสัช\nพิสัย\nพิสิฐ\nพิสุทธิ์\nพิสูจน์\nพิหค\nพิหาร\nพิฬาร\nพี\nพี่\nพี้\nพีชคณิต\nพีระมิด\nพึง\nพึ่ง\nพึ่บ\nพึ่บพั่บ\nพึม\nพึมพำ\nพืช\nพืด\nพื้น\nพุ\nพุก\nพุกาม\nพุง\nพุ่ง\nพุงดอ\nพุฒ\nพุฒิ\nพุด\nพุดตาน\nพุทธ\nพุทธะ\nพุทธังกูร\nพุทธางกูร\nพุทธันดร\nพุทธาภิเษก\nพุทธาวาส\nพุทธิ\nพุทโธ่\nพุทรา\nพุธ\nพุ่ม\nพุมเรียง\nพุ้ย\nพู\nพูพอน\nพู่\nพูด\nพูน\nพู้น\nพู่ระหง\nเพ\nเพ็ก\nเพกา\nเพคะ\nเพ็ง\nเพ่ง\nเพ็จ\nเพชฉลูกรรม\nเพชฌฆาต\nเพชร\nเพชรดา\nเพชรปาณี\nเพชรฤกษ์\nเพชรายุธ\nเพชรกลับ\nเพชรสังฆาต\nเพชรหลีก\nเพชรหึง\nเพ็ญ\nเพฑูริย์\nเพณี\nเพ็ดทูล\nเพดาน\nเพท\nเพทนา\nเพทาย\nเพทุบาย\nเพโทบาย\nเพ่นพ่าน\nเพนียด\nเพไนย\nเพ้ย\nเพรง\nเพรซีโอดิเมียม\nเพรา\nเพราะ\nเพริด\nเพริศ\nเพรียก\nเพรียง\nเพรียบ\nเพรี้ยม\nเพรียว\nเพรื่อ\nเพรือง\nเพล\nเพลง\nเพล็ด\nเพล้โพล้\nเพลา\nเพลาะ\nเพลิง\nเพลิดเพลิน\nเพลิน\nเพลีย\nเพลี้ย\nเพลี่ยง\nเพศ\nเพส\nเพสลาด\nเพ่อ\nเพ้อ\nเพ้อเจ้อ\nเพอิญ\nเพะ\nเพา\nเพาะ\nเพิก\nเพิง\nเพิ่ง\nเพิดเพ้ย\nเพิ่ม\nเพี้ย\nเพียง\nเพี้ยง\nเพียงออ\nเพี้ยน\nเพียบ\nเพียร\nเพื่อ\nเพื่อน\nแพ\nแพ้\nแพง\nแพ่ง\nแพงพวย\nแพทย์\nแพทยศาสตร์\nแพน\nแพ่น\nแพนก\nแพนงเชิง\nแพร\nแพร่\nแพรก\nแพร่ง\nแพรว\nแพร้ว\nแพลง\nแพลทินัม\nแพล็บ\nแพลม\nแพลเลเดียม\nแพละ\nแพละโลม\nแพว\nแพ้ว\nแพศย์\nแพศยา\nแพะ\nโพ\nโพก\nโพกพาย\nโพง\nโพงพาง\nโพชฌงค์\nโพซิตรอน\nโพด\nโพทะเล\nโพแทสเซียม\nโพธ\nโพธิ\nโพธิ์\nโพน\nโพ้น\nโพนทะนา\nโพบาย\nโพย\nโพยก๊วน\nโพยม\nโพรก\nโพรง\nโพรโทแอกทิเนียม\nโพรมีเทียม\nโพระดก\nโพล่\nโพลง\nโพล่ง\nโพล้ง\nโพลน\nโพล้เพล้\nโพละ\nโพสพ\nไพ\nไพ่\nไพจิตร\nไพชน\nไพชยนต์\nไพฑูรย์\nไพที\nไพบูลย์\nไพพรรณ\nไพร\nไพร่\nไพรจิตร\nไพรชน\nไพรชยนต์\nไพรฑูรย์\nไพรที\nไพรบูลย์\nไพรเราะ\nไพรัช\nไพรำ\nไพริน\nไพรินทร์\nไพรี\nไพเราะ\nไพโรจน์\nไพล\nไพล่\nไพศาขะ\nไพศาล\nไพเศษ\nไพสพ\nไพสิฐ\nไพหาร\nฟก\nฟ้ง\nฟรักโทส\nฟรี\nฟลูออรีน\nฟ่อ\nฟ้อ\nฟอก\nฟอง\nฟ่อง\nฟ้อง\nฟอด\nฟอน\nฟ่อน\nฟ้อน\nฟ้อแฟ้\nฟอร์มาลดีไฮด์\nฟอร์มาลิน\nฟอสฟอรัส\nฟอสเฟต\nฟัก\nฟักฟุ้น\nฟัง\nฟังก์ชัน\nฟัด\nฟัน\nฟั่น\nฟั้น\nฟ้า\nฟาก\nฟาง\nฟ่าง\nฟาด\nฟาทอม\nฟาน\nฟ่าม\nฟาย\nฟาร์ม\nฟาสซิสต์\nฟิด\nฟิต\nฟิบ\nฟิล์ม\nฟิวส์\nฟิสิกส์\nฟี่\nฟี้\nฟืดฟาด\nฟืน\nฟื้น\nฟืม\nฟุ\nฟุ้ง\nฟุต\nฟุน\nฟุบ\nฟุ่บ\nฟุ่มเฟือย\nฟุลสแก๊ป\nฟู\nฟู่\nฟูก\nฟูด\nฟูม\nเฟ็ด\nเฟ้น\nเฟลด์สปาร์\nเฟ้อ\nเฟอร์เมียม\nเฟอะ\nเฟอะฟะ\nเฟะ\nเฟะฟะ\nเฟิน\nเฟี้ยม\nเฟี้ยว\nเฟือ\nเฟื้อ\nเฟือง\nเฟื่อง\nเฟื้อง\nเฟือน\nเฟือย\nเฟื้อย\nแฟ่\nแฟง\nแฟชั่น\nแฟน\nแฟบ\nแฟ้ม\nแฟรนเซียม\nแฟลกซ์\nแฟลต\nแฟะ\nโฟกัส\nไฟ\nภควดี\nภควัต\nภควันต์\nภควัม\nภควา\nภควาน\nภคะ\nภคันทลา\nภคินี\nภณะ\nภณิดา\nภพ\nภมร\nภมริน\nภมรี\nภมุกา\nภยันตราย\nภยาคติ\nภระ\nภรณี\nภรต\nภรรดร\nภรรดา\nภรรยา\nภระมร\nภระมรี\nภราดร\nภราดรภาพ\nภราดา\nภริยา\nภฤศ\nภวะ\nภวตัณหา\nภวนะ\nภวังค์\nภวังคจิต\nภักดี\nภักตะ\nภักติ\nภักษ์\nภักษา\nภักษาหาร\nภัค\nภัคน์\nภังคะ\nภังคี\nภัจ\nภัณฑ์\nภัณฑาคาร\nภัณฑาคาริก\nภัณฑารักษ์\nภัณฑนะ\nภัณฑู\nภัต\nภัตตาคาร\nภัตตาหาร\nภัตร\nภัทระ\nภัทรกัป\nภัพ\nภัย\nภัสดา\nภัสตรา\nภัสมะ\nภัสสร\nภา\nภาค\nภาคย์\nภาคยานุวัติ\nภาคินี\nภาคิไนย\nภาคี\nภาคียะ\nภาชนะ\nภาชี\nภาณ\nภาณวาร\nภาณกะ\nภาณี\nภาณุ\nภาดร\nภาดา\nภาตระ\nภาตา\nภาตุ\nภาติกะ\nภาติยะ\nภาพ\nภาพย์\nภาม\nภาย\nภาร\nภาระ\nภารดี\nภารต\nภารตี\nภารยทรัพย์\nภารยา\nภารา\nภาวนา\nภาวะ\nภาษ\nภาษณ์\nภาษา\nภาษิต\nภาษี\nภาส\nภาสน์\nภาสวร\nภาสา\nภาสุระ\nภิกขา\nภิกขาจาร\nภิกขุ\nภิกขุนี\nภิกษา\nภิกษาจาร\nภิกษาหาร\nภิกษุ\nภิกษุณี\nภิงคาร\nภิญโญ\nภิตติ\nภินท์\nภินทนาการ\nภิยโย\nภิรมย์\nภิรมย์สุรางค์\nภิษัช\nภิสัก\nภีตะ\nภีมะ\nภีรุ\nภุกต์\nภุขัน\nภุช\nภุชงค์\nภุต\nภุมมะ\nภุมรัตน์\nภุมวาร\nภุมรา\nภุมริน\nภุมรี\nภุมเรศ\nภู\nภู่\nภูต\nภูติ\nภูม\nภูมิ\nภูมี\nภูริ\nภูรี\nภูวดล\nภูวนาถ\nภูวเนตร\nภูวไนย\nภูษา\nภูษิต\nเภกะ\nเภตรา\nเภท\nเภทุบาย\nเภรี\nเภสัช\nโภค\nโภคะ\nโภคิน\nโภคี\nโภไคย\nโภไคศวรรย์\nโภช\nโภชย์\nโภชก\nโภชนะ\nโภชนา\nโภชนาหาร\nโภชนียะ\nไภริน\nไภรี\nไภษัชคุรุ\nไภษัชย์\nมกร\nมกราคม\nมกุฎ\nมคธ\nมฆวัน\nมฆะ\nมฆา\nม่ง\nมงกุฎ\nมงโกรย\nมงคล\nมงคลวาร\nมณฑ์\nมณฑก\nมณฑนะ\nมณฑป\nมณฑล\nมณฑา\nมณฑารพ\nมณฑิระ\nมณเฑียร\nมณี\nมด\nมตะ\nมตกภัต\nมติ\nมทนะ\nมทะ\nมธุ\nมธุกร\nมธุการี\nมธุลีห์\nมธุระ\nมธุรพจน์\nมน\nมนินทรีย์\nม่น\nมนต์\nมนตร์\nมนตรี\nมนท์\nมนทิราลัย\nมนเทียร\nมนสิการ\nมนัส\nมนัสวี\nมนินทรีย์\nมนิมนา\nมนิลา\nมนุญ\nมนุษย์\nมนุษยชาติ\nมนุษยธรรม\nมนุษย์มนา\nมนุษยโลก\nมนุษยศาสตร์\nมนุษยสัมพันธ์\nมนุสาร\nมนู\nมนูสาร\nมโน\nมโนช\nมโนชญ์\nมโนราห์\nมโนสาเร่\nมโนห์รา\nมมังการ\nมยุรฉัตร\nมยุระ\nมยุรา\nมยุรี\nมยุเรศ\nมยูร\nมรกต\nมรคา\nมรฑป\nมรณ์\nมรณะ\nมรณกรรม\nมรณบัตร\nมรณภัย\nมรณภาพ\nมรดก\nมรรค\nมรรคา\nมรรตัย\nมรรยาท\nมรรษ\nมรสุม\nมริจ\nมริยาท\nมรีจิ\nมรุต\nมฤค\nมฤคย์\nมฤคศิระ\nมฤคศิรมาส\nมฤคเศียร\nมฤคินทร์\nมฤเคนทร์\nมฤดก\nมฤต\nมฤตยู\nมฤทุ\nมล\nมละ\nมลัก\nมลังเมลือง\nมล้าง\nมลาย\nมลายู\nมวก\nม่วง\nมวน\nม่วน\nม้วน\nม้วนต้วน\nมวย\nม้วย\nมวล\nมหกรรม\nมหรณพ\nมหรรณพ\nมหรสพ\nมหัจฉริยะ\nมหัต\nมหัทธนะ\nมหันต์\nมหันตโทษ\nมหัพภาค\nมหัศจรรย์\nมหา\nมหากฐิน\nมหากาฬ\nมหาขันธกะ\nมหาจักร\nมหาชน\nมหาชัย\nมหาชาติ\nมหาโชตรัต\nมหาดไทย\nมหาดเล็ก\nมหาตมะ\nมหาไถ่\nมหาเทพ\nมหาเทพี\nมหาเทวี\nมหาธาตุ\nมหานิกาย\nมหานิล\nมหาบพิตร\nมหาบัณฑิต\nมหาพน\nมหาพรหม\nมหาภารตะ\nมหาภิเนษกรมณ์\nมหาภูต\nมหาเมฆ\nมหายาน\nมหายุค\nมหาราช\nมหาฤกษ์\nมหาละลวย\nมหาละลาย\nมหาวงศ์\nมหาวรรค\nมหาวิทยาลัย\nมหาศักราช\nมหาศาล\nมหาสงกรานต์\nมหาสดมภ์\nมหาสดำ\nมหาสมุทร\nมหาสาวก\nมหาหงส์\nมหาหิงคุ์\nมหาอำนาจ\nมหาอุจ\nมหาอุด\nมหาอุปรากร\nมหาอุปราช\nมหิ\nมหิดล\nมหิธร\nมหิป\nมหิงส์\nมหิทธิ\nมหินท์\nมหิมา\nมหิศร\nมหิศวร\nมหิษ\nมหิษี\nมหึมา\nมเหยงค์\nมเหศ\nมเหศวร\nมเหศักดิ์\nมเหสักข์\nมเหสิ\nมเหสี\nมเหาฬาร\nมโหรสพ\nมโหระทึก\nมโหรี\nมโหฬาร\nมไหศวรรย์\nมอ\nมอง\nมองโกลอยด์\nมองโกเลีย\nมองคร่อ\nมอญ\nมอด\nม่อต้อ\nมอเตอร์\nมอเตอร์ไซค์\nมอน\nม่อน\nมอบ\nมอม\nมอมแมม\nม่อย\nมอร์ฟีน\nมอระกู่\nมอลโทส\nม่อลอกม่อแลก\nม่อห้อม\nม่อฮ่อม\nมะ\nมะกรูด\nมะกล่ำ\nมะกอก\nมะก่อง\nมะกะโรนี\nมะกา\nมะเกลือ\nมะเกี๋ยง\nมะข่วง\nมะขวิด\nมะขาม\nมะเขือ\nมะแข่น\nมะคังแดง\nมะค่า\nมะคำไก่\nมะคำดีควาย\nมะงั่ว\nมะงุมมะงาหรา\nมะซัก\nมะซาง\nมะดัน\nมะดีหวี\nมะดูก\nมะเดหวี\nมะเดื่อ\nมะต้อง\nมะตะบะ\nมะตาด\nมะตาหะรี\nมะตึ่ง\nมะตื๋น\nมะตูม\nมะแตก\nมะโต\nมะนาว\nมะปราง\nมะปริง\nมะฝ่อ\nมะพร้าว\nมะพลับ\nมะพูด\nมะแพน\nมะแพร้ว\nมะเฟือง\nมะแฟน\nมะไฟ\nมะม่วง\nมะม่าว\nมะมี่\nมะมื่น\nมะมุด\nมะเมอ\nมะเมีย\nมะเมื่อย\nมะแม\nมะยง\nมะยม\nมะระ\nมะริด\nมะรืน\nมะรุม\nมะรุมมะตุ้ม\nมะเร็ง\nมะเรื่อง\nมะโรง\nมะลอกมะแลก\nมะละกอ\nมะลิ\nมะลื่น\nมะลืมดำ\nมะลุลี\nมะแว้ง\nมะสัง\nมะเส็ง\nมะหวด\nมะหะหมัด\nมะหาด\nมะหิ่ง\nมะเหงก\nมะอึก\nมะฮอกกานี\nมัก\nมักกะโรนี\nมักกะลีผล\nมักกะสัน\nมักขะ\nมั่กขั้ก\nมักขิกา\nมัค\nมัคคะ\nมัคคุเทศก์\nมัคนายก\nมัฆวาน\nมั่ง\nมังกง\nมังกร\nมังกุ\nมังคละ\nมังค่า\nมังคุด\nมังตาน\nมังสวิรัติ\nมังสะ\nมังสี\nมัจจะ\nมัจจุ\nมัจฉริยะ\nมัจฉรี\nมัจฉะ\nมัจฉา\nมัชชะ\nมัชวิรัติ\nมัชชาระ\nมัชฌันติกสมัย\nมัชฌิม\nมัชฌิมา\nมัญจา\nมัญชิษฐา\nมัญชุ\nมัญชุสา\nมัญชูสา\nมัญเชฏฐะ\nมัฏฐะ\nมัณฑนศิลป์\nมัณฑนา\nมัด\nมัตตะ\nมัตตัญญู\nมัตตา\nมัตติกา\nมัตถกะ\nมัตถลุงค์\nมัตสยะ\nมัตสยา\nมัตสระ\nมัตสริน\nมัททวะ\nมัทนะ\nมัทยะ\nมัธยฐาน\nมัธยม\nมัธยันห์\nมัธยัสถ์\nมัน\nมั่น\nมันตา\nมันถะ\nมันทิระ\nมันทิราลัย\nมับ\nมั้ม\nมัมมี่\nมัย\nมัลละ\nมัลลิกา\nมัว\nมัวซัว\nมั่ว\nมัศยา\nมัสตุ\nมัสตาร์ด\nมัสมั่น\nมัสยิด\nมัสรู่\nมัสลิน\nมัสสุ\nมา\nม้า\nมาก\nมาคสิระ\nมาฆบูชา\nมาฆะ\nม้าง\nมางสะ\nมาณพ\nมาณวิกา\nมาด\nมาดา\nมาตงค์\nมาตร\nมาตรา\nมาตฤ\nมาตังคะ\nมาตา\nมาตามหัยกะ\nมาตามหัยกา\nมาตามหัยยิกา\nมาติกะ\nมาติกา\nมาตุ\nมาตุจฉา\nมาตุรงค์\nมาตุเรศ\nมาตุละ\nมาตุลา\nมาตุลานี\nมาทะ\nมาธยมิก\nมาธยมิกะ\nมาธุระ\nมาธุสร\nมาธูระ\nมาน\nม่าน\nม้าน\nมานพ\nมานะ\nมานัต\nมานัส\nมานิต\nมานี\nมานุษ\nมานุษยวิทยา\nมาโนชญ์\nมาบ\nมาภา\nม้าม\nม่าย\nมายา\nมาร\nมาราธิราช\nมารค\nมารดร\nมารดา\nมารยา\nมารยาท\nมารศรี\nมารษา\nมาริต\nมารุต\nมาลย์\nมาลัย\nมาลา\nมาลาตี\nมาลาเรีย\nมาลินี\nมาลี\nมาลุต\nมาศ\nมาส\nมาสก\nมาห์\nม่าห์\nมาหิส\nม่าเหมี่ยว\nมาฬก\nมิ\nมิค\nมิคสัญญี\nมิ่ง\nมิจฉา\nมิด\nมิตร\nมิติ\nมิเตอร์\nมิถยา\nมิถุน\nมิถุนายน\nมิทธะ\nมินตรา\nมินตา\nมินหม้อ\nมิ่ม\nมิ้ม\nมิไย\nมิรันตี\nมิลลิกรัม\nมิลลิบาร์\nมิลลิเมตร\nมิลลิลิตร\nมิลักขะ\nมิลักขู\nมิส\nมิสกรี\nมิสกวัน\nมิสซา\nมี\nมี่\nมีด\nมีเทน\nมีน\nมีนาคม\nมี่สั้ว\nมึง\nมึน\nมืด\nมืน\nมื่น\nมือ\nมื้อ\nมุ\nมุก\nมุกดา\nมุกดาหาร\nมุกุระ\nมุข\nมุขเด็จ\nมุขยประโยค\nมุโขโลกนะ\nมุคคะ\nมุง\nมุ่ง\nมุ้ง\nมุจฉา\nมุจนะ\nมุจลินท์\nมุญจนะ\nมุญชะ\nมุฐิ\nมุณฑกะ\nมุณฑะ\nมุด\nมุตกิด\nมุตฆาต\nมุตตะ\nมุตตา\nมุตติ\nมุตะ\nมุติ\nมุททา\nมุทธชะ\nมุทธา\nมุทธาภิเษก\nมุทรา\nมุทริกา\nมุทะลุ\nมุทา\nมุทิกา\nมุทิงค์\nมุทิตา\nมุทุ\nมุทุตา\nมุ่น\nมุนิ\nมุนินทร์\nมุนี\nมุบ\nมุบมิบ\nมุม\nมุ้ม\nมุ่ย\nมุรธา\nมุรธาภิเษก\nมุสละ\nมุสลิม\nมุสา\nมุสิก\nมุหงิด\nมุหน่าย\nมุหุต\nมุฮัมมัด\nมูก\nมูเซอ\nมูตร\nมู่ทู่\nมูน\nมูมมาม\nมูรติ\nมูรธา\nมูรธาภิเษก\nมูล\nมูละ\nมูลา\nมูลิกากร\nมู่ลี่\nมู่เล่\nมูสัง\nมูสิก\nมูสิกะ\nมูสิกทันต์\nเม\nเม็ก\nเมกะเฮิรตซ์\nเมขลา\nเมฆ\nเมฆา\nเมฆินทร์\nเมฆี\nเม็ง\nเม็ด\nเมตตา\nเมตไตรย\nเมตร\nเมตริก\nเมตริกตัน\nเมถุน\nเมท\nเมโท\nเมทนี\nเมทินี\nเมทนีดล\nเมทานอล\nเมทิลแอลกอฮอล์\nเมธ\nเมธา\nเมธาวี\nเมธี\nเมน\nเม่น\nเม้น\nเมนเดลีเวียม\nเมนทอล\nเม้ม\nเมรัย\nเมริเดียน\nเมรุ\nเมล์\nเมล็ด\nเมลือง\nเมษ\nเมษายน\nเมห์\nเมหนะ\nเมหะ\nเมะ\nเมา\nเม่า\nเม้า\nเมารี\nเมาลี\nเมาฬี\nเมาะ\nเมิง\nเมิน\nเมิล\nเมีย\nเมียง\nเมี่ยง\nเมี้ยน\nเมือ\nเมื้อ\nเมื่อ\nเมือก\nเมือง\nเมือบ\nเมื่อย\nแม่\nแม้\nแมก\nแมกนีเซียม\nแมง\nแมงกะพรุน\nแมงกานิน\nแมงกานีส\nแมงคา\nแมงคาเรือง\nแมงช้าง\nแมงดา\nแมงลัก\nแม่ตะงาว\nแมน\nแม่น\nแม้น\nแมลง\nแมลบ\nแมว\nแม้ว\nแมะ\nโม\nโม่\nโม้\nโมก\nโมกข์\nโมกษะ\nโมฆกรรม\nโมฆสัญญา\nโมฆะ\nโมฆียกรรม\nโมฆียะ\nโมง\nโม่ง\nโมงครุ่ม\nโมทนา\nโมโนแซ็กคาไรด์\nโมไนย\nโมเม\nโมเมนต์\nโมเย\nโมรา\nโมรี\nโมเรส\nโมลิบดีนัม\nโมลี\nโมเลกุล\nโมเสก\nโมเสส\nโม่ห์\nโมหะ\nโมหันธ์\nโมหาคติ\nโมโห\nไม่\nไม้\nไมกา\nไมครอน\nไมโครกรัม\nไมโครฟิล์ม\nไมโครโฟน\nไมโครมิเตอร์\nไมโครเมตร\nไมโครลิตร\nไมโครเวฟ\nไมตรี\nไมยราบ\nไมล์\nยก\nยกกระบัตร\nยกนะ\nยง\nยงโย่\nยชุรเวท\nยติ\nยติภังค์\nยถากรรม\nยถาภูตญาณ\nย่น\nยนต์\nยนตร์\nยม\nยมก\nยมโดย\nยมนา\nยมล\nยมะ\nยรรยง\nยล\nยวง\nยวด\nยวน\nยวบ\nย้วย\nยวรยาตร\nยศ\nยโส\nยอ\nย่อ\nยอก\nย็อกแย็ก\nยอง\nย่อง\nย้อง\nยอด\nยอน\nย้อน\nยอบ\nยอม\nย่อม\nย้อม\nย่อย\nย้อย\nย้อแย้\nยะ\nย่ะ\nยะยอบ\nยะยับ\nยัก\nยักข์\nยักขินี\nยักษ์\nยักษา\nยักษิณี\nยักษี\nยัง\nยั้ง\nยั่งยืน\nยัชโญปวีต\nยัญ\nยัญญะ\nยัด\nยัติภังค์\nยัน\nยั่น\nยันต์\nยันตร\nยันตร์\nยันตรกรรม\nยั่นตะนี\nยับ\nยั่ว\nยั้ว\nยั้วเยี้ย\nยัวรยาตร\nยัวะ\nยัษฏิ\nยา\nย่า\nยาก\nยาคุ\nยาคู\nยาง\nย่าง\nยางพารา\nยาจก\nยาจนา\nยาไฉน\nยาด\nยาดา\nยาตร\nยาตรา\nยาน\nย่าน\nย่านพาโหม\nยานมาศ\nยานุมาศ\nยานี\nยาม\nย่าม\nยามะ\nยามักการ\nยามา\nยาย\nย้าย\nยายี\nยาว\nย้าว\nยาวกาลิก\nยาวชีวิก\nยาสูบ\nย่าหยา\nยาหยี\nยำ\nย่ำ\nย้ำ\nยำเยีย\nยิก\nยิง\nยิ่ง\nยิฏฐะ\nยิน\nยิบ\nยิบหยี\nยิปซัม\nยิปซี\nยิ้ม\nยิมนาสติก\nยิหวา\nยี\nยี่\nยี้\nยี่ก่า\nยี่เก\nยี่เข่ง\nยี่โถ\nยีน\nยี่โป้\nยี่ภู่\nยีราฟ\nยี่สก\nยี่สง\nยี่สน\nยี่สาน\nยี่สุ่น\nยี่หระ\nยี่หร่า\nยี่ห้อ\nยี่หุบ\nยึกยัก\nยึกยือ\nยึด\nยืด\nยืน\nยื่น\nยืม\nยื้อ\nยุ\nยุกกระบัตร\nยุกดิ\nยุกติ\nยุกติธรรม\nยุกต์\nยุค\nยุคนธร\nยุคล\nยุคันต์\nยุคันธร\nยุคุนธร\nยุง\nยุ่ง\nยุ้ง\nยุด\nยุต\nยุติ\nยุทธ\nยุทธ์\nยุทธนา\nยุทโธปกรณ์\nยุบ\nยุ่บ\nยุ่บยั่บ\nยุบล\nยุพดี\nยุพเรศ\nยุพา\nยุพาน\nยุพาพาล\nยุพาพิน\nยุ่มย่าม\nยุ่ย\nยุ้ย\nยุรยาตร\nยูรยาตร\nยุวชน\nยุวดี\nยุวราช\nยุวา\nยุวาน\nยู\nยู่\nยูง\nยูโด\nยูถะ\nยูถิกา\nยูริก\nยูเรนัส\nยูเรเนียม\nยูโรเพียม\nเย\nเย้\nเยง\nเยซู\nเย็ด\nเย็น\nเย็นตาโฟ\nเย็นเตาโฟ\nเย็บ\nเย้ย\nเยอ\nเย่อ\nเยอรมัน\nเยอว\nเย่อหยิ่ง\nเยอะ\nเยอะแยะ\nเยา\nเย้า\nเยาว์\nเยาวชน\nเยาวมาลย์\nเยาวยอด\nเยาวราช\nเยาวเรศ\nเยาวลักษณ์\nเยาวพา\nเยาวพาณี\nเยาวพาน\nเยาะ\nเยิง\nเยิน\nเยิ่น\nเยิ่นเย้อ\nเยินยอ\nเยิบ\nเยิบยาบ\nเยิ้ม\nเยีย\nเยี่ยง\nเยี่ยงอย่าง\nเยียงผา\nเยียดยัด\nเยียน\nเยียบ\nเยี่ยม\nเยียรบับ\nเยียรยง\nเยียว\nเยี่ยว\nเยียวยา\nเยือ\nเยื่อ\nเยื้อ\nเยือก\nเยือง\nเยื่อง\nเยื้อง\nเยือน\nเยื้อน\nแย่\nแย้\nแยก\nแยง\nแย่ง\nแย้ง\nแยงแย่\nแยงแย้\nแยบ\nแย็บ\nแยม\nแย้ม\nแยแส\nแยะ\nโย\nโย้\nโยก\nโยกเยก\nโยคาพจร\nโยคาวจร\nโยคเกณฑ์\nโยคยะ\nโยคะ\nโยคิน\nโยคี\nโยง\nโย่ง\nโย่งเย่ง\nโยงโย่\nโยชน์\nโยชนา\nโยถิกะ\nโยทะกา\nโยธวาทิต\nโยธา\nโยธิน\nโยน\nโยนก\nโยนิโส\nโยนี\nโยม\nโยโส\nใย\nไย\nไย่\nไยดี\nไยไพ\nรก\nรง\nรงค์\nรงควัตถุ\nรงรอง\nรจนา\nรจเรข\nรจเลข\nรจิต\nรชตะ\nรชนิ\nรชนี\nรชะ\nรณรงค์\nรด\nรดี\nรตนะ\nรตะ\nรติ\nรถ\nรน\nร่น\nรบ\nรบาญ\nรพี\nรม\nร่ม\nรมณี\nรมณีย์\nรมณียสถาน\nรมย์\nรมเยศ\nรยางค์\nรวก\nรวง\nร่วง\nรวด\nรวน\nรวนเร\nร่วน\nรวบ\nรวม\nร่วม\nรวย\nรวิ\nรวิวาร\nรวี\nรศนา\nรส\nรสนา\nรสสุคนธ์\nรสายนเวท\nรสิก\nรหัท\nรหัส\nรโห\nรโหฐาน\nรอ\nร่อ\nรอก\nรอง\nร่อง\nร้อง\nรองเง็ง\nร่องแร่ง\nรอด\nรอน\nร่อน\nร้อน\nรอบ\nรอบคอบ\nรอม\nรอมชอม\nรอมร่อ\nรอย\nร่อย\nร้อย\nร่อแร่\nระ\nระกะ\nระกา\nระกำ\nระเกะระกะ\nระคน\nระคาง\nระคาย\nระแคะ\nระฆัง\nระงม\nระงับ\nระแง้\nระโงกหิน\nระชวย\nระดม\nระดะ\nระดับ\nระดา\nระด่าว\nระดู\nระเด่น\nระเดียง\nระแด\nระตู\nระทก\nระทด\nระทม\nระทวย\nระทา\nระทึก\nระแทะ\nระนาด\nระนาบ\nระนาม\nระนาว\nระเนน\nระเนระนาด\nระเนียด\nระแนง\nระแนะ\nระบบ\nระบม\nระบอบ\nระบัด\nระบับ\nระบาด\nระบาย\nระบำ\nระบิล\nระบือ\nระบุ\nระเบง\nระเบ็ง\nระเบิด\nระเบียง\nระเบียน\nระเบียบ\nระแบบ\nระมัดระวัง\nระมาด\nระเมียร\nระย่อ\nระย่อม\nระยะ\nระยั้ง\nระยับ\nระย้า\nระยาบ\nระยำ\nระยิบระยับ\nระโยง\nระโยงระยาง\nระรวย\nระรอง\nระร่อน\nระรัว\nระราน\nระร่าย\nระริก\nระรี่\nระรึง\nระรื่น\nระรื้น\nระเร้ง\nระเริง\nระเรียง\nระเรื่อย\nระแรง\nระลวง\nระลอก\nระลึก\nระวัง\nระวาง\nระวาย\nระวิง\nระแวง\nระแวดระวัง\nระไว\nระส่ำระสาย\nระหกระเหิน\nระหง\nระหวย\nระหว่าง\nระหองระแหง\nระหัด\nระหาย\nระเห็จ\nระเหย\nระเหระหน\nระเหหน\nระเหิด\nระเหินระหก\nระแหง\nระโหย\nระอา\nระอิดระอา\nระอุ\nรัก\nรักข์\nรักขิต\nรักตะ\nรักบี้\nรักเร่\nรักแร้\nรักษ์\nรักษา\nรัง\nรั้ง\nรังเกียจ\nรังแก\nรังค์\nรังควาน\nรังแค\nรังรอง\nรังวัด\nรังสิ\nรังสี\nรังสิมันตุ์\nรังสิมา\nรัจฉา\nรัช\nรัชชูปการ\nรัชมังคลาภิเษก\nรัชชุ\nรัชฎาภิเษก\nรัชดาภิเษก\nรัชนะ\nรัชนี\nรัญจวน\nรัฏฐาภิปาลโนบาย\nรัฐ\nรัฐประศาสโนบาย\nรัฐประศาสนศาสตร์\nรัด\nรัต\nรัตกัมพล\nรัตมณี\nรัตคน\nรัตจันทน์\nรัตตัญญู\nรัตติ\nรัตน์\nรัตนะ\nรัตนโกสินทร์\nรัตนโกสินทรศก\nรัตนชาติ\nรัตนตรัย\nรัตนบัลลังก์\nรัตนวราภรณ์\nรัตนสิงหาสน์\nรัตนา\nรัตนากร\nรัตนาภรณ์\nรัตนาวลี\nรัตมา\nรัถ\nรัถยา\nรัทเทอร์ฟอร์เดียม\nรัน\nรั้น\nรันทด\nรันทวย\nรับ\nรัมณียสถาน\nรัมภา\nรัมมี่\nรัมย์\nรัย\nรัว\nรั่ว\nรั้ว\nรัศมิมัต\nรัศมิมาน\nรัศมี\nรัษฎากร\nรัสเซีย\nรัสสะ\nรัสสระ\nรา\nร่า\nร้า\nราก\nรากษส\nรากสาด\nราคะ\nราคจริต\nราคา\nราคิน\nราคี\nราง\nร่าง\nร้าง\nรางจืด\nรางชาง\nรางวัล\nราช\nราชกิจจานุเบกษา\nราชนิกุล\nราชวโรงการ\nราชญี\nราชดัด\nราชพฤกษ์\nราชมาณพ\nราชมาษ\nราชมาส\nราชย์\nราชสีห์\nราชะ\nราชัน\nราชันย์\nราชัย\nราชา\nราชาธิปไตย\nราชาธิราช\nราชาภิเษก\nราชายตนะ\nราชาวดี\nราชี\nราชินิกุล\nราชินีกุล\nราชินี\nราชินูปถัมภ์\nราชูปถัมภ์\nราชูปโภค\nราเชน\nราเชนทร์\nราเชนทรยาน\nราโชวาท\nราไชศวรรย์\nราญ\nราญรอน\nราด\nราต\nราตร\nราตรี\nราน\nร่าน\nร้าน\nราบ\nราพณ์\nราพณาสูร\nราม\nรามเกียรติ์\nรามสูร\nรามัญ\nรามา\nราย\nร่าย\nร้าย\nราว\nร้าว\nราวี\nราศี\nราษฎร\nราษฎร์\nราษตรี\nราษราตรี\nราหุ\nราหู\nรำ\nร่ำ\nรำคาญ\nรำงับ\nรำจวน\nรำบาญ\nรำพัน\nรำพาย\nรำพึง\nรำเพย\nรำไพ\nรำมะนา\nรำมะนาด\nรำมะร่อ\nร่ำรวย\nร่ำร่ำ\nรำไร\nรำลึก\nรำหัด\nรำหัส\nริ\nริก\nริดสีดวง\nริน\nริ้น\nริบ\nริบบิ้น\nริบรี่\nริบหรี่\nริปุ\nริปู\nริม\nริ้ว\nริษยา\nรี\nรี่\nรี้พล\nรีด\nรีดักชัน\nรีต\nรีเนียม\nรีบ\nรีม\nรีรอ\nรี้ริก\nรึง\nรึ้ง\nรื่น\nรื้น\nรื้อ\nรุ\nรุก\nรุกข์\nรุกขชาติ\nรุกขเทวดา\nรุกขมูล\nรุกขา\nรุกรุย\nรุ่ง\nรุ้ง\nรุงรัง\nรุ่งริ่ง\nรุจ\nรุจา\nรุจนะ\nรุจิ\nรุจี\nรุจิระ\nรุจิรา\nรุด\nรุต\nรุทธ์\nรุทระ\nรุธิร\nรุธิระ\nรุเธียร\nรุน\nรุ่น\nรุบรู่\nรุม\nรุ่ม\nรุ่มร่าม\nรุย\nรุ่ย\nรุรุ\nรุหะ\nรู\nรู่\nรู้\nรูจี\nรูด\nรูทีเนียม\nรูบิเดียม\nรูป\nรูปิยะ\nรูปี\nรูเล็ตต์\nเร่\nเรข\nเรขา\nเรขาคณิต\nเร็ง\nเร่ง\nเร้ง\nเรณุ\nเรณู\nเรดอน\nเรดาร์\nเรเดียม\nเร้น\nเรรวน\nเรไร\nเร็ว\nเร่ว\nเรวดี\nเรอ\nเร่อ\nเรา\nเร่า\nเร้า\nเราะ\nเริง\nเริด\nเริม\nเริ่ม\nเริ้ม\nเริศร้าง\nเรี่ย\nเรี้ย\nเรียก\nเรียง\nเรียด\nเรียน\nเรียบ\nเรียม\nเรี่ยม\nเรียว\nเรี่ยว\nเรี้ยวรก\nเรือ\nเรื่อ\nเรื้อ\nเรือก\nเรือง\nเรื่อง\nเรื้อง\nเรืองรอง\nเรือด\nเรือน\nเรื้อน\nเรื่อย\nแร\nแร่\nแรก\nแร็กเกต\nแรง\nแร่ง\nแร้ง\nแรด\nแร้นแค้น\nแรม\nแร้ว\nแระ\nโร\nโร่\nโรค\nโรคา\nโรคาพาธ\nโรง\nโรจ\nโรจน์\nโรเดียม\nโรตี\nโรท\nโรธ\nโรม\nโรมัน\nโรเมอร์\nโรย\nโรเร\nโรหิณี\nโรหิต\nไร\nไร่\nไร้\nไรย์\nฤกษ์\nฤกษณะ\nฤคเวท\nฤชา\nฤชุ\nฤณ\nฤดี\nฤดียา\nฤดู\nฤต\nฤติยา\nฤตุ\nฤทธา\nฤทธิ์\nฤทัย\nฤษภ\nฤษยา\nฤษี\nฤๅ\nฤๅดี\nฤๅทัย\nฤๅษี\nฤๅสาย\nลก\nล่ก\nลฆุ\nลง\nล่ง\nลงกา\nล้งเล้ง\nลด\nลดา\nลดาวัลย์\nลน\nล้น\nลบ\nลบอง\nลพ\nลพุช\nลม\nล่ม\nล้ม\nลมาด\nลรรลุง\nลลนา\nลลิต\nลวก\nลวง\nล่วง\nล้วง\nลวณะ\nลวด\nล้วน\nลวนลาม\nลวนะ\nล่วม\nลวะ\nลวิตร\nลหุ\nลหุกาบัติ\nล่อ\nล้อ\nลอก\nล็อก\nล็อกเกต\nลอกแลก\nลอการิทึม\nลอง\nล่อง\nลองกอง\nลองจิจูด\nลองไน\nลอด\nลอตเตอรี่\nลอน\nล่อน\nลอบ\nลอม\nล้อม\nลอมชอม\nลอมพอก\nลอย\nล่อย\nล่อแล่\nลอว์เรนเซียม\nลออ\nละ\nล่ะ\nละคร\nละติจูด\nละบม\nละบอง\nละบือ\nละเบ็ง\nละโบม\nละม่อม\nละมั่ง\nละมาน\nละม้าย\nละมุ\nละมุด\nละมุน\nละเมอ\nละเมาะ\nละเมิด\nละเมียด\nละแมะ\nละโมก\nละโมบ\nละไม\nละลวย\nละลอก\nละล้า\nละล้าละลัง\nละลาน\nละลาบละล้วง\nละลาย\nละล้าว\nละล่ำละลัก\nละลิบ\nละลุม\nละเลง\nละเล้า\nละเลาะ\nละเลิง\nละเลียด\nละเลียบ\nละไล้\nละว้า\nละวาด\nละเวง\nละแวก\nละโว้\nละหมาด\nละห้อย\nละหาน\nละหาร\nละหุ่ง\nละเหย\nละเหี่ย\nละอง\nละออง\nละอาย\nละเอียด\nละแอน\nลัก\nลักขณะ\nลักขณา\nลักขะ\nลักขี\nลักจั่น\nลักปิดลักเปิด\nลักษณ์\nลักษณนาม\nลักษณะ\nลักษณาการ\nลักษมณ์\nลักษมาณา\nลักษมี\nลักษะ\nลัคคะ\nลัคน์\nลัคนา\nลัง\nลั่ง\nลังกา\nลังคี\nลังถึง\nลังลอง\nลังเล\nลังสาด\nลัชชา\nลัชชี\nลัญจ์\nลัญจกร\nลัญฉกร\nลัญฉน์\nลัฐิ\nลัฐิกา\nลัด\nลัดา\nลัทธ์\nลัทธิ\nลัน\nลั่น\nลันเต\nลันเตา\nลันไต\nลั่นทม\nลันโทม\nลับ\nลัพธ์\nลัพธิ\nลัภ\nลัภนะ\nลัภย์\nลัมพ์\nลัย\nลา\nล่า\nล้า\nลาก\nลาง\nล่าง\nล้าง\nลางลิง\nลางสาด\nลาช\nลาชะ\nลาชา\nลาญ\nลาด\nลาดเลา\nล้าต้า\nล่าเตียง\nลาน\nล่าน\nล้าน\nลาบ\nลาพอน\nลาภ\nลาม\nล่าม\nลามก\nลาย\nล้าย\nลายสือ\nลาลา\nลาว\nลาวัณย์\nลาวา\nลำ\nล่ำ\nล้ำ\nลำเข็ญ\nลำแข\nลำเค็ญ\nลำเจียก\nลำดวน\nลำดับ\nลำเนา\nลำบอง\nลำบาก\nลำปำ\nลำพวน\nลำพอง\nลำพัง\nลำพู\nลำเพ็ญ\nลำเพา\nลำแพน\nลำโพง\nลำไพ่\nลำภุขัน\nลำมะลอก\nลำยอง\nลำไย\nลำลอง\nล่ำลา\nลำลาบ\nลำลึก\nลำเลาะ\nลำเลิก\nลำเลียง\nลำเวียง\nลำเอียก\nลำเอียง\nลิ\nลิกขา\nลิกไนต์\nลิกู\nลิเก\nลิขนะ\nลิขสิทธิ์\nลิขิต\nลิง\nลิงค์\nลิด\nลิต\nลิตมัส\nลิตร\nลิเทียม\nลิ่น\nลิ้น\nลินจง\nลิ้นจี่\nลินลา\nลินสีด\nลิ่นฮื้อ\nลินิน\nลิบ\nลิปดา\nลิปสติก\nลิปิ\nลิฟต์\nลิเภา\nลิ่ม\nลิ้ม\nลิมป์\nลิมปนะ\nลิลิต\nลิว\nลิ่ว\nลิสง\nลี\nลี่\nลี้\nลีซอ\nลีบ\nลีลา\nลีลาศ\nลีฬหา\nลึก\nลึงค์\nลืด\nลื่น\nลื้น\nลืบ\nลืม\nลือ\nลื่อ\nลื้อ\nลุ\nลุก\nลุง\nลุ้ง\nลุ่น\nลุ้น\nลุพธ์\nลุ่ม\nลุมพี\nลุมพู\nลุย\nลุ่ย\nลุ้ย\nลู่\nลูก\nลูกระมาศ\nลูกเอ็น\nลูขะ\nลูทีเชียม\nลูบ\nเลก\nเล็ก\nเลข\nเลขา\nเลขาธิการ\nเลขานุการ\nเล็ง\nเล้ง\nเล่งฮื้อ\nเลเซอร์\nเลฑฑุ\nเลณฑุ\nเลณะ\nเล็ด\nเลน\nเล็น\nเล่น\nเลนส์\nเล็บ\nเลบง\nเลปกร\nเลปน์\nเลเป\nเลเพ\nเล็ม\nเล่ม\nเลย\nเลว\nเลวง\nเลวูโลส\nเลศ\nเลษฏุ\nเล่ห์\nเล่ห์กระเท่ห์\nเลหลัง\nเลหะ\nเลอ\nเล่อ\nเลอะ\nเลอะเทอะ\nเละ\nเละเทะ\nเลา\nเล่า\nเล้า\nเลากัย\nเล้าโลม\nเลาะ\nเลิก\nเลิ่กลั่ก\nเลิง\nเลิ้ง\nเลินเล่อ\nเลิศ\nเลีย\nเลียง\nเลี่ยง\nเลี้ยง\nเลียงผา\nเลียงฝ้าย\nเลียงมัน\nเลียน\nเลี่ยน\nเลียนไฟ\nเลียบ\nเลี่ยม\nเลียว\nเลี้ยว\nเลือก\nเลือง\nเลื่อง\nเลือด\nเลือน\nเลื่อน\nเลื่อม\nเลื่อย\nเลื้อย\nเลื่อยล้า\nแล\nแล่\nแล้\nแลก\nแล็กเกอร์\nแล็กโทส\nแลง\nแล่ง\nแล้ง\nแลน\nแล่น\nแลนทานัม\nแลบ\nแล้ว\nและ\nโล่\nโล้\nโลก\nโลกเชษฐ์\nโลกธรรม\nโลกธาตุ\nโลกนาถ\nโลกบาล\nโลกย์\nโลกัย\nโลกวัชชะ\nโลกวิทู\nโลกัตถจริยา\nโลกันตร์\nโลกา\nโลกาธิบดี\nโลกาธิปไตย\nโลกานุวัตร\nโลกาภิวัตน์\nโลกามิส\nโลกายัต\nโลกาวินาศ\nโลกิยะ\nโลกีย์\nโลกียวัตร\nโลกียวิสัย\nโลกียสุข\nโลกุตระ\nโลกุตรธรรม\nโลกุตรภูมิ\nโลง\nโล่ง\nโล้ง\nโล่งโจ้ง\nโล่งโต้ง\nโล้งโต้ง\nโลจนะ\nโลณะ\nโลด\nโล่ติ๊น\nโลโต\nโลท\nโลน\nโล้น\nโลภ\nโลม\nโลมเล้า\nโลมะ\nโลมา\nโลลุป\nโลเล\nโลโล\nโลโล้\nโลหะ\nโลหกุมภี\nโลหัช\nโลหิต\nไล่\nไล้\nไลย\nไลลา\nไล่เลี่ย\nฦๅ\nฦๅชา\nฦๅสาย\nวก\nวง\nวงก์\nวงกต\nวงศ์\nวงศกร\nวงศา\nวงษ์\nวจนะ\nวจี\nวชิระ\nวชิรปาณี\nวชิรหัตถ์\nวชิราวุธ\nวฏะ\nวฏาการ\nวณิช\nวณิชชา\nวณิชย์\nวณิชยา\nวณิพก\nวดี\nวทนะ\nวทัญญุตา\nวทัญญู\nวธุกา\nวธู\nวน\nวนศาสตร์\nวนสณฑ์\nวนสัณฑ์\nวนอุทยาน\nวนัส\nวนัสบดี\nวนา\nวนาดร\nวนาดอน\nวนานต์\nวนาลัย\nวนาลี\nวนาวาส\nวนาศรม\nวนาสณฑ์\nวนาสัณฑ์\nวนิดา\nวนิพก\nวเนจร\nวโนทยาน\nวยัคฆ์\nวยากรณ์\nวรดนู\nวรทาน\nวรมหาวิหาร\nวรงค์\nวรณะ\nวรรค\nวรรคย์\nวรรช\nวรรชย์\nวรรณะ\nวรรณกรรม\nวรรณคดี\nวรรณยุกต์\nวรรณยุต\nวรรณศิลป์\nวรรณนา\nวรรณพฤติ\nวรรณึก\nวรรธกะ\nวรรธนะ\nวรรษ\nวรรษา\nวรวิหาร\nวรัญญู\nวรางคณา\nวรางคนา\nวราห์\nวราหะ\nวรุณ\nวโรดม\nวฤก\nวลัช\nวลัญช์\nวลัญชน์\nวลัย\nวลาหก\nวลี\nวศค\nวศะ\nวศิน\nวสนะ\nวสภะ\nวสละ\nวสวัดดี\nวสวัตตี\nวสะ\nวสันต์\nวสันตดิลก\nวสันตฤดู\nวสันตวิษุวัต\nวสา\nวสี\nวสุ\nวสุธา\nวสุนธรา\nวสุมดี\nวหะ\nวอ\nวอก\nวอกแวก\nว่องไว\nวอด\nวอน\nว่อน\nว็อบ\nวอมแวม\nวอลเลย์บอล\nวอแว\nวะ\nวัก\nวักกะ\nวัคคีย์\nวัคคุ\nวัคซีน\nวัง\nวังก์\nวังชา\nวังเวง\nวังศะ\nวังสะ\nวัจจะ\nวัจกุฎี\nวัจฉละ\nวัจน์\nวัช\nวัชชะ\nวัชพืช\nวัชฌ์\nวัชระ\nวัชรปาณี\nวัชรยาน\nวัชรอาสน์\nวัชราสน์\nวัชรินทร์\nวัชรี\nวัชเรนทร์\nวัฏ\nวัฏฏะ\nวัฏจักร\nวัฏทุกข์\nวัฏสงสาร\nวัฏกะ\nวัฏฏิ\nวัฒกะ\nวัฒกี\nวัฒนธรรม\nวัฒนะ\nวัฒนา\nวัณ\nวัณโรค\nวัณฏ์\nวัณณะ\nวัณนา\nวัด\nวัต\nวัตต์\nวัตตา\nวัตถ์\nวัตถาภรณ์\nวัตถาลังการ\nวัตถุ\nวัตนะ\nวัตร\nวัตสดร\nวัตสะ\nวัติ\nวัทน์\nวัน\nวันต์\nวันทนา\nวันทนาการ\nวันทนีย์\nวันทยหัตถ์\nวันทยาวุธ\nวันทา\nวันทิ\nวับ\nวับวาบ\nวับวาม\nวับแวบ\nวับแวม\nวัปปะ\nวัมมิกะ\nวัย\nวัลก์\nวัลคุ\nวัลย์\nวัลลภ\nวัลลี\nวัว\nวัสสะ\nวัสโสทก\nวัสดุ\nวัสตร์\nวัสน์\nวัสนะ\nวัสสานะ\nวัสสานฤดู\nวา\nว่า\nว้า\nว้าเหว่\nวาก\nว้าก\nวากยสัมพันธ์\nวากยะ\nวาง\nว่าง\nว้าง\nวาจก\nวาจา\nวาจาไปยะ\nวาจาล\nวาชเปยะ\nวาณิช\nวาณิชกะ\nวาณิชย์\nวาณี\nวาด\nวาต\nวาตะ\nวาตภัย\nวาท\nวาทศาสตร์\nวาทศิลป์\nวาทกะ\nวาทนะ\nวาทย์\nวาทยกร\nวาทิต\nวาทิน\nวาที\nวาน\nวานซืน\nว่าน\nวานร\nวานรินทร์\nวาเนเดียม\nวาบ\nวาปี\nวาม\nวามน\nวามนาวตาร\nวามะ\nวาย\nว่าย\nว้าย\nวายะ\nวาโย\nวายามะ\nวายุ\nวายุกูล\nวาร\nวาระ\nวารสาร\nวารสารศาสตร์\nวาริ\nวารี\nวาริช\nวารีช\nวาริท\nวาริธร\nวารุณ\nวารุณี\nวาล\nวาลวีชนี\nวาล์ว\nวาลิกา\nวาลุกา\nวาว\nว่าว\nว้าว่อน\nว้าวุ่น\nวาสนะ\nวาสนา\nวาสพ\nวาสะ\nวาสิน\nวาสี\nวาสุกรี\nวาสุกี\nวาสุเทพ\nวาหนะ\nวาหะ\nวาหินี\nวาฬ\nวิกขัมภ์\nวิกขัมภนะ\nวิกเขป\nวิกรม\nวิกรัย\nวิกรานต์\nวิกฤต\nวิกฤติ\nวิกล\nวิกสิต\nวิกัต\nวิกัติ\nวิกัติการก\nวิกัป\nวิกัย\nวิการ\nวิกาล\nวิกาลโภชน์\nวิคหะ\nวิเคราะห์\nวิฆเนศ\nวิฆเนศวร\nวิฆาต\nวิง\nวิ่ง\nวิ่งเปี้ยว\nวิงวอน\nวิจฉิกะ\nวิจล\nวิจักขณ์\nวิจักษ์\nวิจักษณ์\nวิจัย\nวิจาร\nวิจารณ์\nวิจารณญาณ\nวิจิ\nวิจิกิจฉา\nวิจิต\nวิจิตร\nวิจิน\nวิจุณ\nวิจุรณ\nวิชชา\nวิชชุ\nวิชชุดา\nวิชชุตา\nวิชชุลดา\nวิชญะ\nวิชน\nวิชนี\nวิชย\nวิชัย\nวิชา\nวิชานนะ\nวิชิต\nวิเชียร\nวิญญัตติ\nวิญญาณ\nวิญญาณกทรัพย์\nวิญญู\nวิฑูรย์\nวิด\nวิตก\nวิตถาร\nวิตามิน\nวิถี\nวิทธะ\nวิทยฐานะ\nวิทยา\nวิทยาคม\nวิทยาคาร\nวิทยาลัย\nวิทยุ\nวิทยุต\nวิทวัส\nวิทัตถิ\nวิทัศน์\nวิทารณ์\nวิทิต\nวิทู\nวิทูร\nวิเทศ\nวิเทโศบาย\nวิธ\nวิธวา\nวิธาน\nวิธี\nวิธุระ\nวิธู\nวิธูปนะ\nวิ่น\nวินตกะ\nวินัย\nวินาที\nวินายก\nวินาศ\nวินิจ\nวินิจฉัย\nวินิต\nวินิบาต\nวินิปาติก\nวิเนต\nวิบัติ\nวิบาก\nวิบุล\nวิบุลย์\nวิบูล\nวิบูลย์\nวิปการ\nวิปฏิสาร\nวิปโยค\nวิประโยค\nวิปริต\nวิปลาส\nวิปวาส\nวิปักษ์\nวิปัสสก\nวิปัสสนา\nวิปัสสนายานิก\nวิพากษ์\nวิพิธทัศนา\nวิพุธ\nวิภว\nวิภวตัณหา\nวิภังค์\nวิภัช\nวิภัตติ\nวิภา\nวิภาค\nวิภาช\nวิภาดา\nวิภาวี\nวิภาษ\nวิภาส\nวิภู\nวิภูษณะ\nวิภูษา\nวิภูษิต\nวิมน\nวิมล\nวิมลัก\nวิมังสา\nวิมัติ\nวิมาน\nวิมุข\nวิมุต\nวิมุตติ\nวิเมลือง\nวิโมกข์\nวิโยค\nวิระ\nวิรงรอง\nวิรังรอง\nวิรัช\nวิรัต\nวิรัติ\nวิราคะ\nวิราม\nวิริยภาพ\nวิริยะ\nวิรุธ\nวิรุฬห์\nวิรุฬหก\nวิรูป\nวิรูปักษ์\nวิเรนทร์\nวิโรจ\nวิโรจน์\nวิโรฒ\nวิโรธ\nวิลันดา\nวิลัย\nวิลาด\nวิลาศ\nวิลาป\nวิลาวัณย์\nวิลาส\nวิลาสินี\nวิลิปดา\nวิลิศมาหรา\nวิเลป\nวิเลปนะ\nวิโลกนะ\nวิโลม\nวิไล\nวิไลวรรณ\nวิวรณ์\nวิวรรธน์\nวิวัฏ\nวิวัฒน์\nวิวัฒนาการ\nวิวัน\nวิวาท\nวิวาห์\nวิวาหมงคล\nวิวาหะ\nวิวิต\nวิวิธ\nวิเวก\nวิศรุต\nวิศว\nวิศวกร\nวิศวกรรม\nวิศวกรรมศาสตร์\nวิศัลย์\nวิศาขบูชา\nวิศาขา\nวิศาล\nวิศิษฏ์\nวิศุทธ์\nวิศุทธิ์\nวิเศษ\nวิเศษณ์\nวิษณุ\nวิษณุกรรม\nวิษธร\nวิษัย\nวิษาณ\nวิษุวัต\nวิสกี้\nวิสรรชนีย์\nวิสฤต\nวิสสุกรรม\nวิสัชนา\nวิสัญญี\nวิสัย\nวิสัยทัศน์\nวิสาขบูชา\nวิสาขะ\nวิสาขา\nวิสามัญ\nวิสามานยนาม\nวิสาร\nวิสารทะ\nวิสาล\nวิสาสะ\nวิสาหกิจ\nวิสิฐ\nวิสุงคามสีมา\nวิสุทธ์\nวิสุทธิ์\nวิสูตร\nวิเสท\nวิหค\nวิหลั่น\nวิหาร\nวิหิงสา\nวิเหสา\nวิฬาร\nวิฬาร์\nวี\nวีจิ\nวีชนี\nวีณา\nวี้ด\nวีรกรรม\nวีรชน\nวีรบุรุษ\nวีรสตรี\nวี่วัน\nวี่แวว\nวีสะ\nวุ้ง\nวุฐิ\nวุฒ\nวุฒิ\nวุด\nวุ่น\nวุ้น\nวุบ\nวุ้ย\nวุลแฟรม\nวู้\nวูดวาด\nวูบ\nวู่วาม\nเว้\nเวค\nเวคิน\nเวคี\nเวจ\nเวช\nเวชยันต์\nเวฐน์\nเวณิ\nเวณิก\nเวณุ\nเวตน์\nเวตร\nเวตาล\nเวท\nเวทคู\nเวทนา\nเวทย์\nเวทัลละ\nเวทางค์\nเวทางคศาสตร์\nเวทานต์\nเวทานตะ\nเวทิ\nเวที\nเวธะ\nเวน\nเว้น\nเวนไตย\nเวไนย\nเวมัต\nเว้ย\nเวยยากรณะ\nเวร\nเวรมณี\nเวรี\nเวโรจน์\nเวลา\nเวเลนซี\nเวศม์\nเวศย์\nเวศยา\nเวสน์\nเวสภู\nเวสม์\nเวสวัณ\nเวสสะ\nเวสสันดร\nเวสสุกรรม\nเวสสุวัณ\nเวสารัช\nเวสิยา\nเวหน\nเวหะ\nเวหา\nเวหาส\nเวฬุ\nเวฬุริยะ\nเว่อ\nเว้า\nเวิก\nเวิ้ง\nเวี่ย\nเวียง\nเวียด\nเวียดนาม\nเวียน\nเวียร\nเวี่ยว\nแว้\nแวง\nแว้ง\nแวด\nแว้ด\nแวน\nแว่น\nแวนดา\nแวบ\nแว็บ\nแวม\nแว็ม\nแวว\nแว่ว\nแวะ\nโว\nโว่\nโวการ\nโว่ง\nโวทาน\nโวย\nโว้ย\nโว้เว้\nโวหาร\nไว\nไว้\nไวกูณฐ์\nไวฑูรย์\nไวทย์\nไวน์\nไวพจน์\nไวยากรณ์\nไวยาวัจกร\nไวยาวัจมัย\nไวรัส\nไววรรณ\nไวษณพ\nไวโอลิน\nศก\nศกุน\nศกุนต์\nศกุนิ\nศกุนี\nศจี\nศตะ\nศตภิษัช\nศตวรรษ\nศตพรรษ\nศตกะ\nศนิ\nศพ\nศมนะ\nศมะ\nศยาม\nศยามล\nศร\nศรายุธ\nศราวรณ์\nศรรกรา\nศรวณะ\nศรวณีย์\nศรวิษฐา\nศรัณย์\nศรัณยู\nศรัท\nศรัทธา\nศรัย\nศราทธ์\nศราทธพรต\nศราพก\nศราวก\nศราวณะ\nศรี\nศรีตรัง\nศรุติ\nศฤคาล\nศฤงค์\nศฤงคาร\nศฤงคาริน\nศฤงคารี\nศลิษฏ์\nศลิษา\nศวะ\nศวัส\nศวา\nศวาน\nศศะ\nศศธร\nศศพินทุ์\nศศลักษณ์\nศศิ\nศศิน\nศศี\nศศิขัณฑ์\nศศิธร\nศศิมณฑล\nศศิวิมล\nศอ\nศอก\nศักดา\nศักดิ\nศักดิ์\nศักดินา\nศักติ\nศักย\nศักยภาพ\nศักย์\nศักยะ\nศักร\nศักรินทร์\nศักเรนทร์\nศักราช\nศังกร\nศัตรู\nศันสนะ\nศันสนีย์\nศัพท์\nศัยยา\nศัล\nศัลย์\nศัลยกรรม\nศัลยแพทย์\nศัลยศาสตร์\nศัสดร\nศัสตร\nศัสตรศาสตร์\nศัสตรา\nศัสตราวุธ\nศากตะ\nศากย\nศากยะ\nศากยพุทธ\nศากยมุนี\nศาฎก\nศาณ\nศานต์\nศานติ\nศาป\nศารท\nศารทูล\nศาริกา\nศาล\nศาลา\nศาศวัต\nศาสดา\nศาสตร์\nศาสตรา\nศาสตราจารย์\nศาสนา\nศาสนกิจ\nศาสนจักร\nศาสนธรรม\nศาสนบุคคล\nศาสนพิธี\nศาสนวัตถุ\nศาสนศาสตร์\nศาสนสถาน\nศาสนสมบัติ\nศาสนิกชน\nศาสนีย์\nศาสนูปถัมภก\nศาสน์\nศิกษก\nศิการ\nศิขร\nศิขริน\nศิขรี\nศิขัณฑ์\nศิคาล\nศิงขร\nศิงขริน\nศิตะ\nศิถี\nศิพิระ\nศิระ\nศิรประภา\nศิราภรณ์\nศิโรรัตน์\nศิโรเวฐน์\nศิรา\nศิรามพุช\nศิโรราบ\nศิลป\nศิลป์\nศิลปะ\nศิลปกร\nศิลปกรรม\nศิลปกิจ\nศิลปวัตถุ\nศิลปวิทยา\nศิลปศาสตร์\nศิลปศึกษา\nศิลปหัตถกรรม\nศิลปิน\nศิลปี\nศิลา\nศิวะ\nศิวโมกข์\nศิวลึงค์\nศิวเวท\nศิวาลัย\nศิศีระ\nศิษฎิ\nศิษฏ์\nศิษย์\nศิษยานุศิษย์\nศีขร\nศีต\nศีตกาล\nศีรษะ\nศีล\nศึก\nศึกษา\nศึกษาธิการ\nศึกษานิเทศก์\nศุกร์\nศุกรวรรณ\nศุกรวาร\nศุกระ\nศุกล\nศุกลปักษ์\nศุจิ\nศุทธะ\nศุทธิ\nศุนะ\nศุนิ\nศุภกร\nศุภเคราะห์\nศุภนิมิต\nศุภมัสดุ\nศุภมาตรา\nศุภมาส\nศุภอักษร\nศุภางค์\nศูกร\nศุลกากร\nศุลการักษ์\nศุลี\nศุษิร\nศูทร\nศูนย์\nศูนยวาท\nศูละ\nศูลิน\nเศรณี\nเศรษฐ\nเศรษฐ์\nเศรษฐกิจ\nเศรษฐศาสตร์\nเศรษฐี\nเศร้า\nเศลษ\nเศวต\nเศวตร\nเศวตัมพร\nเศษ\nเศาจ\nเศาร์\nเศารยะ\nเศิก\nเศียร\nโศก\nโศกา\nโศกาดูร\nโศกาลัย\nโศกี\nโศจิ\nโศธนะ\nโศภน\nโศภะ\nโศภา\nโศภิต\nโศภิน\nโศภิษฐ์\nโศภี\nโศรดา\nโศรตร\nโศลก\nไศล\nไศวะ\nษมา\nษัฏ\nษัฑ\nษัณ\nษัษ\nษัษฐะ\nษัษฐี\nโษฑศัน\nสก\nสกวาที\nสกฏะ\nสกทาคามิผล\nสกิทาคามิผล\nสกทาคามิมรรค\nสกิทาคามิมรรค\nสกทาคามี\nสกิทาคามี\nสกนธ์\nสกปรก\nสกรณีย์\nสกรรจ์\nสกรรมกริยา\nสกล\nสกลมหาสังฆปริณายก\nสกัด\nสกา\nสกาว\nสกี\nสกุณ\nสกุณา\nสกุณี\nสกุน\nสกุนต์\nสกุล\nสเกต\nสแกนเดียม\nสขะ\nสง\nส่ง\nสงกร\nสงกรานต์\nสงกา\nสงค์\nสงคร\nสงคราม\nสงเคราะห์\nสงฆ์\nสงบ\nสงวน\nส่งสการ\nสงสัย\nสงสาร\nสงสารวัฏ\nสงัด\nสง่า\nสฐะ\nสณฑ์\nสด\nสดมภ์\nสดับ\nสดับปกรณ์\nสดำ\nสดุดี\nสตะ\nสตน\nสตภิสชะ\nสตรอนเชียม\nสตริกนิน\nสตรี\nสตัฟฟ์\nสตัมภ์\nสตางค์\nสติ\nสติปัฏฐาน\nสตี\nสตู\nสตูป\nสเต๊ก\nสถบดี\nสถล\nสถวีระ\nสถาน\nสถานะ\nสถานี\nสถาบัน\nสถาปนา\nสถาปนิก\nสถาปัตยกรรม\nสถาปัตยกรรมศาสตร์\nสถาปัตยเรขา\nสถาปัตยเวท\nสถาพร\nสถาวร\nสถิต\nสถิตยศาสตร์\nสถิติ\nสถิร\nสถีรวาท\nสถุล\nสถูป\nสทิง\nสทึง\nสทุม\nสธนะ\nสาธุสะ\nสน\nส้น\nสนทนา\nสนทรรศ\nสนทรรศน์\nสนเทศ\nสนเท่ห์\nสนธยา\nสนธิ\nสนน\nสนม\nสนวน\nสนอง\nสนอบ\nสนอม\nสนะ\nสนัด\nสนั่น\nสนับ\nสนับทึบ\nสนับสนุน\nสนาน\nสนาม\nสนายุ\nสนิกะ\nสนิท\nสนิธ\nสนิม\nสนุก\nสนุกเกอร์\nสนุข\nสนุต\nสนุ่น\nสบ\nสบง\nสบถ\nสบัน\nสบาย\nสบู่\nสไบ\nสปริง\nสปอร์\nสปาเกตตี\nสเปกตรัม\nสเปกโทรสโกป\nสไปริลลัม\nสพาบ\nสภา\nสภาพ\nสภาวการณ์\nสภาวะ\nสม\nสมการ\nสมจารี\nสมดุล\nสมมูล\nส้ม\nสมญา\nสมณะ\nสมณบริขาร\nสมณศักดิ์\nสมณสารูป\nสมเด็จ\nสมถะ\nสมถยานิก\nสมถวิปัสสนา\nสมนาคุณ\nสมบัติ\nสมบุกสมบัน\nสมบูรณ์\nสมบูรณาญาสิทธิราชย์\nสมประดี\nสมปฤดี\nสมปฤๅดี\nส้มป่อย\nสมปัก\nสมผุส\nสมพง\nสมพงศ์\nสมพล\nสมพัตสร\nสมพาส\nสมเพช\nสมโพธน์\nสมโพธิ\nสมภพ\nสมภาร\nสมโภค\nสมโภช\nสมมต\nสมมติ\nสมมุติ\nสมมาตร\nส้มมือ\nสมโมท\nสมโยค\nสมร\nสมรด\nสมรรถ\nสมรรถนะ\nสมรรถภาพ\nสมรส\nสมฤดี\nสมฤติ\nสมวายะ\nสมเสร็จ\nสมอ\nสมอง\nสมะ\nสมัคร\nสมังคี\nสมัช\nสมัชชา\nสมัญญา\nสมัต\nสมัน\nสมันต์\nสมัย\nสมา\nสมาคม\nสมาจาร\nสมาชิก\nสมาทาน\nสมาธิ\nสมาน\nสมานฉันท์\nสมาบัติ\nสมาพันธรัฐ\nสมาส\nสม่ำเสมอ\nสมิง\nสมิต\nสมิติ\nสมิทธ์\nสมิทธิ\nสมี\nสมุก\nสมุจจัย\nสมุจเฉท\nสมุฏฐาน\nสมุด\nสมุทร\nสมุทรโคดม\nสมุทัย\nสมุน\nสมุนไพร\nสมุลแว้ง\nสมุห\nสมุห์\nสมุหกลาโหม\nสมุหเทศาภิบาล\nสมุหนาม\nสมุหนายก\nสโมธาน\nสโมสร\nสยด\nสยนะ\nสยบ\nสยมพร\nสยมภู\nสยอง\nสยอน\nสยัมวรา\nสยาม\nสยามานุสติ\nสยามินทร์\nสยาย\nสยิว\nสยิ้ว\nสยุมพร\nสยุมภู\nสร\nสรง\nสร่ง\nสรณะ\nสรณคมน์\nสรณาคมน์\nสรณตรัย\nสรตะ\nสรทะ\nสรนุก\nสรเนาะ\nสรไน\nสรเพชญ\nสรภะ\nสรภัญญะ\nสรภู\nสรม\nสรร\nสรรค์\nสรรพ\nสรรพคุณ\nสรรพนาม\nสรรพสามิต\nสรรพัชญ\nสรรพากร\nสรรพางค์\nสรรเพชญ\nสรรเพชุดา\nสรรเสริญ\nสรลอน\nสรเลข\nสรวง\nสรวม\nสรวล\nสรเสริญ\nสร้อย\nสระ\nสระกอ\nสระท้อน\nสระพรั่ง\nสระอาด\nสรั่ง\nสรัสวดี\nสร่าง\nสร้าง\nสราญ\nสรี้\nสรีระ\nสรีรกิจ\nสรีรธาตุ\nสรีรวิทยา\nสรีรศาสตร์\nสรีรังคาร\nสรีรางคาร\nสรุป\nสโรช\nสโรชะ\nสฤก\nสฤต\nสฤษฎิ\nสฤษฎี\nสฤษฏ์\nสฤษดิ์\nสลด\nสลบ\nสลวน\nสลวย\nสลอด\nสลอน\nสลอย\nสละ\nสลัก\nสลัด\nสลัดได\nสลับ\nสลัว\nสลา\nสลาก\nสลาง\nสล้าง\nสลาด\nสลาตัน\nสลาบ\nสลาย\nสลิด\nสลิล\nสลึก\nสลึง\nสลุต\nสลุบ\nสลุมพร\nสแลง\nสวการย์\nสวภาพ\nสวราชย์\nสวก\nส้วง\nสวด\nสวน\nสวนะ\nสวนาการ\nส่วน\nสวนิต\nสวบ\nสวม\nส้วม\nสวย\nส่วย\nส้วย\nสวยม\nสวรรค\nสวรรค์\nสวรรคต\nสวรรคาลัย\nสวรรยา\nสวระ\nสวะ\nสวัสดิ\nสวัสดิ์\nสวัสดิการ\nสวัสดิภาพ\nสวัสดิมงคล\nสวัสดี\nสวัสติ\nสวาตี\nสวัสติกะ\nสวา\nสวาปาม\nสวาคตะ\nสวาง\nสว่าง\nสวาด\nสวาดิ\nสวาท\nสว่าน\nสว้าน\nสวาบ\nสวามิ\nสวามี\nสวามินี\nสวาย\nสวาสดิ์\nสวาหะ\nสวิง\nสวิญญาณกทรัพย์\nสวิตช์\nสสาร\nสสุระ\nสสุรี\nสหกรณ์\nสหการ\nสหจร\nสหชาต\nสหชาติ\nสหธรรม\nสหธรรมิก\nสหประชาชาติ\nสหพันธ์\nสหพันธรัฐ\nสหภาพ\nสหศึกษา\nสหัช\nสหัมบดี\nสหัส\nสหัสสะ\nสหัสธารา\nสหัสนัยน์\nสหัสเนตร\nสหัสรังสี\nสหัสา\nสหาย\nสอ\nส่อ\nสอง\nส่อง\nส้อง\nสอด\nสอน\nส่อน\nสอบ\nสอพลอ\nส้อม\nสอย\nสะ\nสะกด\nสะกอ\nสะกาง\nสะการะ\nสะกิด\nสะกิดสะเกา\nสะเก็ด\nสะแก\nสะคร้อ\nสะคราญ\nสะค้าน\nสะเงาะสะแงะ\nสะดม\nสะดวก\nสะดิ้ง\nสะดึง\nสะดือ\nสะดุ้ง\nสะดุด\nสะเด็ด\nสะเดา\nสะเดาะ\nสะตอ\nสะตาหมัน\nสะตึ\nสะตือ\nสะตุ\nสะเต๊ะ\nสะโตก\nสะทก\nสะท้อน\nสะท้าน\nสะทึก\nสะเทิน\nสะเทิ้น\nสะเทือน\nสะเทื้อน\nสะบะ\nสะบัก\nสะบักสะบอม\nสะบัด\nสะบัดสะบิ้ง\nสะบั้น\nสะบันงา\nสะบ้า\nสะบู\nสะแบง\nสะเปะสะปะ\nสะพรั่ง\nสะพรึงกลัว\nสะพรึบ\nสะพรึ่บ\nสะพัก\nสะพัง\nสะพัด\nสะพั้น\nสะพาน\nสะพาย\nสะเพร่า\nสะโพก\nสะเภา\nสะใภ้\nสะโมง\nสะระตะ\nสะระแหน่\nสะลาง\nสะลาบ\nสะลึมสะลือ\nสะวี้ดสะว้าด\nสะสม\nสะสวย\nสะสาง\nสะเหล่อ\nสะอาง\nสะอาด\nสะอ้าน\nสะอิ้ง\nสะอิดสะเอียน\nสะอึก\nสะอื้น\nสะเอ้ง\nสะเอว\nสะเออะ\nสะโอดสะอง\nสะไอ\nสัก\nสักกะ\nสักยะ\nสักกัจจะ\nสักกายทิฐิ\nสักการ\nสักการะ\nสักขี\nสักวา\nสักหลาด\nสัค\nสัคคะ\nสั่ง\nสังกร\nสังกรณี\nสังกรประโยค\nสังกะตัง\nสังกะวัง\nสังกะวาด\nสังกะสี\nสังกัด\nสังกัปปะ\nสังกา\nสังการ\nสังกาศ\nสังกิเลส\nสังเกต\nสังข์\nสังขกร\nสังขตธรรม\nสังขตะ\nสังขยา\nสังขลิก\nสังขลิกา\nสังขาร\nสังขารา\nสังเขป\nสังค์\nสังคญาติ\nสังคม\nสังคหะ\nสังคัง\nสังคายนา\nสังคายนาย\nสังคีต\nสังคีติ\nสังเค็ด\nสังเคราะห์\nสังฆกรรม\nสังฆการี\nสังฆเถระ\nสังฆทาน\nสังฆนายก\nสังฆปาโมกข์\nสังฆภัต\nสังฆเภท\nสังฆมณฑล\nสังฆมนตรี\nสังฆราช\nสังฆสภา\nสังฆาณัติ\nสังฆาฏิ\nสังฆาทิเสส\nสังฆาธิการ\nสังฆานุสติ\nสังฆาวาส\nสังยุตนิกาย\nสังโยค\nสังโยชน์\nสังวร\nสังวัจฉระ\nสังวัธยาย\nสังวาล\nสังวาส\nสังเวคะ\nสังเวช\nสังเวชนียสถาน\nสังเวย\nสังเวียน\nสังสกฤต\nสังสการ\nสังสนทนา\nสั่งสนทนา\nสังสรรค์\nสังสารวัฏ\nสังสิทธิ\nสังสุทธ์\nสังสุทธิ\nสังหร\nสังหรณ์\nสังหาร\nสังหาริมทรัพย์\nสังหาริมะ\nสังหิต\nสัจ\nสัจกิริยา\nสัจจะ\nสัจญาณ\nสัจธรรม\nสัจนิยม\nสัจพจน์\nสัชฌะ\nสัชฌุ\nสัญจร\nสัญเจตนา\nสัญชาตญาณ\nสัญชาติ\nสัญฌา\nสัญญา\nสัญญาณ\nสัญญี\nสัญโญชน์\nสัญนิยม\nสัญประกาศ\nสัญลักษณ์\nสัฐิ\nสัณฐาน\nสัณฐิติ\nสัณฑ์\nสัณห์\nสัด\nสัดจอง\nสัต\nสัตตะ\nสัตตาหกรณียะ\nสัตตาหกาลิก\nสัตมวาร\nสัตสดก\nสัตตบงกช\nสัตตบรรณ\nสัตตบุษย์\nสัตตู\nสัตถันดร\nสัตถา\nสัตถิ\nสัตถุ\nสัตถุศาสนา\nสัตบรรณ\nสัตย์\nสัตยพรต\nสัตยวาที\nสัตยาเคราะห์\nสัตยาธิษฐาน\nสัตยาบัน\nสัตว์\nสัตวชาติ\nสัตวบาล\nสัตวแพทย์\nสัตววิทยา\nสัตวา\nสัทธรรม\nสัทธา\nสัทธาจริต\nสัทธาธิกะ\nสัทธินทรีย์\nสัทธิงวิหาริก\nสัทธิวิหาริก\nสัทวิทยา\nสัทศาสตร์\nสัทอักษร\nสัน\nสั่น\nสั้น\nสันดาน\nสันดาป\nสันโดษ\nสันต์\nสันตติ\nสันตะปาปา\nสันตะวา\nสันติ\nสันตุฏฐี\nสันถวไมตรี\nสันถวะ\nสันถัต\nสันถาร\nสันทนะ\nสันทะ\nสันทัด\nสันทัสนะ\nสันทาน\nสันทิฐิก\nสันทิส\nสันเทหะ\nสันธาน\nสันนิธิ\nสันนิบาต\nสันนิวาส\nสันนิษฐาน\nสันสกฤต\nสับ\nสับปลับ\nสับปลี้\nสับปะรด\nสัปคับ\nสัปดาห์\nสัปดาหะ\nสัปดน\nสัปตศก\nสัปทน\nสัปปะ\nสัปปิ\nสัปปุริส\nสัปปุรุษ\nสัประยุทธ์\nสัปหงก\nสัปเหร่อ\nสัพ\nสัพพะ\nสัพพัญญู\nสัพเพเหระ\nสัพยอก\nสัมบูรณ์\nสัมปชัญญะ\nสัมปทา\nสัมปทาน\nสัมปยุต\nสัมปโยค\nสัมประสิทธิ์\nสัมประหาร\nสัมปรายภพ\nสัมปรายิกภพ\nสัมปัตติ\nสัมผัปลาป\nสัมผัปลาปะ\nสัมผัส\nสัมพล\nสัมพหุลา\nสัมพัจฉรฉินท์\nสัมพัตสร\nสัมพัทธ์\nสัมพันธ์\nสัมพันธน์\nสัมพันธภาพ\nสัมพันธมิตร\nสัมพันธไมตรี\nสัมพาหะ\nสัมพุทธ\nสัมพุทธะ\nสัมโพธิ\nสัมภวะ\nสัมภเวสี\nสัมภัต\nสัมภัตตะ\nสัมภาระ\nสัมภาษณ์\nสัมโภคกาย\nสัมมนา\nสัมมัปธาน\nสัมมา\nสัมโมทนียกถา\nสัมฤทธิ\nสัมฤทธิ์\nสัมฤทธิศก\nสัยน์\nสัลเลข\nสัสดี\nสัสตทิฐิ\nสัสสะ\nสัสสุ\nสัสสู\nสา\nส่า\nสาก\nสากรรจ์\nสากล\nสากัจฉา\nสากัลย์\nสากิยะ\nสาเก\nสาขา\nสาคร\nสาคเรศ\nสาคู\nสาง\nส้าง\nสาชล\nสาฎก\nสาฏิก\nสาณี\nสาด\nสาไถย\nสาทร\nสาทิส\nสาทุ\nสาโท\nสาธก\nสาธยะ\nสาธยาย\nสาธารณะ\nสาธารณชน\nสาธารณประโยชน์\nสาธารณภัย\nสาธารณรัฐ\nสาธารณสถาน\nสาธารณสมบัติ\nสาธารณสุข\nสาธารณูปการ\nสาธารณูปโภค\nสาธารณ์\nสาธิต\nสาธุ\nสาน\nส่าน\nสานุ\nสานู\nสานุศิษย์\nสาบ\nสาบสูญ\nสาบาน\nสาป\nสาปไตย\nสาม\nสามชุก\nสามเณร\nสามเณรี\nสามนต์\nสามนตราช\nสามยทรัพย์\nสามล\nสามหาว\nสามะ\nสามัคคี\nสามัญ\nสามัตถิยะ\nสามานย์\nสามานยนาม\nสามารถ\nสามิต\nสามินี\nสามิภักดิ์\nสามี\nสามีจิกรรม\nสาย\nส่าย\nส้าย\nสายชู\nสายัณห์\nสายาห์\nสาร\nสารคดี\nสารธรรม\nสารนิเทศ\nสารบบ\nสารบรรณ\nสารบัญ\nสารบาญ\nสารบาญชี\nสารประโยชน์\nสารสนเทศ\nสารทุกข์\nสารถี\nสารท\nสารพัด\nสารพัน\nสารพางค์\nสารภาพ\nสารภี\nสารวัตร\nสาระ\nสาระแน\nสาระพา\nสาระยำ\nสาระวารี\nสาระสะมา\nสารัตถประโยชน์\nสารัตถศึกษา\nสารัตถะ\nสารัทธ์\nสารัมภ์\nสาราณียกร\nสาราณียธรรม\nสาราณียะ\nสารานุกรม\nสารีริกธาตุ\nสารูป\nสาโรช\nสาละ\nสาละวน\nสาลิ\nสาลิกา\nสาลินี\nสาลี\nสาลี่\nสาลู\nสาโลหิต\nสาว\nสาวก\nสาวิกา\nสาวิตร\nสาวิตรี\nสาสน\nสาสน์\nสาส์น\nสาสนา\nสาสม\nสาหร่าย\nสาหรี\nส่าหรี\nสาหัส\nสาเหตุ\nสาแหรก\nสำ\nสำส่อน\nส่ำ\nสำคัญ\nสำซ่าง\nสำแดง\nสำทับ\nสำนวน\nสำนอง\nสำนัก\nสำนาน\nสำนึก\nสำนึง\nสำเนา\nสำเนียง\nสำบัด\nสำปะลอ\nสำปะหลัง\nสำปั้น\nสำปันนี\nสำเภา\nสำมะงา\nสำมะโน\nสำมะลอ\nสำมะเลเทเมา\nสำมะหา\nสำรด\nสำรวจ\nสำรวม\nสำรวย\nสำรวล\nสำรอก\nสำรอง\nสำรับ\nสำราก\nสำราญ\nสำริด\nสำเร็จ\nสำเรา\nสำเริง\nสำโรง\nสำลัก\nสำลาน\nสำลี\nสำแลง\nสำหรวด\nสำหรับ\nสำหา\nสำเหนียก\nสำเหร่\nสำออย\nสำอาง\nสิ\nสิกข์\nสิข\nสิกขมานา\nสิกขา\nสิขร\nสิขรี\nสิขเรศ\nสิขา\nสิขานล\nสิขี\nสิคาล\nสิง\nสิ่ง\nสิงขร\nสิงค์\nสิงคลิ้ง\nสิงคลี\nสิงคาร\nสิงคาล\nสิงคี\nสิงโต\nสิงห์\nสิงหนาท\nสิงหบัญชร\nสิงหรา\nสิงหราช\nสิงหาคม\nสิงหาสน์\nสิงหล\nสิญจน์\nสิตะ\nสิตางศุ์\nสิถิล\nสิทธ์\nสิทธัตถะ\nสิทธา\nสิทธาจารย์\nสิทธารถ\nสิทธิ\nสิทธิ์\nสิทธิการิยะ\nสิธยะ\nสิน\nสิ้น\nสินเทา\nสินธพ\nสินธุ\nสินธุ์\nสินธุระ\nสินธู\nสินเธาว์\nสินาด\nสินิทธ์\nสินี\nสิเนรุ\nสิเนหก\nสิเนหะ\nสิเนหา\nสิเน่หา\nสิบ\nสิปปะ\nสิมพลี\nสิระ\nสิโรดม\nสิโรตม์\nสิริ\nสิรี\nสิลา\nสิว\nสิ่ว\nสิวะ\nสิวาลัย\nสิวิกา\nสี\nสี่\nสี้\nสีกา\nสีกุน\nสีข้าง\nสีด\nสีดอ\nสีดา\nสีตลรัศมี\nสีตโลทก\nสีโตทก\nสีทันดร\nสีมันต์\nสีมา\nสีละมัน\nสีวิกา\nสีสอ\nสีสะ\nสีสา\nสีสุก\nสีเสียด\nสีห์\nสีหนาท\nสีหบัญชร\nสีหราช\nสีหไสยา\nสีหไสยาสน์\nสีหะ\nสึก\nสึง\nสืบ\nสื่อ\nสุ\nสุก\nสุกข์\nสุกร\nสุกรม\nสุกำศพ\nสุกียากี้\nสุข\nสุขา\nสุขาภิบาล\nสุขารมณ์\nสุขาวดี\nสุขิน\nสุขี\nสุขุม\nสุขุมาล\nสุโข\nสุคต\nสุคติ\nสุคนธ\nสุคนธ์\nสุคนธชาติ\nสุคนธรส\nสุคันธ์\nสุคันธรส\nสุงกะ\nสุงกากร\nสุงสิง\nสุงสุมาร\nสุจริต\nสุจหนี่\nสุจิ\nสุจิต\nสุจิตร\nสุชน\nสุชัมบดี\nสุชา\nสุชาดา\nสุญ\nสุญญากาศ\nสุญตา\nสุญนิยม\nสุณ\nสุณิสา\nสุด\nสุดา\nสุต\nสุตตนิบาต\nสุตตะ\nสุตตันตปิฎก\nสุตตันตะ\nสุติ\nสุทธ\nสุทธ์\nสุทธาวาส\nสุทธิ\nสุทรรศน์\nสุทัศน์\nสุธา\nสุธาโภชน์\nสุธารส\nสุธาสินี\nสุธาสี\nสุธี\nสุนทร\nสุนทรี\nสุนทรียภาพ\nสุนทรียศาสตร์\nสุนทรียะ\nสุนัข\nสุนันท์\nสุโนก\nสุบดี\nสุบรรณ\nสุบิน\nสุปรีดิ์\nสุปรีย์\nสุปาณี\nสุพพัต\nสุพรรณ\nสุพรรณบัฏ\nสุพรรณภาชน์\nสุพรรณราช\nสุพรรณศรี\nสุพรรณถัน\nสุพรรณิการ์\nสุภร\nสุภัค\nสุภา\nสุภาพ\nสุภาษิต\nสุม\nสุ่ม\nสุมทุม\nสุมน\nสุมนะ\nสุมนัส\nสุมนา\nสุ้มเสียง\nสุมะ\nสุมาลี\nสุเมธ\nสุเมรุ\nสุรคต\nสุรเชษฐ์\nสุรบดี\nสุรภาพ\nสุรโลก\nสุรสีหนาท\nสุรเสียง\nสุรงค์\nสุรังค์\nสุรภี\nสุรัติ\nสุรัสวดี\nสุรา\nสุรางค์จำเรียง\nสุรางคนา\nสุรางคนางค์\nสุรารักษ์\nสุราลัย\nสุรินทร์\nสุรินทราหู\nสุริยะ\nสุริยกันต์\nสุริยกานต์\nสุริยการ\nสุริยกาล\nสุริยคติ\nสุริยคราส\nสุริยมณฑล\nสุริยวงศ์\nสุริยง\nสุริยา\nสุริเยนทร์\nสุริเยศ\nสุริโย\nสุริยน\nสุริยัน\nสุริยุปราคา\nสุรีย์\nสุรุ่ยสุร่าย\nสุลต่าน\nสุวคนธ์\nสุวภาพ\nสุวรรณ\nสุวรรณภูมิ\nสุวะ\nสุวาน\nสุวินัย\nสุวิมล\nสุษิระ\nสุสาน\nสุหนัต\nสุหร่ง\nสุหร่าย\nสุหฤท\nสุหัท\nสุเหร่า\nสู\nสู่\nสู้\nสูง\nสูจิ\nสูจิบัตร\nสูญ\nสูด\nสูต\nสูตร\nสูติ\nสูติกรรม\nสูตินรีเวช\nสูติบัตร\nสูติแพทย์\nสูติศาสตร์\nสูท\nสูทกรรม\nสูทศาสตร์\nสูบ\nสูปะ\nสูร\nสูรย์\nสูรยกานต์\nสูริ\nสูสี\nเส\nเสก\nเสกขบุคคล\nเสกขะ\nเสขบุคคล\nเสขะ\nเส็ง\nเส้ง\nเส็งเคร็ง\nเสงี่ยม\nเสฏฐี\nเสณี\nเสด\nเสด็จ\nเสตุ\nเสถียร\nเสทะ\nเสโท\nเสน\nเส้น\nเสนง\nเสน่ง\nเสน่ห์\nเสนหา\nเสน่หา\nเสนอ\nเสนะ\nเสนา\nเสนาธิการ\nเสนาบดี\nเสน่า\nเสนากุฎ\nเสนางค์\nเสนางคนิกร\nเสนานี\nเสนาสนะ\nเสนาะ\nเสนี\nเสนีย์\nเสนียะ\nเสนียด\nเสบย\nเสบียง\nเสพ\nเสพย์\nเสเพล\nเสภา\nเสม็ด\nเสมหะ\nเสมอ\nเสมา\nเสมียน\nเสมือน\nเสย\nเสร็จ\nเสริด\nเสริม\nเสรี\nเสลด\nเสลบรรพต\nเสลา\nเสลี่ยง\nเสลือกสลน\nเสโล\nเสวก\nเสวกามาตย์\nเสวนะ\nเสวนา\nเสวย\nเสวียน\nเสสรวง\nเสสรวล\nเสา\nเส้า\nเสาร์\nเสารภย์\nเสารี\nเสาวคนธ์\nเสาวธาร\nเสาวภา\nเสาวภาคย์\nเสาวภาพ\nเสาวรภย์\nเสาวรส\nเสาวลักษณ์\nเสาวณิต\nเสาวนะ\nเสาวนา\nเสาวนีย์\nเสาหฤท\nเสาะ\nเสาะแสะ\nเสิร์จ\nเสิร์ฟ\nเสีย\nเสียง\nเสี่ยง\nเสียด\nเสี้ยน\nเสียบ\nเสียม\nเสี่ยม\nเสี้ยม\nเสียว\nเสี่ยว\nเสี้ยว\nเสือ\nเสื่อ\nเสื้อ\nเสือก\nเสื่อม\nแส\nแส่\nแส้\nแสก\nแสง\nแสด\nแสดง\nแสตมป์\nแสน\nแสนย์\nแสนยากร\nแสนยานุภาพ\nแสบ\nแสม\nแสยก\nแสยง\nแสยะ\nแสรก\nแสร้ง\nแสลง\nแสล้ม\nแสวง\nแสะ\nโสก\nโสกโดก\nโสกันต์\nโสโครก\nโสณฑ์\nโสณิ\nโสณี\nโสด\nโสดก\nโสดม\nโสดา\nโสดาบัน\nโสดาปัตติผล\nโสดาปัตติมรรค\nโสต\nโสตทัศนวัสดุ\nโสตทัศนอุปกรณ์\nโสตทัศนูปกรณ์\nโสตินทรีย์\nโสตถิ\nโสทก\nโสทร\nโสธก\nโสธนะ\nโสน\nโสภณ\nโสภา\nโสภี\nโสภิณี\nโสเภณี\nโสม\nโสมนัส\nโสมม\nโสมย์\nโสร่ง\nโสรจ\nโสรวาร\nโสโร\nโสวรรณ\nโสหุ้ย\nโสฬส\nใส\nใส่\nไส\nไส้\nไสย\nไสยา\nไสยาสน์\nไสร้\nไสว\nหก\nหกคะเมน\nหง\nหงก\nหงส์\nหงสบาท\nหงสรถ\nหงอ\nหงอก\nหง่อง\nหงองแหงง\nหงอด\nหงอน\nหง่อม\nหงอย\nหง่อย\nหงัก\nหงับ\nหง่าง\nหงาย\nหง่าว\nหงำ\nหงิก\nหงิง\nหงิม\nหงึก\nหงุงหงิง\nหงุดหงิด\nหงุบ\nหงุ่ย\nหญ้า\nหญ้าฝรั่น\nหญ้ายายเภา\nหญิง\nหญิบ\nหด\nหตะ\nหทัย\nหน\nหนวก\nหน่วง\nหนวด\nหน่วย\nหน่วยกิต\nหนอ\nหน่อ\nหนอก\nหนอง\nหนอน\nหนอนตายหยาก\nหน่อย\nหน็อยแน่\nหนัก\nหนัง\nหนังสติ๊ก\nหนังสือ\nหนั่น\nหนับ\nหนา\nหน้า\nหน่าง\nหนาด\nหนาน\nหนาม\nหน่าย\nหนาว\nหนำ\nหนำเลี้ยบ\nหนี\nหนี้\nหนีบ\nหนึก\nหนึ่ง\nหนึบ\nหนืด\nหนุ\nหนุน\nหนุบ\nหนุ่ม\nหนุ่ย\nหนู\nห่ม\nหมก\nหมด\nหม่น\nหมวก\nหมวด\nหมวน\nหมอ\nหม่อ\nหม้อ\nหมอก\nหมอง\nหม่อง\nหมอน\nหม่อน\nหมอบ\nหม่อม\nหมอย\nหม้อห้อม\nหมัก\nหมักหมม\nหมัด\nหมัน\nหมั่น\nหมั้น\nหมับ\nหมา\nหม่า\nหมาก\nหมากฮอส\nหมาง\nหมาด\nหมามุ่ย\nหมามุ้ย\nหมาย\nหม้าย\nหมาร่า\nหม่ำ\nหม้ำ\nหมิ่น\nหมี\nหมี่\nหมึก\nหมืน\nหมื่น\nหมุด\nหมุน\nหมุบ\nหมุบหมับ\nหมุบหมิบ\nหมุ่ย\nหมุยขาว\nหมู\nหมู่\nหมูหริ่ง\nหยก\nหย่ง\nหยด\nหยวก\nหยวบ\nหยอก\nหยอกเอิน\nหย็อกหย็อย\nหยอง\nหย็อง\nหย่อง\nหย็องกรอด\nหย็องแหย็ง\nหยอด\nหยอน\nหย่อน\nหย่อม\nหย็อมแหย็ม\nหย็อย\nหย่อย\nหยัก\nหยักไย่\nหยักเหยา\nหยัง\nหยั่ง\nหยังหยัง\nหยัด\nหยัน\nหยับ\nหยั่วเมือง\nหย่า\nหยากเยื่อ\nหยากไย่\nหยาด\nหยาบ\nหยาม\nหยาว\nหย้าว\nหยำเป\nหยำเหยอะ\nหยำแหยะ\nหยิก\nหยิ่ง\nหยิบ\nหยิม\nหยี\nหยี่\nหยุกหยิก\nหยุด\nหยุ่น\nหยุบ\nหยุมหยิม\nหยูกยา\nหโยดม\nหรคุณ\nหรณะ\nหรดาล\nหรดี\nหรรษ์\nหรรษา\nหรอ\nหรอก\nหร็อมแหร็ม\nหรอย\nหระ\nหรับ\nหรา\nหริ\nหริ่ง\nหริณะ\nหริต\nหริตกี\nหรีตกี\nหรี่\nหรีด\nหรือ\nหรุบ\nหรุบรู่\nหรุบหรู่\nหรุ่ม\nหรู\nหรูหรา\nหฤทัย\nหฤทย์\nหฤษฎ์\nหฤษฎี\nหฤหรรษ์\nหฤโหด\nหลง\nหลงใหล\nหลงจู๊\nหลด\nหลน\nหล่น\nหลบ\nหล่ม\nหลวง\nหลวม\nหลอ\nหล่อ\nหลอก\nหลอด\nหลอน\nหล็อน\nหล่อน\nหลอม\nหละ\nหละหลวม\nหลัก\nหลัง\nหลั่ง\nหลัด\nหลั่น\nหลับ\nหลัว\nหลา\nหล้า\nหลาก\nหลาน\nหลาบ\nหลาม\nหลาย\nหลาว\nหลิ่ง\nหลิท\nหลิน\nหลิม\nหลิว\nหลิ่ว\nหลี\nหลีก\nหลีโก\nหลีบ\nหลีฮื้อ\nหลืบ\nหลุกหลิก\nหลุด\nหลุน\nหลุบ\nหลุม\nหลุมพอ\nหลุมพี\nหลู่\nหวง\nห่วง\nห้วง\nหวด\nหวน\nห้วน\nหวย\nห้วย\nหวอ\nหวอด\nหวะ\nหวัง\nหวัด\nหวั่น\nหวันยิหวา\nหวัว\nหวัวร่อ\nหวัวเราะ\nหวา\nหว่า\nหว้า\nหวาก\nหว่าง\nหวาด\nหวาน\nหว่าน\nหวาม\nหวาย\nหวำ\nหวิด\nหวิว\nหวี\nหวี่\nหวีด\nหวือ\nหวุดหวิด\nหวูด\nหอ\nห่อ\nห้อ\nหอก\nหอง\nห้อง\nหอน\nห่อน\nหอบ\nหอม\nห้อม\nหอย\nห้อย\nหะ\nหะยี\nหะหาย\nหัก\nหัจญ์\nหัจญี\nหัช\nหัฏฐะ\nหัด\nหัต\nหัตถ์\nหัตถกรรม\nหัตถการ\nหัตถกิจ\nหัตถบาส\nหัตถพันธ์\nหัตถาภรณ์\nหัตถศาสตร์\nหัตถศิลป์\nหัตถศึกษา\nหัตถาจารย์\nหัตถินี\nหัตถี\nหัน\nหั่น\nหั้น\nหันตรา\nหับ\nหัย\nหัว\nหัวร่อ\nหัวเราะ\nหัส\nหัสดิน\nหัสดี\nหัสต์\nหัสตะ\nหา\nห่า\nห้า\nหาก\nหาง\nห่าง\nห้าง\nหาญ\nหาด\nห่าน\nหาบ\nหาม\nห่าม\nห้าม\nหาย\nหายใจ\nหายนะ\nหาร\nหารือ\nหาว\nห้าว\nหาสะ\nหำ\nห้ำ\nหิ้ง\nหิงคุ\nหิงสา\nหิงห้อย\nหิ่งห้อย\nหิ่งหาย\nหิด\nหิต\nหิตานุหิตประโยชน์\nหิน\nหิมพาน\nหิมพานต์\nหิมวัต\nหิมวันต์\nหิมวา\nหิมะ\nหิมาลัย\nหิรัญ\nหิรัญญิการ์\nหิรัญบัฏ\nหิรัณย์\nหิรัณยรัศมี\nหิริ\nหิว\nหิ้ว\nหี\nหีด\nหีนยาน\nหีบ\nหึ\nหึง\nหึ่ง\nหึงสา\nหืด\nหืน\nหื่น\nหือ\nหื้อ\nหุง\nหุน\nหุ่น\nหุ้น\nหุนหัน\nหุบ\nหุ้ม\nหุยฮา\nหู\nหู่\nหูก\nหูด\nเห\nเห่\nเหง\nเหง่ง\nเหงา\nเหง้า\nเหงื่อ\nเหงือก\nเห็จ\nเห็ด\nเหติ\nเหตุ\nเห็น\nเหน่ง\nเหนงนายพราน\nเหน็ดเหนื่อย\nเหน็บ\nเหน่อ\nเห็นอ้ม\nเหนอะ\nเหนอะหนะ\nเหน้า\nเหนาะ\nเหนียง\nเหนี่ยง\nเหนี่ยน\nเหนียม\nเหนียว\nเหนี่ยว\nเหนือ\nเหนื่อย\nเห็บ\nเหม\nเหม่\nเหม็ง\nเหม่ง\nเหม็น\nเหมวดี\nเหม่อ\nเหมันต์\nเหมันตฤดู\nเหมา\nเหมายัน\nเหมาะ\nเหมียว\nเหมี่ยว\nเหมือง\nเหมือด\nเหมือน\nเหมื่อย\nเหย\nเหยง\nเหย่อย\nเหยา\nเหย่า\nเหย้า\nเหยาะ\nเหยาะแหยะ\nเหยิง\nเหยิบ\nเหยียด\nเหยียบ\nเหยี่ยว\nเหยื่อ\nเหยือก\nเหรอ\nเหรอะ\nเหรัญญิก\nเหรา\nเหราะ\nเหรียญ\nเหล่\nเหล็ก\nเหลน\nเหลว\nเหลอ\nเหลา\nเหล่า\nเหล้า\nเหลาะแหละ\nเหลิง\nเหลิงเจิ้ง\nเหลียน\nเหลี่ยม\nเหลียว\nเหลือ\nเหลือก\nเหลือง\nเหลือบ\nเหลือม\nเหลื่อม\nเหว\nเหว่\nเหวง\nเหวย\nเหวอะ\nเหวอะหวะ\nเหวี่ยง\nเห่อ\nเหอะ\nเหะ\nเหะหะ\nเหา\nเห่า\nเหาะ\nเหิน\nเหิม\nเหี้ย\nเหียง\nเหียน\nเหี้ยน\nเหี้ยม\nเหี่ยว\nเหื่อ\nเหือด\nแห\nแห่\nแห้\nแหก\nแหง\nแหง่\nแห่ง\nแห้ง\nแหงแก๋\nแหง่ง\nแหงน\nแหน\nแห้น\nแหนง\nแหนบ\nแหนม\nแหบ\nแหม\nแหม่\nแหม่ม\nแหมะ\nแหย\nแหย่\nแหยง\nแหย่ง\nแหยม\nแหย็ม\nแหยะ\nแหล่\nแหลก\nแหล่ง\nแหลน\nแหลม\nแหละ\nแหว\nแห้ว\nแหวก\nแหว่ง\nแหวด\nแหวน\nแหวะ\nแหะ\nโห่\nโหง\nโหด\nโหน\nโหนก\nโหน่ง\nโหม\nโหม่ง\nโหมด\nโหย\nโหยกเหยก\nโหยง\nโหย่ง\nโหร\nโหรง\nโหรงเหรง\nโหรดาจารย์\nโหระพา\nโหรา\nโหราจารย์\nโหราศาสตร์\nโหล\nโหล่\nโหลงโจ้ง\nโหว\nโหว่\nโหว้\nโหวกเหวก\nโหวง\nโหวด\nโหวต\nให้\nใหญ่\nใหม่\nไห\nไห่\nไห้\nไหน\nไหม\nไหม้\nไหรณย์\nไหล\nไหล่\nไหว\nไหว้\nไหหลำ\nอก\nอกตเวทิตา\nอกตเวที\nอกตัญญุตา\nอกตัญญู\nอกนิษฐ์\nอกรณีย์\nอกรรมกริยา\nอกัปปิยวัตถุ\nอกัปปิยะ\nอกุศล\nอคติ\nอคาธ\nอโฆษะ\nองก์\nองค์\nองคชาต\nองคมนตรี\nองครักษ์\nองคาพยพ\nองคุลี\nองศ์\nองศา\nองอาจ\nองุ่น\nอจลา\nอจินตา\nอจินไตย\nอจิระ\nอเจลก\nอเจละ\nอชะ\nอชิน\nอชินี\nอชิระ\nอฏวี\nอณิ\nอณู\nอโณทัย\nอด\nอดิถี\nอดิเทพ\nอดิเรก\nอดิศร\nอดิศวร\nอดิศัย\nอดีต\nอดุล\nอดุลย์\nอติ\nอติชาต\nอติมานะ\nอติราช\nอติเรก\nอติสาร\nอถรรพเวท\nอาถรรพเวท\nอทระ\nอทินนาทาน\nอธรรม\nอธิ\nอธิกมาส\nอธิกรณ์\nอธิกวาร\nอธิกสุรทิน\nอธิการ\nอธิคม\nอธิฏฐาน\nอธิบดี\nอธิบาย\nอธิป\nอธิปไตย\nอธิมาตร\nอธิมุตติ\nอธิโมกข์\nอธิราช\nอธิวาส\nอธิวาสนะ\nอธิศีล\nอธิษฐาน\nอธึก\nอ้น\nอนงค์\nอนงคณะ\nอนงคเลขา\nอนธการ\nอนนต์\nอนยะ\nอนรรฆ\nอนรรถ\nอนล\nอนวัช\nอนัญ\nอนัตตา\nอนันต์\nอนันตริยกรรม\nอนัม\nอนาคต\nอนาคามิผล\nอนาคามิมรรค\nอนาคามี\nอนาจาร\nอนาถ\nอนาถา\nอนาทร\nอนาธิปไตย\nอนามัย\nอนามิกา\nอนารยชน\nอนารยธรรม\nอนารยะ\nอนาลัย\nอนำ\nอนิจ\nอนิจจัง\nอนิจจา\nอนิฏฐารมณ์\nอนิยต\nอนิยม\nอนิล\nอนิวรรต\nอนิวรรตน์\nอนีกะ\nอนีจะ\nอนึก\nอนึ่ง\nอนุ\nอนุกร\nอนุกรม\nอนุกรรมการ\nอนุกระเบียด\nอนุกาชาด\nอนุการ\nอนุกูล\nอนุคามิก\nอนุเคราะห์\nอนุจร\nอนุช\nอนุชน\nอนุชา\nอนุชาต\nอนุชิต\nอนุญาต\nอนุญาโตตุลาการ\nอนุตร\nอนุเถระ\nอนุทิน\nอนุบท\nอนุบาล\nอนุประโยค\nอนุปริญญา\nอนุปสัมบัน\nอนุปัสนา\nอนุพงศ์\nอนุพัทธ์\nอนุพันธ์\nอนุโพธ\nอนุภรรยา\nอนุภริยา\nอนุภาค\nอนุภาษ\nอนุมัติ\nอนุมาตรา\nอนุมาน\nอนุมูล\nอนุโมทนา\nอนุโยค\nอนุรักษ์\nอนุรักษนิยม\nอนุราช\nอนุราธ\nอนุราธะ\nอนุราธา\nอนุรูป\nอนุโลม\nอนุวงศ์\nอนุวรรตน์\nอนุวัต\nอนุวัตน์\nอนุวัตร\nอนุวัติ\nอนุวาต\nอนุศาสก\nอนุศาสน์\nอนุศาสนาจารย์\nอนุศิษฏ์\nอนุสติ\nอนุสนธิ\nอนุสร\nอนุสรณ์\nอนุสัญญา\nอนุสัย\nอนุสาวรีย์\nอนุสาสนี\nอเนก\nอเนกคุณ\nอเนกรรถประโยค\nอเนจอนาถ\nอโนชา\nอโนดาต\nอบ\nอบเชย\nอบาย\nอปจายนธรรม\nอปจายนมัย\nอปมงคล\nอปยศ\nอประไมย\nอปรัณณชาติ\nอปรา\nอปราชัย\nอปราชิต\nอปริมาณ\nอปลักษณ์\nอปโลกน์\nอปวาท\nอเปหิ\nอพพะ\nอพยพ\nอภัพ\nอภัย\nอภิ\nอภิฆาต\nอภิชฌา\nอภิชน\nอภิชนาธิปไตย\nอภิชัย\nอภิชาต\nอภิชิต\nอภิญญา\nอภิญญาณ\nอภิธรรม\nอภิธาน\nอภิไธย\nอภินันท์\nอภินันทนาการ\nอภินัย\nอภินิหาร\nอภิเนษกรมณ์\nอภิบาล\nอภิปรัชญา\nอภิปราย\nอภิมหาอำนาจ\nอภิมานะ\nอภิมุข\nอภิรดี\nอภิรติ\nอภิรมย์\nอภิรักษ์\nอภิราม\nอภิรุต\nอภิรุม\nอภิรูป\nอภิลักขิต\nอภิลักขิตสมัย\nอภิเลปน์\nอภิวันท์\nอภิวาท\nอภิวาทน์\nอภิเษก\nอภิสมโพธิ\nอภิสมัย\nอภิสมาจาร\nอภิสัมโพธิ\nอภิสัมโพธิญาณ\nอภิสิต\nอภิสิทธิ์\nอภูตะ\nอม\nอมพะนำ\nอ้ม\nอมตธรรม\nอมตบท\nอมตะ\nอมนุษย์\nอมร\nอมรา\nอมราวดี\nอมรินทร์\nอมเรนทร์\nอมเรศ\nอมฤต\nอมัตร\nอมาตย์\nอมาวสี\nอมาวสุ\nอมาวาสี\nอมิตร\nอเมริกัน\nอย่า\nอยาก\nอย่าง\nอยุทธ์\nอยู่\nอร\nอรชร\nอรชุน\nอรดี\nอรติ\nอรทัย\nอรไท\nอรนุช\nอรพินท์\nอรพิม\nอรรค\nอรรฆ\nอรรฆย์\nอรรจน์\nอรรณพ\nอรรถ\nอรรถกถา\nอรรถกถาจารย์\nอรรถาธิบาย\nอรรธ\nอรสุม\nอรหะ\nอรหัง\nอรหัต\nอรหัตผล\nอรหัตมรรค\nอรหัน\nอรหันต์\nอรหันตฆาต\nอร่อย\nอรัญ\nอรัญญิก\nอรัญวาส\nอรัญวาสี\nอรัณย์\nอราดี\nอร่าม\nอริ\nอรินทร์\nอริน\nอริยกะ\nอริยทรัพย์\nอริยบุคคล\nอริยผล\nอริยมรรค\nอริยสัจ\nอริยะ\nอรุณ\nอรุโณทัย\nอรุ่ม\nอรูป\nอลงกต\nอลงกรณ์\nอลงการ\nอลวน\nอลเวง\nอลหม่าน\nอล่องฉ่อง\nอลักเอลื่อ\nอลังการ\nอลัชชี\nอล่างฉ่าง\nอลิงค์\nอลึงค์\nอลึ่งฉึ่ง\nอโลหะ\nอ้วก\nอวกาศ\nอวจร\nอวชัย\nอวชาต\nอวด\nอวตาร\nอวน\nอ้วน\nอวบ\nอวมงคล\nอวย\nอวยวะ\nอวรรค\nอวรุทธ์\nอวรุทธก\nอวล\nอวสาน\nอวหาร\nอวัยวะ\nอวัสดา\nอวาจี\nอวิจี\nอวิชชา\nอวิญญาณกทรัพย์\nอวิญญู\nอวิรุทธ์\nอวิโรธน์\nอวิโรธนะ\nอวิหิงสา\nอวีจิ\nอเวจี\nอโศก\nอสงไขย\nอสนี\nอัสนี\nอสนีบาต\nอสภะ\nอสมการ\nอสมมาตร\nอสรพิษ\nอสังหาริมทรัพย์\nอสังหาริมะ\nอสัญกรรม\nอสัญญี\nอสัญแดหวา\nอสัตถพฤกษ์\nอัสสัตถพฤกษ์\nอสัตย์\nอสัมภิน\nอสัมภินพงศ์\nอสัมภินวงศ์\nอสิ\nอสิธารา\nอสิต\nอสิเลสะ\nอสีตยานุพยัญชนะ\nอสีติ\nอสุ\nอสุจิ\nอสุนีบาต\nอสุภ\nอสุรกาย\nอสุรา\nอสุรี\nอสุเรศ\nอสูร\nอเสกขบุคคล\nอเสกขะ\nอเสขบุคคล\nอเสขะ\nอหังการ\nอหิ\nอหิงสา\nอหิวาต์\nอหิวาตกโรค\nอหึงสา\nอเหตุกทิฐิ\nอโหสิ\nออ\nอ้อ\nอ๋อ\nออก\nออกซิเจน\nออกซิเดชัน\nออกไซด์\nออกญา\nอ่อง\nอ๋อง\nอ้องแอ้ง\nออเซาะ\nออด\nอ๊อด\nอ๊อดแอ๊ด\nอ่อน\nอ้อน\nออนซ์\nออนซอน\nอ้อนแอ้น\nออฟฟิศ\nออม\nอ่อม\nอ้อม\nออมชอม\nออมซอม\nอ้อมแอ้ม\nอ่อย\nอ้อย\nอ๋อย\nอ้อยส้อย\nอ้อยอิ่ง\nออสเมียม\nอ้อแอ้\nอ๊ะ\nอะคร้าว\nอะเคื้อ\nอะแจ\nอะเซทิลีน\nอะดรีนาลิน\nอะดุง\nอะตอม\nอะมีบา\nอะเมริเซียม\nอะร้าอร่าม\nอะไร\nอะลุ่มอล่วย\nอะลุ้มอล่วย\nอะลูมิเนียม\nอะหม\nอะไหล่\nอัก\nอั้ก\nอั๊ก\nอักกะ\nอักโกธะ\nอักขรวิธี\nอักขรวิบัติ\nอักขรสมัย\nอักขระ\nอักขรานุกรม\nอักขะ\nอักโข\nอักโขภิณี\nอักโขเภณี\nอักษร\nอักษะ\nอักเษาหิณี\nอักเสบ\nอักอ่วน\nอัคคะ\nอัคคิ\nอัคคี\nอัคนิ\nอัคนี\nอัคร\nอัครชายา\nอัครมเหสี\nอัครราชทูต\nอัครสมณทูต\nอัง\nอังก์\nอังกนะ\nอังกฤษ\nอังกะลุง\nอังกา\nอังกาบ\nอังกุระ\nอังกุศ\nอังกูร\nอังคณะ\nอังคณา\nอังคาร\nอังคาส\nอังคีรส\nอังคุฐ\nอังคุตรนิกาย\nอังฆาต\nอังแพลม\nอั้งยี่\nอั้งโล่\nอังศุ\nอังศุก\nอังศุธร\nอังศุมาลี\nอังสกุฏ\nอังสตรอม\nอังสนา\nอังสภาระ\nอังสะ\nอังสา\nอัจกลับ\nอัจจิ\nอัจจิมา\nอัจจุตะ\nอัจฉรา\nอัจฉริยบุคคล\nอัจฉริยภาพ\nอัจฉริยลักษณ์\nอัจฉริยลักษณะ\nอัจฉริยะ\nอัจนา\nอัชฌัตติก\nอัชฌา\nอัชฌาจาร\nอัชฌาศัย\nอัชฌาสัย\nอัญเดียรถีย์\nอัญมณี\nอัญขยม\nอัญชนะ\nอัญชลี\nอัญชัน\nอัญชุลี\nอัญเชิญ\nอัญญะ\nอัญดิตถีย์\nอัญเดียรถีย์\nอัญประกาศ\nอัญรูป\nอัฏ\nอัฏฐบาน\nอัฏฐะ\nอัฏฐังคิกมรรค\nอัฏนา\nอัฐ\nอัฐฬส\nอัฐเคราะห์\nอัฐทิศ\nอัฐบริขาร\nอัฐบาน\nอัฐม\nอัฐมี\nอัฐศก\nอัฐิ\nอัฒจันทร์\nอัฒภาค\nอัฒมาส\nอัฒรัตติ\nอัณฑโกส\nอัณฑชะ\nอัณฑะ\nอัณณพ\nอัด\nอัดแจ\nอัต\nอัตชีวประวัติ\nอัตนัย\nอัตภาพ\nอัตวินิบาตกรรม\nอัตคัด\nอัตตโนบท\nอัตตา\nอัตตาธิปไตย\nอัตถ์\nอัตถะ\nอัตโนมัติ\nอัตรชะ\nอัตรา\nอัตลัด\nอัททา\nอัทธ์\nอัทธา\nอัทธาน\nอัทธายุ\nอัธยาตมวิทยา\nอัธยาย\nอัธยาศัย\nอัน\nอั้น\nอั๋น\nอันดร\nอันดับ\nอันตกะ\nอันตกาล\nอันตะ\nอันตคุณ\nอันตรภาค\nอันตรวาสก\nอันตรธาน\nอันตรา\nอันตราย\nอันตรายิกธรรม\nอันติกะ\nอันติมสัจ\nอันติมะ\nอันเต\nอันโต\nอันเตปุริก\nอันเตวาสิก\nอันแถ้ง\nอันโทล\nอันธการ\nอันธพาล\nอันธิกา\nอันเวส\nอับ\nอับปาง\nอัปปะ\nอัปเปหิ\nอัปภาคย์\nอัปมงคล\nอัปยศ\nอัประมาณ\nอัประไมย\nอัปราชัย\nอัปรีย์\nอัปลักษณ์\nอัปสร\nอัพพุท\nอัพโพหาริก\nอัพภันดร\nอัพภาน\nอัพภาส\nอัพภูตธรรม\nอัพยากฤต\nอัมพฤกษ์\nอัมพาต\nอัมพวัน\nอัมพวา\nอัมพร\nอัมพา\nอัมพิละ\nอัมพุ\nอัมพุช\nอัมพุชินี\nอัมพุท\nอัยกา\nอัยการ\nอัยกี\nอัยยะ\nอัยยิกา\nอัลกุรอาน\nอัลตราไวโอเลต\nอั่ว\nอัศจรรย์\nอัศเจรีย์\nอัศว\nอัศวเมธ\nอัศวยุช\nอัศวานึก\nอัศวิน\nอัศวินี\nอัษฎมงคล\nอัษฏมงคล\nอัษฎางคิกมรรค\nอัษฎายุธ\nอัษฎาวุธ\nอัสสะ\nอัสดร\nอัสกัณ\nอัสดง\nอัสดงคต\nอัสมิมานะ\nอัสสนี\nอัสสานึก\nอัสสาสะ\nอัสสุ\nอา\nอ่า\nอ้า\nอ๋า\nอากร\nอากังขา\nอากัป\nอาการ\nอากาศ\nอากูล\nอาเกียรณ์\nอาขยาต\nอาขยาน\nอาคเนย์\nอาคม\nอาครหายณี\nอาคันตุกะ\nอาคันตุกภัต\nอาคันตุกวัตร\nอาคาร\nอาฆาต\nอ่าง\nอ้าง\nอางขนาง\nอ้างว้าง\nอาจ\nอาจม\nอาจริยวัตร\nอาจริยวาท\nอาจาด\nอาจาร\nอาจารย์\nอาจารี\nอาจิณ\nอาเจียน\nอาชญา\nอาชวะ\nอาชา\nอาชาไนย\nอาชีพ\nอาชีวศึกษา\nอาชีวะ\nอาชีวก\nอาญา\nอาฏานา\nอาณัติ\nอาณา\nอาด\nอาดูร\nอาดุลย์\nอาดูลย์\nอาเด๊ะ\nอาตมภาพ\nอาตมัน\nอาตมา\nอาถรรพ์\nอาถรรพณ์\nอาทร\nอาทิ\nอาทิจจวาร\nอาทิตย์\nอาทิตยมณฑล\nอาทิตยวาร\nอาทีนพ\nอาทีนวะ\nอาทึก\nอาเทศ\nอาเทสนา\nอาธรรม\nอาธรรม์\nอาธาน\nอาธาร\nอาน\nอ่าน\nอานน\nอานนท์\nอานันท์\nอานันทนะ\nอานัม\nอานาปานะ\nอานาปานัสสติ\nอานิสงส์\nอานุภาพ\nอานุภาวะ\nอาบ\nอาบัติ\nอาบัน\nอาปณกะ\nอาปณะ\nอาปะ\nอาโป\nอาปานะ\nอาพัทธ์\nอาพันธ์\nอาพันธนะ\nอาพาธ\nอาเพศ\nอาภรณ์\nอาภัพ\nอาภัสระ\nอาภา\nอาภาส\nอามลกะ\nอามัย\nอามิษ\nอามิส\nอาย\nอ้าย\nอายตนะ\nอายตะ\nอายน\nอายัด\nอายัต\nอายัน\nอายาจนะ\nอายานะ\nอายุ\nอายุตกะ\nอายุธ\nอายุรกรรม\nอายุรแพทย์\nอายุรเวช\nอายุรเวท\nอายุศาสตร์\nอายุษ\nอาร์กอน\nอารดี\nอารติ\nอาร์ต\nอารทรา\nอาร์ม\nอารมณ์\nอารยชน\nอารยชาติ\nอารยธรรม\nอารยประเทศ\nอารยะ\nอารยัน\nอาระ\nอารักขา\nอารักษ์\nอารัญ\nอารัณย์\nอารัญญิก\nอารัณยกะ\nอารัติ\nอารัมภ์\nอารัมภกถา\nอารัมภบท\nอารัมภะ\nอาราธน์\nอาราธนา\nอาราม\nอารามิก\nอารี\nอารุม\nอาลปนะ\nอาละวาด\nอาลักษณ์\nอาลัย\nอาลัว\nอาลี\nอาโลก\nอาว\nอ่าว\nอ้าว\nอาวรณ์\nอาวัชนาการ\nอาวัล\nอาวาส\nอาวาสิก\nอาวาหมงคล\nอาวาหะ\nอาวุต\nอาวุธ\nอาวุโส\nอาเวค\nอาศรม\nอาศรมบท\nอาศเลษา\nอาศัย\nอาศิรพจน์\nอาศิรพาท\nอาศิรวาท\nอาศุ\nอาเศียรพจน์\nอาเศียรพาท\nอาเศียรวาท\nอาษาฒ\nอาสน\nอาสน์\nอาสนะ\nอาสนศาลา\nอาสัญ\nอาสัตย์\nอาสา\nอาสาฬห์\nอาสาฬหบูชา\nอาสาฬหะ\nอาสิญจ์\nอาสิน\nอาหม\nอาหรับ\nอาหาร\nอาฬหก\nอำ\nอ่ำ\nอ้ำ\nอำแดง\nอำนนต์\nอำนรรฆ\nอำนวย\nอำนาจ\nอำนาถ\nอำนิฐ\nอำนิษฐ์\nอำปลัง\nอำพน\nอำพล\nอำพะนำ\nอำพัน\nอำไพ\nอำเภอ\nอำมร\nอำมฤคโชค\nอำมฤต\nอำมหิต\nอำมาตย์\nอำมาตยาธิปไตย\nอำยวน\nอำรุง\nอำลา\nอำอวม\nอ้ำอึ้ง\nอิก\nอิง\nอิงค์\nอิงอร\nอิจฉา\nอิฉัน\nอิชยา\nอิฏฐารมณ์\nอิฐ\nอิฐผล\nอิด\nอิตถี\nอิตเทรียม\nอิตเทอร์เบียม\nอิติวุตตกะ\nอิทธิ\nอิน\nอินซูลิน\nอินเดีย\nอินเดียนแดง\nอินเดียม\nอินท์\nอินทขีล\nอินทนิล\nอินทผลัม\nอินทร์\nอินทรธนู\nอินทรวงศ์\nอินทรวิเชียร\nอินทรศักดิ์\nอินทราณี\nอินทราภิเษก\nอินทรายุธ\nอินทรี\nอินทรีย์\nอินทรียสังวร\nอินทีวร\nอินทุ\nอินฟราเรด\nอินัง\nอิ่ม\nอิมัลชัน\nอิริเดียม\nอิริยา\nอิริยาบถ\nอิรุพเพท\nอิเล็กตรอน\nอิเล็กทรอนิกส์\nอิเล็กโทน\nอิศร\nอิศวร\nอิษฏ์\nอิษฏี\nอิส\nอิสตรี\nอิสัตรี\nอิสรภาพ\nอิสระ\nอิสริยยศ\nอิสริยะ\nอิสริยาภรณ์\nอิสลาม\nอิสสา\nอิสิ\nอิสี\nอิหม่าม\nอิหลักอิเหลื่อ\nอี\nอี่\nอี้\nอี๊\nอี๋\nอี๋อ๋อ\nอีก\nอีก้อ\nอีก๋อย\nอีโก้ง\nอีจู้\nอี๊ด\nอีเต้อ\nอีโต้\nอีทุบ\nอีเทอร์\nอีนุงตุงนัง\nอีนูน\nอีโน\nอีแปะ\nอีโปง\nอีเพา\nอีมู\nอีรม\nอีลุ้ม\nอีลุ่ยฉุยแฉก\nอีเลิ้ง\nอีศ\nอีศวร\nอีส\nอีสาน\nอีสุกอีใส\nอีหรอบ\nอีหลักอีเหลื่อ\nอีหลี\nอีหลุกขลุกขลัก\nอีหลุกขลุกขลุ่ย\nอีเห็น\nอีเหน็บ\nอีเหนียว\nอีเหละเขละขละ\nอีเหละเขะขะ\nอีโหน่อีเหน่\nอีโหลกโขลกเขลก\nอีแอ่น\nอึ\nอึก\nอึ้ก\nอึ๊ก\nอึกทึก\nอึกอัก\nอึง\nอึ่ง\nอึ้ง\nอึด\nอึดตะปือ\nอึ้ดทึ่ด\nอึน\nอืด\nอื่น\nอื้น\nอือ\nอื้อ\nอื้อฮือ\nอุ\nอุก\nอุกกา\nอุกกาบาต\nอุกฤษฏ์\nอุกลาบาต\nอุค\nอุคระ\nอุคหนิมิต\nอุโฆษ\nอุ้ง\nอุจ\nอุจจาระ\nอุจฉุ\nอุจเฉท\nอุจเฉททิฐิ\nอุจาด\nอุชุ\nอุฏฐาการ\nอุณหภูมิ\nอุณหะ\nอุณหาหาร\nอุณหิส\nอุณา\nอุณาโลม\nอุด\nอุดเตา\nอุดม\nอุดมการณ์\nอุดมคติ\nอุดมศึกษา\nอุดร\nอุดหนุน\nอุตดม\nอุตตมะ\nอุตมภาพ\nอุตมางค์\nอุตดร\nอุตรกุรุทวีป\nอุตตรายัน\nอุตรนิกาย\nอุตรผลคุนี\nอุตตรผลคุนี\nอุตรภัทรบท\nอุตตรภัทรบท\nอุตตรภัททะ\nอุตราภิมุข\nอุตราวรรต\nอุตราวัฏ\nอุตราษาฒ\nอุตตราสาฬหะ\nอุตราสงค์\nอุตตานภาพ\nอุตพิด\nอุตรา\nอุตริ\nอุตริมนุสธรรม\nอุตลุด\nอุตส่าห์\nอุตสาหกรรม\nอุตสาหะ\nอุตุ\nอุตุนิยม\nอุตุนิยมวิทยา\nอุทก\nอุทกธาร\nอุทกธารา\nอุทกภัย\nอุทกวิทยา\nอุทกศาสตร์\nอุทธรณ์\nอุทธัจ\nอุทยาน\nอุทร\nอุทริยะ\nอุทลุม\nอุทัช\nอุทัย\nอุทาน\nอุทาร\nอุทาหรณ์\nอุทิศ\nอุทุมพร\nอุเทศ\nอุเทสิกเจดีย์\nอุธัจ\nอุ่น\nอุบ\nอุบล\nอุบะ\nอุบ๊ะ\nอุบัติ\nอุบาท\nอุบาทว์\nอุบาย\nอุบาสก\nอุบาสิกา\nอุเบกขา\nอุโบสถ\nอุปกรณ์\nอุปกรม\nอุปการ\nอุปการะ\nอุปการี\nอุปกิเลส\nอุปจาร\nอุปถัมภ์\nอุปถัมภก\nอุปทม\nอุปทูต\nอุปเทศ\nอุปเท่ห์\nอุปธิ\nอุปนัย\nอุปนิกขิต\nอุปนิษัท\nอุปนิสัย\nอุปบัติ\nอุปปาติกะ\nอุปพัทธ์\nอุปพันธ์\nอุปโภค\nอุปมา\nอุปมาน\nอุปไมย\nอุปยุวราช\nอุปรากร\nอุปราคา\nอุปราช\nอุปริ\nอุปริมปริยาย\nอุปโลกน์\nอุปเวท\nอุปสมบท\nอุปสมบัน\nอุปสัมบัน\nอุปสรรค\nอุปสัมปทา\nอุปฮาด\nอุปัชฌาย์\nอุปัชฌายวัตร\nอุปัชฌายะ\nอุปัฏฐาก\nอุปัฏฐานะ\nอุปัทวะ\nอุปัทวันตราย\nอุปาทาน\nอุปาหนา\nอุภัย\nอุ้ม\nอุมงค์\nอุโมงค์\nอุย\nอุ่ย\nอุ้ย\nอุ๊ย\nอุยยาน\nอุยยาม\nอุรณะ\nอุรพี\nอุระ\nอุรังอุตัง\nอุรัจฉัท\nอุรัจฉทะ\nอุรา\nอุรุ\nอุไร\nอุลกมณี\nอุลโลจ\nอุลามก\nอุลิด\nอุโลก\nอุแว้\nอุษณกร\nอุษณกาล\nอุษณรัศมี\nอุษณรุจี\nอุษณาการ\nอุษณีษ์\nอุษมะ\nอุษมัน\nอุษา\nอุษาโยค\nอุสภ\nอุสส่าห์\nอุสสาหะ\nอุสา\nอุสุ\nอุสุภ\nอุสุภราช\nอุสุม\nอุหรับ\nอุหลบ\nอุเหม่\nอุฬาร\nอู\nอู่\nอู้\nอูฐ\nอูด\nอูม\nอูย\nอูรุ\nอู๋อี๋\nเอ\nเอ้\nเอ๊\nเอก\nเอกเขนก\nเอกซเรย์\nเอกรรถประโยค\nเอกัคตา\nเอกังสพยากรณ์\nเอกังสวาที\nเอกา\nเอ้กา\nเอกาธิปไตย\nเอเคอร์\nเอง\nเอ็ง\nเอ๋ง\nเอ็ด\nเอ็ดตะโร\nเอดส์\nเอตทัคคะ\nเอ้เต\nเอทิล\nเอน\nเอ็น\nเอนไซม์\nเอ็นดู\nเอ็นอ่อน\nเอม\nเอ็มบริโอ\nเอย\nเอ่ย\nเอ๊ย\nเอ๋ย\nเอร็ดอร่อย\nเอราวัณ\nเอว\nเอ๊ว\nเอวัง\nเอฬกะ\nเอฬา\nเออ\nเอ่อ\nเออร์เบียม\nเอ้อระเหย\nเอ้อเร้อ\nเอ้อเฮอ\nเอ๊ะ\nเอะใจ\nเอะอะ\nเอะอะมะเทิ่ง\nเอา\nเอาทาร\nเอาทารย์\nเอารส\nเอาฬาร\nเอาะลาย\nเอิก\nเอิกเกริก\nเอิ้น\nเอิบ\nเอียง\nเอี้ยง\nเอียด\nเอี๊ยด\nเอียน\nเอี่ยน\nเอี่ยม\nเอี๊ยม\nเอี้ยมจุ๊น\nเอี้ยมเฟี้ยม\nเอี่ยว\nเอี้ยว\nเอื้อ\nเอื๊อก\nเอื้อง\nเอือด\nเอือน\nเอื้อน\nเอือม\nเอื้อม\nเอื่อย\nเอื้อย\nแอ\nแอ้\nแอ๋\nแอก\nแอกทิเนียม\nแอ่ง\nแอ้งแม้ง\nแอด\nแอ้ด\nแอ๊ด\nแอ่น\nแอนติเจน\nแอนติบอดี\nแอนติอิเล็กตรอน\nแอโนด\nแอบ\nแอม\nแอ้ม\nแอมแปร์\nแอมมิเตอร์\nแอมโมเนีย\nแอร่ม\nแอลกอฮอล์\nแอลฟา\nแอว\nแอ่ว\nแอ้วแซ่ว\nแอสทาทีน\nแอสไพริน\nแอสฟัลต์\nแอหนัง\nแออัด\nโอ\nโอ่\nโอ้\nโอ๋\nโอก\nโอ้ก\nโอ้กอ้าก\nโอ๊ก\nโอกาส\nโอฆชล\nโอฆสงสาร\nโอฆะ\nโอ่ง\nโองการ\nโองโขดง\nโอชะ\nโอชา\nโอโซน\nโอฐ\nโอด\nโอ๊ต\nโอตตัปปะ\nโอทนะ\nโอน\nโอบ\nโอปปาติกะ\nโอภา\nโอภาส\nโอม\nโอย\nโอ๊ย\nโอรส\nโอละพ่อ\nโอลิมปิก\nโอวาท\nโอษฐ์\nโอษฐชะ\nโอษฐภัย\nโอสถ\nโอห์ม\nโอหัง\nโอฬาร\nโอฬาริก\nโอฬารึก\nโอ้เอ้\nโอเอซิส\nโอ้โฮ\nไอ\nไอ้\nไอโซโทป\nไอน์สไตเนียม\nไอยรา\nไอยเรศ\nไอราพต\nไอราวัณ\nไอราวัต\nไอศกรีม\nไอศวรรย์\nไอศุริยสมบัติ\nไอศูรย์\nไอออน\nไอโอดีน\nฮกเกี้ยน\nฮด\nฮวงซุ้ย\nฮวน\nฮ้วนหมู\nฮวบ\nฮ่อ\nฮ้อ\nฮอกกี้\nฮอด\nฮ่อม\nฮ่อยจ๊อ\nฮอร์โมน\nฮอลแลนด์\nฮอลันดา\nฮะ\nฮะเบส\nฮะเรีย\nฮัก\nฮังเล\nฮัจญ์\nฮัจญะฮ์\nฮัจญี\nฮั่น\nฮั้ว\nฮา\nฮ้า\nฮ่างหลวง\nฮาจญ์\nฮาม\nฮาเร็ม\nฮาห์เนียม\nฮิจเราะห์\nฮินดู\nฮิปโปโปเตมัส\nฮิสทีเรีย\nฮีเลียม\nฮึ\nฮึก\nฮึด\nฮึดฮัด\nฮึ่ม\nฮึย\nฮึ่ย\nฮืดฮาด\nฮือ\nฮื่อ\nฮื้อ\nฮื้อฉี่\nฮุด\nฮุบ\nฮุยเลฮุย\nฮู้\nฮูก\nฮูม\nเฮ\nเฮฮา\nเฮกตาร์\nเฮกโตกรัม\nเฮกโตเมตร\nเฮกโตลิตร\nเฮง\nเฮ็ด\nเฮโมโกลบิน\nเฮย\nเฮ่ย\nเฮ้ย\nเฮโรอีน\nเฮลิคอปเตอร์\nเฮโล\nเฮละโล\nเฮ้ว\nเฮอ\nเฮ่อ\nเฮ้อ\nเฮอริเคน\nเฮิรตซ์\nเฮี้ยน\nเฮี้ยบ\nเฮี้ยว\nเฮือก\nเฮือน\nแฮ\nแฮ่\nแฮก\nแฮ่กึ๊น\nแฮนด์บอล\nแฮฟเนียม\nแฮม\nแฮะ\nโฮ\nโฮก\nโฮ่ง\nโฮ้ง\nโฮเต็ล\nโฮลเมียม\nโฮะ\nไฮ้\nไฮโกรมิเตอร์\nไฮดรา\nไฮโดร\nไฮโดรคาร์บอน\nไฮโดรเจน\nไฮโดรมิเตอร์\nไฮไฟ\nไฮโล\nไฮฮี\n".split(/[\r\n]+/).filter(function(n){return 1<n.length}),this.addWords(words,!1);t&&this.finalizeDict()},dictSeek:function(n,t,e,r,i){for(var o=null;n<=t;){var s=Math.floor((n+t)/2),a=this.dict[s];if(a.length<=r)n=s+1;else{var c=a[r];c<e?n=s+1:e<c?t=s-1:(o=s,0==i?t=s-1:n=s+1)}}return o},isFinal:function(n){return this.dict[n.l].length==n.strOffset},createAcceptor:function(){return{l:0,r:this.dict.length-1,strOffset:0,isFinal:!1,dict:this,transit:function(n){return this.dict.transit(this,n)},isError:!1,tag:"DICT",w:1,type:"DICT"}},transit:function(n,t){var e=this.dictSeek(n.l,n.r,t,n.strOffset,0);if(null!==e){var r=this.dictSeek(e,n.r,t,n.strOffset,1);n.l=e,n.r=r,n.strOffset++,n.isFinal=this.isFinal(n)}else n.isError=!0;return n},sortuniq:function(n){return n.sort().filter(function(n,t,e){return!t||n!=e[t-1]})},flatten:function(n){return[].concat.apply([],n)}});e.exports=n}).call(this,"/dist/tmp")},{glob:16,path:22}],3:[function(n,t,e){var r={tag:"SPACE_RULE",createAcceptor:function(n){return n.SPACE_RULE?null:{strOffset:0,isFinal:!1,transit:function(n){return" "==n||"\t"==n||"\r"==n||"\n"==n||" "==n||" "==n?(this.isFinal=!0,this.strOffset++):this.isError=!0,this},isError:!1,tag:r.tag,w:1,type:"SPACE_RULE"}}},i=[{createAcceptor:function(n){return n.WORD_RULE?null:{strOffset:0,isFinal:!1,transit:function(n){var t=n.toLowerCase();return"a"<=t&&t<="z"?(this.isFinal=!0,this.strOffset++):this.isError=!0,this},isError:!1,tag:"WORD_RULE",type:"WORD_RULE",w:1}}},r,{tag:"SINSYM",createAcceptor:function(n){return{strOffset:0,isFinal:!1,transit:function(n){return 0==this.strOffset&&n.match(/^[\@\(\)\/\,\-\."`]$/)?(this.isFinal=!0,this.strOffset++):this.isError=!0,this},isError:!1,tag:"SINSYM",w:1,type:"SINSYM"}}},{createAcceptor:function(n){return n.NUMBER_RULE?null:{strOffset:0,isFinal:!1,transit:function(n){return"0"<=n&&n<="9"?(this.isFinal=!0,this.strOffset++):this.isError=!0,this},isError:!1,tag:"NUMBER_RULE",type:"NUMBER_RULE",w:1}}}];t.exports=i},{}],4:[function(n,t,e){var r=n("underscore"),i=(n("./wordcut_core"),{buildByAcceptors:function(o,n,s){return n.map(function(n){var t=s-n.strOffset+1,e=o[t],r={p:t,mw:e.mw+(void 0===n.mw?0:n.mw),w:n.w+e.w,unk:(n.unk?n.unk:0)+e.unk,type:n.type};if("PART"==n.type){for(var i=t+1;i<=s;i++)o[i].merge=t;r.merge=t}return r}).filter(function(n){return n})},fallback:function(n,t,e,r){var i=n[t];return e[r].match(/[\u0E48-\u0E4E]/)?(0!=t&&(t=n[t].p),{p:t,mw:0,w:1+i.w,unk:1+i.unk,type:"UNK"}):{p:t,mw:i.mw,w:1+i.w,unk:1+i.unk,type:"UNK"}},build:function(n,t,e,r,i){var o=this.buildByAcceptors(n,t,e);return 0<o.length?o:[this.fallback(n,r,i,e)]}});t.exports=function(){return r.clone(i)}},{"./wordcut_core":8,underscore:25}],5:[function(n,t,e){var r=n("underscore"),i={selectPath:function(n){return n.reduce(function(n,t){if(null==n)return t;if(t.unk<n.unk)return t;if(t.unk==n.unk){if(t.mw<n.mw)return t;if(t.mw==n.mw&&t.w<n.w)return t}return n},null)},createPath:function(){return[{p:null,w:0,unk:0,type:"INIT",mw:0}]}};t.exports=function(){return r.clone(i)}},{underscore:25}],6:[function(n,t,e){function i(n,t,e){if(n.length<=t)return!1;var r=n[t];return r==e||r.match(/[กข]/)&&e.match(/[ก-ฮ]/)||r.match(/[มบ]/)&&e.match(/[ก-ฮ]/)||r.match(/\u0E49/)&&e.match(/[\u0E48-\u0E4B]/)}var r={pat:"เหก็ม",createAcceptor:function(n){return{strOffset:0,isFinal:!1,transit:function(n){return i(r.pat,this.strOffset,n)?(this.isFinal=this.strOffset+1==r.pat.length,this.strOffset++):this.isError=!0,this},isError:!1,tag:"THAI_RULE",type:"THAI_RULE",w:1}}},o=[r,{createAcceptor:function(n){return{strOffset:0,patterns:["แก","เก","ก้","กก์","กา","กี","กิ","กืก"],isFinal:!1,transit:function(t){var e=this.strOffset;if(this.patterns=this.patterns.filter(function(n){return i(n,e,t)}),0<this.patterns.length){var r=1+e;this.isFinal=this.patterns.some(function(n){return n.length==r}),this.strOffset++}else this.isError=!0;return this},isError:!1,tag:"PART",type:"PART",unk:1,w:1}}}];t.exports=o},{}],7:[function(n,t,e){n("sys");var r=n("./dict"),i=n("./wordcut_core"),o=n("./path_info_builder"),s=n("./path_selector"),a=n("./acceptors"),c=n("./latin_rules"),u=n("./thai_rules"),l=n("underscore"),f=Object.create(i);f.defaultPathInfoBuilder=o,f.defaultPathSelector=s,f.defaultAcceptors=a,f.defaultLatinRules=c,f.defaultThaiRules=u,f.defaultDict=r,f.initNoDict=function(n){var t=this;t.pathInfoBuilder=new t.defaultPathInfoBuilder,t.pathSelector=new t.defaultPathSelector,t.acceptors=new t.defaultAcceptors,t.defaultLatinRules.forEach(function(n){t.acceptors.creators.push(n)}),t.defaultThaiRules.forEach(function(n){t.acceptors.creators.push(n)})},f.init=function(n,t,e){t=t||!1,this.initNoDict();var r=l.clone(this.defaultDict);r.init(n,t,e),this.acceptors.creators.push(r)},t.exports=f},{"./acceptors":1,"./dict":2,"./latin_rules":3,"./path_info_builder":4,"./path_selector":5,"./thai_rules":6,"./wordcut_core":8,sys:28,underscore:25}],8:[function(n,t,e){var r={buildPath:function(n){var t=this,e=t.pathSelector.createPath(),r=0;t.acceptors.reset();for(var i=0;i<n.length;i++){var o=n[i];t.acceptors.transit(o);var s=t.pathInfoBuilder.build(e,t.acceptors.getFinalAcceptors(),i,r,n),a=t.pathSelector.selectPath(s);e.push(a),"UNK"!==a.type&&(r=i)}return e},pathToRanges:function(n){for(var t=n.length-1,e=[];0<t;){var r=n[t],i=r.p;if(void 0!==r.merge&&0<e.length){var o=e[e.length-1];o.s=r.merge,i=o.s}else e.push({s:i,e:t});t=i}return e.reverse()},rangesToText:function(t,n,e){return n.map(function(n){return t.substring(n.s,n.e)}).join(e)},cut:function(n,t){var e=this.buildPath(n),r=this.pathToRanges(e);return this.rangesToText(n,r,void 0===t?"|":t)},cutIntoRanges:function(t,n){var e=this.buildPath(t),r=this.pathToRanges(e);return n||r.forEach(function(n){n.text=t.substring(n.s,n.e)}),r},cutIntoArray:function(t){var n=this.buildPath(t);return this.pathToRanges(n).map(function(n){return t.substring(n.s,n.e)})}};t.exports=r},{}],9:[function(n,t,e){var c=n("util/"),u=Array.prototype.slice,r=Object.prototype.hasOwnProperty,o=t.exports=i;function l(n,t){return c.isUndefined(t)?""+t:c.isNumber(t)&&!isFinite(t)?t.toString():c.isFunction(t)||c.isRegExp(t)?t.toString():t}function f(n,t){return c.isString(n)?n.length<t?n:n.slice(0,t):n}function h(n,t,e,r,i){throw new o.AssertionError({message:e,actual:n,expected:t,operator:r,stackStartFunction:i})}function i(n,t){n||h(n,!0,t,"==",o.ok)}function p(n,t){if(n===t)return!0;if(c.isBuffer(n)&&c.isBuffer(t)){if(n.length!=t.length)return!1;for(var e=0;e<n.length;e++)if(n[e]!==t[e])return!1;return!0}return c.isDate(n)&&c.isDate(t)?n.getTime()===t.getTime():c.isRegExp(n)&&c.isRegExp(t)?n.source===t.source&&n.global===t.global&&n.multiline===t.multiline&&n.lastIndex===t.lastIndex&&n.ignoreCase===t.ignoreCase:c.isObject(n)||c.isObject(t)?function(n,t){if(c.isNullOrUndefined(n)||c.isNullOrUndefined(t))return!1;if(n.prototype!==t.prototype)return!1;if(c.isPrimitive(n)||c.isPrimitive(t))return n===t;var e=d(n),r=d(t);if(e&&!r||!e&&r)return!1;if(e)return n=u.call(n),t=u.call(t),p(n,t);var i,o,s=v(n),a=v(t);if(s.length!=a.length)return!1;for(s.sort(),a.sort(),o=s.length-1;0<=o;o--)if(s[o]!=a[o])return!1;for(o=s.length-1;0<=o;o--)if(i=s[o],!p(n[i],t[i]))return!1;return!0}(n,t):n==t}function d(n){return"[object Arguments]"==Object.prototype.toString.call(n)}function s(n,t){return!(!n||!t)&&("[object RegExp]"==Object.prototype.toString.call(t)?t.test(n):n instanceof t||!0===t.call({},n))}function a(n,t,e,r){var i;c.isString(e)&&(r=e,e=null);try{t()}catch(n){i=n}if(r=(e&&e.name?" ("+e.name+").":".")+(r?" "+r:"."),n&&!i&&h(i,e,"Missing expected exception"+r),!n&&s(i,e)&&h(i,e,"Got unwanted exception"+r),n&&i&&e&&!s(i,e)||!n&&i)throw i}o.AssertionError=function(n){var t;this.name="AssertionError",this.actual=n.actual,this.expected=n.expected,this.operator=n.operator,n.message?(this.message=n.message,this.generatedMessage=!1):(this.message=(t=this,f(JSON.stringify(t.actual,l),128)+" "+t.operator+" "+f(JSON.stringify(t.expected,l),128)),this.generatedMessage=!0);var e=n.stackStartFunction||h;if(Error.captureStackTrace)Error.captureStackTrace(this,e);else{var r=new Error;if(r.stack){var i=r.stack,o=e.name,s=i.indexOf("\n"+o);if(0<=s){var a=i.indexOf("\n",s+1);i=i.substring(a+1)}this.stack=i}}},c.inherits(o.AssertionError,Error),o.fail=h,o.ok=i,o.equal=function(n,t,e){n!=t&&h(n,t,e,"==",o.equal)},o.notEqual=function(n,t,e){n==t&&h(n,t,e,"!=",o.notEqual)},o.deepEqual=function(n,t,e){p(n,t)||h(n,t,e,"deepEqual",o.deepEqual)},o.notDeepEqual=function(n,t,e){p(n,t)&&h(n,t,e,"notDeepEqual",o.notDeepEqual)},o.strictEqual=function(n,t,e){n!==t&&h(n,t,e,"===",o.strictEqual)},o.notStrictEqual=function(n,t,e){n===t&&h(n,t,e,"!==",o.notStrictEqual)},o.throws=function(n,t,e){a.apply(this,[!0].concat(u.call(arguments)))},o.doesNotThrow=function(n,t){a.apply(this,[!1].concat(u.call(arguments)))},o.ifError=function(n){if(n)throw n};var v=Object.keys||function(n){var t=[];for(var e in n)r.call(n,e)&&t.push(e);return t}},{"util/":28}],10:[function(n,t,e){"use strict";function r(n,t,e){n instanceof RegExp&&(n=i(n,e)),t instanceof RegExp&&(t=i(t,e));var r=o(n,t,e);return r&&{start:r[0],end:r[1],pre:e.slice(0,r[0]),body:e.slice(r[0]+n.length,r[1]),post:e.slice(r[1]+t.length)}}function i(n,t){var e=t.match(n);return e?e[0]:null}function o(n,t,e){var r,i,o,s,a,c=e.indexOf(n),u=e.indexOf(t,c+1),l=c;if(0<=c&&0<u){for(r=[],o=e.length;0<=l&&!a;)l==c?(r.push(l),c=e.indexOf(n,l+1)):1==r.length?a=[r.pop(),u]:((i=r.pop())<o&&(o=i,s=u),u=e.indexOf(t,l+1)),l=c<u&&0<=c?c:u;r.length&&(a=[o,s])}return a}(t.exports=r).range=o},{}],11:[function(n,t,e){var k=n("concat-map"),S=n("balanced-match");t.exports=function(n){if(!n)return[];"{}"===n.substr(0,2)&&(n="\\{\\}"+n.substr(2));return function t(n,e){var r=[];var i=S("{","}",n);if(!i||/\$$/.test(i.pre))return[n];var o=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(i.body);var s=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(i.body);var a=o||s;var c=0<=i.body.indexOf(",");if(!a&&!c)return i.post.match(/,.*\}/)?(n=i.pre+"{"+i.body+R+i.post,t(n)):[n];var u;if(a)u=i.body.split(/\.\./);else if(1===(u=T(i.body)).length&&1===(u=t(u[0],!1).map(I)).length){var l=i.post.length?t(i.post,!1):[""];return l.map(function(n){return i.pre+u[0]+n})}var f=i.pre;var l=i.post.length?t(i.post,!1):[""];var h;if(a){var p=L(u[0]),d=L(u[1]),v=Math.max(u[0].length,u[1].length),g=3==u.length?Math.abs(L(u[2])):1,m=D,y=d<p;y&&(g*=-1,m=F);var b=u.some(N);h=[];for(var _=p;m(_,d);_+=g){var w;if(s)"\\"===(w=String.fromCharCode(_))&&(w="");else if(w=String(_),b){var E=v-w.length;if(0<E){var O=new Array(E+1).join("0");w=_<0?"-"+O+w.slice(1):O+w}}h.push(w)}}else h=k(u,function(n){return t(n,!1)});for(var A=0;A<h.length;A++)for(var x=0;x<l.length;x++){var j=f+h[A]+l[x];(!e||a||j)&&r.push(j)}return r}((t=n,t.split("\\\\").join(r).split("\\{").join(i).split("\\}").join(R).split("\\,").join(o).split("\\.").join(s)),!0).map(a);var t};var r="\0SLASH"+Math.random()+"\0",i="\0OPEN"+Math.random()+"\0",R="\0CLOSE"+Math.random()+"\0",o="\0COMMA"+Math.random()+"\0",s="\0PERIOD"+Math.random()+"\0";function L(n){return parseInt(n,10)==n?parseInt(n,10):n.charCodeAt(0)}function a(n){return n.split(r).join("\\").split(i).join("{").split(R).join("}").split(o).join(",").split(s).join(".")}function T(n){if(!n)return[""];var t=[],e=S("{","}",n);if(!e)return n.split(",");var r=e.pre,i=e.body,o=e.post,s=r.split(",");s[s.length-1]+="{"+i+"}";var a=T(o);return o.length&&(s[s.length-1]+=a.shift(),s.push.apply(s,a)),t.push.apply(t,s),t}function I(n){return"{"+n+"}"}function N(n){return/^-?0\d/.test(n)}function D(n,t){return n<=t}function F(n,t){return t<=n}},{"balanced-match":10,"concat-map":13}],12:[function(n,t,e){},{}],13:[function(n,t,e){t.exports=function(n,t){for(var e=[],r=0;r<n.length;r++){var i=t(n[r],r);o(i)?e.push.apply(e,i):e.push(i)}return e};var o=Array.isArray||function(n){return"[object Array]"===Object.prototype.toString.call(n)}},{}],14:[function(n,t,e){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function a(n){return"function"==typeof n}function c(n){return"object"==typeof n&&null!==n}function u(n){return void 0===n}((t.exports=r).EventEmitter=r).prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(n){if("number"!=typeof n||n<0||isNaN(n))throw TypeError("n must be a positive number");return this._maxListeners=n,this},r.prototype.emit=function(n){var t,e,r,i,o,s;if(this._events||(this._events={}),"error"===n&&(!this._events.error||c(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;throw TypeError('Uncaught, unspecified "error" event.')}if(u(e=this._events[n]))return!1;if(a(e))switch(arguments.length){case 1:e.call(this);break;case 2:e.call(this,arguments[1]);break;case 3:e.call(this,arguments[1],arguments[2]);break;default:for(r=arguments.length,i=new Array(r-1),o=1;o<r;o++)i[o-1]=arguments[o];e.apply(this,i)}else if(c(e)){for(r=arguments.length,i=new Array(r-1),o=1;o<r;o++)i[o-1]=arguments[o];for(r=(s=e.slice()).length,o=0;o<r;o++)s[o].apply(this,i)}return!0},r.prototype.on=r.prototype.addListener=function(n,t){var e;if(!a(t))throw TypeError("listener must be a function");(this._events||(this._events={}),this._events.newListener&&this.emit("newListener",n,a(t.listener)?t.listener:t),this._events[n]?c(this._events[n])?this._events[n].push(t):this._events[n]=[this._events[n],t]:this._events[n]=t,c(this._events[n])&&!this._events[n].warned)&&((e=u(this._maxListeners)?r.defaultMaxListeners:this._maxListeners)&&0<e&&this._events[n].length>e&&(this._events[n].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[n].length),"function"==typeof console.trace&&console.trace()));return this},r.prototype.once=function(n,t){if(!a(t))throw TypeError("listener must be a function");var e=!1;function r(){this.removeListener(n,r),e||(e=!0,t.apply(this,arguments))}return r.listener=t,this.on(n,r),this},r.prototype.removeListener=function(n,t){var e,r,i,o;if(!a(t))throw TypeError("listener must be a function");if(!this._events||!this._events[n])return this;if(i=(e=this._events[n]).length,r=-1,e===t||a(e.listener)&&e.listener===t)delete this._events[n],this._events.removeListener&&this.emit("removeListener",n,t);else if(c(e)){for(o=i;0<o--;)if(e[o]===t||e[o].listener&&e[o].listener===t){r=o;break}if(r<0)return this;1===e.length?(e.length=0,delete this._events[n]):e.splice(r,1),this._events.removeListener&&this.emit("removeListener",n,t)}return this},r.prototype.removeAllListeners=function(n){var t,e;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[n]&&delete this._events[n],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(a(e=this._events[n]))this.removeListener(n,e);else for(;e.length;)this.removeListener(n,e[e.length-1]);return delete this._events[n],this},r.prototype.listeners=function(n){return this._events&&this._events[n]?a(this._events[n])?[this._events[n]]:this._events[n].slice():[]},r.listenerCount=function(n,t){return n._events&&n._events[t]?a(n._events[t])?1:n._events[t].length:0}},{}],15:[function(t,n,p){(function(i){function o(n,t){return Object.prototype.hasOwnProperty.call(n,t)}p.alphasort=u,p.alphasorti=c,p.setopts=function(n,t,e){e||(e={});if(e.matchBase&&-1===t.indexOf("/")){if(e.noglobstar)throw new Error("base matching requires globstar");t="**/"+t}n.silent=!!e.silent,n.pattern=t,n.strict=!1!==e.strict,n.realpath=!!e.realpath,n.realpathCache=e.realpathCache||Object.create(null),n.follow=!!e.follow,n.dot=!!e.dot,n.mark=!!e.mark,n.nodir=!!e.nodir,n.nodir&&(n.mark=!0);n.sync=!!e.sync,n.nounique=!!e.nounique,n.nonull=!!e.nonull,n.nosort=!!e.nosort,n.nocase=!!e.nocase,n.stat=!!e.stat,n.noprocess=!!e.noprocess,n.maxLength=e.maxLength||1/0,n.cache=e.cache||Object.create(null),n.statCache=e.statCache||Object.create(null),n.symlinks=e.symlinks||Object.create(null),function(n,t){n.ignore=t.ignore||[],Array.isArray(n.ignore)||(n.ignore=[n.ignore]);n.ignore.length&&(n.ignore=n.ignore.map(l))}(n,e),n.changedCwd=!1;var r=i.cwd();o(e,"cwd")?(n.cwd=e.cwd,n.changedCwd=s.resolve(e.cwd)!==r):n.cwd=r;n.root=e.root||s.resolve(n.cwd,"/"),n.root=s.resolve(n.root),"win32"===i.platform&&(n.root=n.root.replace(/\\/g,"/"));n.nomount=!!e.nomount,e.nonegate=!1!==e.nonegate,e.nocomment=!1!==e.nocomment,function(n){if(!(n.nonegate&&n.nocomment||!0===i.noDeprecation||p.deprecationWarned)){var t="glob WARNING: comments and negation will be disabled in v6";if(i.throwDeprecation)throw new Error(t);i.traceDeprecation?console.trace(t):console.error(t),p.deprecationWarned=!0}}(e),n.minimatch=new a(t,e),n.options=n.minimatch.options},p.ownProp=o,p.makeAbs=f,p.finish=function(t){for(var n=t.nounique,e=n?[]:Object.create(null),r=0,i=t.matches.length;r<i;r++){var o=t.matches[r];if(o&&0!==Object.keys(o).length){var s=Object.keys(o);n?e.push.apply(e,s):s.forEach(function(n){e[n]=!0})}else if(t.nonull){var a=t.minimatch.globSet[r];n?e.push(a):e[a]=!0}}n||(e=Object.keys(e));t.nosort||(e=e.sort(t.nocase?c:u));if(t.mark){for(var r=0;r<e.length;r++)e[r]=t._mark(e[r]);t.nodir&&(e=e.filter(function(n){return!/\/$/.test(n)}))}t.ignore.length&&(e=e.filter(function(n){return!h(t,n)}));t.found=e},p.mark=function(n,t){var e=f(n,t),r=n.cache[e],i=t;if(r){var o="DIR"===r||Array.isArray(r),s="/"===t.slice(-1);if(o&&!s?i+="/":!o&&s&&(i=i.slice(0,-1)),i!==t){var a=f(n,i);n.statCache[a]=n.statCache[e],n.cache[a]=n.cache[e]}}return i},p.isIgnored=h,p.childrenIgnored=function(n,t){return!!n.ignore.length&&n.ignore.some(function(n){return!(!n.gmatcher||!n.gmatcher.match(t))})};var s=t("path"),n=t("minimatch"),e=t("path-is-absolute"),a=n.Minimatch;function c(n,t){return n.toLowerCase().localeCompare(t.toLowerCase())}function u(n,t){return n.localeCompare(t)}function l(n){var t=null;if("/**"===n.slice(-3)){var e=n.replace(/(\/\*\*)+$/,"");t=new a(e)}return{matcher:new a(n),gmatcher:t}}function f(n,t){return"/"===t.charAt(0)?s.join(n.root,t):e(t)||""===t?t:n.changedCwd?s.resolve(n.cwd,t):s.resolve(t)}function h(n,t){return!!n.ignore.length&&n.ignore.some(function(n){return n.matcher.match(t)||!(!n.gmatcher||!n.gmatcher.match(t))})}p.deprecationWarned}).call(this,t("_process"))},{_process:24,minimatch:20,path:22,"path-is-absolute":23}],16:[function(_,w,n){(function(s){w.exports=i;var u=_("fs"),l=_("minimatch"),n=(l.Minimatch,_("inherits")),t=_("events").EventEmitter,g=_("path"),f=_("assert"),h=_("path-is-absolute"),r=_("./sync.js"),e=_("./common.js"),a=(e.alphasort,e.alphasorti,e.setopts),p=e.ownProp,d=_("inflight"),o=_("util"),v=e.childrenIgnored,c=e.isIgnored,m=_("once");function i(n,t,e){if("function"==typeof t&&(e=t,t={}),t||(t={}),t.sync){if(e)throw new TypeError("callback provided to sync glob");return r(n,t)}return new b(n,t,e)}i.sync=r;var y=i.GlobSync=r.GlobSync;function b(n,t,e){if("function"==typeof t&&(e=t,t=null),t&&t.sync){if(e)throw new TypeError("callback provided to sync glob");return new y(n,t)}if(!(this instanceof b))return new b(n,t,e);a(this,n,t),this._didRealPath=!1;var r=this.minimatch.set.length;this.matches=new Array(r),"function"==typeof e&&(e=m(e),this.on("error",e),this.on("end",function(n){e(null,n)}));var i=this;r=this.minimatch.set.length;if(this._processing=0,this.matches=new Array(r),this._emitQueue=[],this._processQueue=[],this.paused=!1,this.noprocess)return this;if(0===r)return s();for(var o=0;o<r;o++)this._process(this.minimatch.set[o],o,!1,s);function s(){--i._processing,i._processing<=0&&i._finish()}}(i.glob=i).hasMagic=function(n,t){var e=o._extend({},t);e.noprocess=!0;var r=new b(n,e).minimatch.set;if(1<r.length)return!0;for(var i=0;i<r[0].length;i++)if("string"!=typeof r[0][i])return!0;return!1},n(i.Glob=b,t),b.prototype._finish=function(){if(f(this instanceof b),!this.aborted){if(this.realpath&&!this._didRealpath)return this._realpath();e.finish(this),this.emit("end",this.found)}},b.prototype._realpath=function(){if(!this._didRealpath){this._didRealpath=!0;var n=this.matches.length;if(0===n)return this._finish();for(var t=this,e=0;e<this.matches.length;e++)this._realpathSet(e,r)}function r(){0==--n&&t._finish()}},b.prototype._realpathSet=function(r,i){var n=this.matches[r];if(!n)return i();var t=Object.keys(n),o=this,s=t.length;if(0===s)return i();var a=this.matches[r]=Object.create(null);t.forEach(function(e,n){e=o._makeAbs(e),u.realpath(e,o.realpathCache,function(n,t){n?"stat"===n.syscall?a[e]=!0:o.emit("error",n):a[t]=!0,0==--s&&(o.matches[r]=a,i())})})},b.prototype._mark=function(n){return e.mark(this,n)},b.prototype._makeAbs=function(n){return e.makeAbs(this,n)},b.prototype.abort=function(){this.aborted=!0,this.emit("abort")},b.prototype.pause=function(){this.paused||(this.paused=!0,this.emit("pause"))},b.prototype.resume=function(){if(this.paused){if(this.emit("resume"),this.paused=!1,this._emitQueue.length)for(var n=this._emitQueue.slice(0),t=this._emitQueue.length=0;t<n.length;t++){var e=n[t];this._emitMatch(e[0],e[1])}if(this._processQueue.length){var r=this._processQueue.slice(0);for(t=this._processQueue.length=0;t<r.length;t++){var i=r[t];this._processing--,this._process(i[0],i[1],i[2],i[3])}}}},b.prototype._process=function(n,t,e,r){if(f(this instanceof b),f("function"==typeof r),!this.aborted)if(this._processing++,this.paused)this._processQueue.push([n,t,e,r]);else{for(var i,o=0;"string"==typeof n[o];)o++;switch(o){case n.length:return void this._processSimple(n.join("/"),t,r);case 0:i=null;break;default:i=n.slice(0,o).join("/")}var s,a=n.slice(o);s=null===i?".":((h(i)||h(n.join("/")))&&(i&&h(i)||(i="/"+i)),i);var c=this._makeAbs(s);if(v(this,s))return r();a[0]===l.GLOBSTAR?this._processGlobStar(i,s,c,a,t,e,r):this._processReaddir(i,s,c,a,t,e,r)}},b.prototype._processReaddir=function(e,r,i,o,s,a,c){var u=this;this._readdir(i,a,function(n,t){return u._processReaddir2(e,r,i,o,s,a,t,c)})},b.prototype._processReaddir2=function(n,t,e,r,i,o,s,a){if(!s)return a();for(var c=r[0],u=!!this.minimatch.negate,l=c._glob,f=this.dot||"."===l.charAt(0),h=[],p=0;p<s.length;p++){if("."!==(v=s[p]).charAt(0)||f)(u&&!n?!v.match(c):v.match(c))&&h.push(v)}var d=h.length;if(0===d)return a();if(1===r.length&&!this.mark&&!this.stat){this.matches[i]||(this.matches[i]=Object.create(null));for(p=0;p<d;p++){var v=h[p];n&&(v="/"!==n?n+"/"+v:n+v),"/"!==v.charAt(0)||this.nomount||(v=g.join(this.root,v)),this._emitMatch(i,v)}return a()}r.shift();for(p=0;p<d;p++){v=h[p];n&&(v="/"!==n?n+"/"+v:n+v),this._process([v].concat(r),i,o,a)}a()},b.prototype._emitMatch=function(n,t){if(!this.aborted&&!this.matches[n][t]&&!c(this,t))if(this.paused)this._emitQueue.push([n,t]);else{var e=this._makeAbs(t);if(this.nodir){var r=this.cache[e];if("DIR"===r||Array.isArray(r))return}this.mark&&(t=this._mark(t)),this.matches[n][t]=!0;var i=this.statCache[e];i&&this.emit("stat",t,i),this.emit("match",t)}},b.prototype._readdirInGlobStar=function(r,i){if(!this.aborted){if(this.follow)return this._readdir(r,!1,i);var o=this,n=d("lstat\0"+r,function(n,t){if(n)return i();var e=t.isSymbolicLink();(o.symlinks[r]=e)||t.isDirectory()?o._readdir(r,!1,i):(o.cache[r]="FILE",i())});n&&u.lstat(r,n)}},b.prototype._readdir=function(n,t,e){if(!this.aborted&&(e=d("readdir\0"+n+"\0"+t,e))){if(t&&!p(this.symlinks,n))return this._readdirInGlobStar(n,e);if(p(this.cache,n)){var r=this.cache[n];if(!r||"FILE"===r)return e();if(Array.isArray(r))return e(null,r)}var i,o,s;u.readdir(n,(i=this,o=n,s=e,function(n,t){n?i._readdirError(o,n,s):i._readdirEntries(o,t,s)}))}},b.prototype._readdirEntries=function(n,t,e){if(!this.aborted){if(!this.mark&&!this.stat)for(var r=0;r<t.length;r++){var i=t[r];i="/"===n?n+i:n+"/"+i,this.cache[i]=!0}return e(null,this.cache[n]=t)}},b.prototype._readdirError=function(n,t,e){if(!this.aborted){switch(t.code){case"ENOTSUP":case"ENOTDIR":this.cache[this._makeAbs(n)]="FILE";break;case"ENOENT":case"ELOOP":case"ENAMETOOLONG":case"UNKNOWN":this.cache[this._makeAbs(n)]=!1;break;default:this.cache[this._makeAbs(n)]=!1,this.strict&&(this.emit("error",t),this.abort()),this.silent||console.error("glob error",t)}return e()}},b.prototype._processGlobStar=function(e,r,i,o,s,a,c){var u=this;this._readdir(i,a,function(n,t){u._processGlobStar2(e,r,i,o,s,a,t,c)})},b.prototype._processGlobStar2=function(n,t,e,r,i,o,s,a){if(!s)return a();var c=r.slice(1),u=n?[n]:[],l=u.concat(c);this._process(l,i,!1,a);var f=this.symlinks[e],h=s.length;if(f&&o)return a();for(var p=0;p<h;p++){if("."!==s[p].charAt(0)||this.dot){var d=u.concat(s[p],c);this._process(d,i,!0,a);var v=u.concat(s[p],r);this._process(v,i,!0,a)}}a()},b.prototype._processSimple=function(e,r,i){var o=this;this._stat(e,function(n,t){o._processSimple2(e,r,n,t,i)})},b.prototype._processSimple2=function(n,t,e,r,i){if(this.matches[t]||(this.matches[t]=Object.create(null)),!r)return i();if(n&&h(n)&&!this.nomount){var o=/[\/\\]$/.test(n);"/"===n.charAt(0)?n=g.join(this.root,n):(n=g.resolve(this.root,n),o&&(n+="/"))}"win32"===s.platform&&(n=n.replace(/\\/g,"/")),this._emitMatch(t,n),i()},b.prototype._stat=function(r,i){var o=this._makeAbs(r),n="/"===r.slice(-1);if(r.length>this.maxLength)return i();if(!this.stat&&p(this.cache,o)){var t=this.cache[o];if(Array.isArray(t)&&(t="DIR"),!n||"DIR"===t)return i(null,t);if(n&&"FILE"===t)return i()}var e=this.statCache[o];if(void 0!==e){if(!1===e)return i(null,e);var s=e.isDirectory()?"DIR":"FILE";return n&&"FILE"===s?i():i(null,s,e)}var a=this,c=d("stat\0"+o,function(n,e){{if(e&&e.isSymbolicLink())return u.stat(o,function(n,t){n?a._stat2(r,o,null,e,i):a._stat2(r,o,n,t,i)});a._stat2(r,o,n,e,i)}});c&&u.lstat(o,c)},b.prototype._stat2=function(n,t,e,r,i){if(e)return this.statCache[t]=!1,i();var o="/"===n.slice(-1);if(this.statCache[t]=r,"/"===t.slice(-1)&&!r.isDirectory())return i(null,!1,r);var s=r.isDirectory()?"DIR":"FILE";return this.cache[t]=this.cache[t]||s,o&&"DIR"!==s?i():i(null,s,r)}}).call(this,_("_process"))},{"./common.js":15,"./sync.js":17,_process:24,assert:9,events:14,fs:12,inflight:18,inherits:19,minimatch:20,once:21,path:22,"path-is-absolute":23,util:28}],17:[function(e,r,n){(function(i){(r.exports=n).GlobSync=h;var s=e("fs"),c=e("minimatch"),g=(c.Minimatch,e("./glob.js").Glob,e("util"),e("path")),u=e("assert"),l=e("path-is-absolute"),t=e("./common.js"),o=(t.alphasort,t.alphasorti,t.setopts),a=t.ownProp,f=t.childrenIgnored;function n(n,t){if("function"==typeof t||3===arguments.length)throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167");return new h(n,t).found}function h(n,t){if(!n)throw new Error("must provide pattern");if("function"==typeof t||3===arguments.length)throw new TypeError("callback provided to sync glob\nSee: https://github.com/isaacs/node-glob/issues/167");if(!(this instanceof h))return new h(n,t);if(o(this,n,t),this.noprocess)return this;var e=this.minimatch.set.length;this.matches=new Array(e);for(var r=0;r<e;r++)this._process(this.minimatch.set[r],r,!1);this._finish()}h.prototype._finish=function(){if(u(this instanceof h),this.realpath){var i=this;this.matches.forEach(function(n,t){var e=i.matches[t]=Object.create(null);for(var r in n)try{r=i._makeAbs(r),e[s.realpathSync(r,i.realpathCache)]=!0}catch(n){if("stat"!==n.syscall)throw n;e[i._makeAbs(r)]=!0}})}t.finish(this)},h.prototype._process=function(n,t,e){u(this instanceof h);for(var r,i=0;"string"==typeof n[i];)i++;switch(i){case n.length:return void this._processSimple(n.join("/"),t);case 0:r=null;break;default:r=n.slice(0,i).join("/")}var o,s=n.slice(i);o=null===r?".":((l(r)||l(n.join("/")))&&(r&&l(r)||(r="/"+r)),r);var a=this._makeAbs(o);f(this,o)||(s[0]===c.GLOBSTAR?this._processGlobStar(r,o,a,s,t,e):this._processReaddir(r,o,a,s,t,e))},h.prototype._processReaddir=function(n,t,e,r,i,o){var s=this._readdir(e,o);if(s){for(var a=r[0],c=!!this.minimatch.negate,u=a._glob,l=this.dot||"."===u.charAt(0),f=[],h=0;h<s.length;h++){if("."!==(v=s[h]).charAt(0)||l)(c&&!n?!v.match(a):v.match(a))&&f.push(v)}var p=f.length;if(0!==p)if(1!==r.length||this.mark||this.stat){r.shift();for(h=0;h<p;h++){var d;v=f[h];d=n?[n,v]:[v],this._process(d.concat(r),i,o)}}else{this.matches[i]||(this.matches[i]=Object.create(null));for(var h=0;h<p;h++){var v=f[h];n&&(v="/"!==n.slice(-1)?n+"/"+v:n+v),"/"!==v.charAt(0)||this.nomount||(v=g.join(this.root,v)),this.matches[i][v]=!0}}}},h.prototype._emitMatch=function(n,t){this._makeAbs(t);if(this.mark&&(t=this._mark(t)),!this.matches[n][t]){if(this.nodir){var e=this.cache[this._makeAbs(t)];if("DIR"===e||Array.isArray(e))return}this.matches[n][t]=!0,this.stat&&this._stat(t)}},h.prototype._readdirInGlobStar=function(n){if(this.follow)return this._readdir(n,!1);var t,e;try{e=s.lstatSync(n)}catch(n){return null}var r=e.isSymbolicLink();return(this.symlinks[n]=r)||e.isDirectory()?t=this._readdir(n,!1):this.cache[n]="FILE",t},h.prototype._readdir=function(t,n){if(n&&!a(this.symlinks,t))return this._readdirInGlobStar(t);if(a(this.cache,t)){var e=this.cache[t];if(!e||"FILE"===e)return null;if(Array.isArray(e))return e}try{return this._readdirEntries(t,s.readdirSync(t))}catch(n){return this._readdirError(t,n),null}},h.prototype._readdirEntries=function(n,t){if(!this.mark&&!this.stat)for(var e=0;e<t.length;e++){var r=t[e];r="/"===n?n+r:n+"/"+r,this.cache[r]=!0}return this.cache[n]=t},h.prototype._readdirError=function(n,t){switch(t.code){case"ENOTSUP":case"ENOTDIR":this.cache[this._makeAbs(n)]="FILE";break;case"ENOENT":case"ELOOP":case"ENAMETOOLONG":case"UNKNOWN":this.cache[this._makeAbs(n)]=!1;break;default:if(this.cache[this._makeAbs(n)]=!1,this.strict)throw t;this.silent||console.error("glob error",t)}},h.prototype._processGlobStar=function(n,t,e,r,i,o){var s=this._readdir(e,o);if(s){var a=r.slice(1),c=n?[n]:[],u=c.concat(a);this._process(u,i,!1);var l=s.length;if(!this.symlinks[e]||!o)for(var f=0;f<l;f++){if("."!==s[f].charAt(0)||this.dot){var h=c.concat(s[f],a);this._process(h,i,!0);var p=c.concat(s[f],r);this._process(p,i,!0)}}}},h.prototype._processSimple=function(n,t){var e=this._stat(n);if(this.matches[t]||(this.matches[t]=Object.create(null)),e){if(n&&l(n)&&!this.nomount){var r=/[\/\\]$/.test(n);"/"===n.charAt(0)?n=g.join(this.root,n):(n=g.resolve(this.root,n),r&&(n+="/"))}"win32"===i.platform&&(n=n.replace(/\\/g,"/")),this.matches[t][n]=!0}},h.prototype._stat=function(n){var t=this._makeAbs(n),e="/"===n.slice(-1);if(n.length>this.maxLength)return!1;if(!this.stat&&a(this.cache,t)){var r=this.cache[t];if(Array.isArray(r)&&(r="DIR"),!e||"DIR"===r)return r;if(e&&"FILE"===r)return!1}var i=this.statCache[t];if(!i){var o;try{o=s.lstatSync(t)}catch(n){return!1}if(o.isSymbolicLink())try{i=s.statSync(t)}catch(n){i=o}else i=o}r=(this.statCache[t]=i).isDirectory()?"DIR":"FILE";return this.cache[t]=this.cache[t]||r,(!e||"DIR"===r)&&r},h.prototype._mark=function(n){return t.mark(this,n)},h.prototype._makeAbs=function(n){return t.makeAbs(this,n)}}).call(this,e("_process"))},{"./common.js":15,"./glob.js":16,_process:24,assert:9,fs:12,minimatch:20,path:22,"path-is-absolute":23,util:28}],18:[function(t,r,n){(function(s){var n=t("wrappy"),a=Object.create(null),e=t("once");r.exports=n(function(n,t){return a[n]?(a[n].push(t),null):(a[n]=[t],o=n,e(function n(){var t=a[o],e=t.length,r=function(n){for(var t=n.length,e=[],r=0;r<t;r++)e[r]=n[r];return e}(arguments);try{for(var i=0;i<e;i++)t[i].apply(null,r)}finally{t.length>e?(t.splice(0,e),s.nextTick(function(){n.apply(null,r)})):delete a[o]}}));var o})}).call(this,t("_process"))},{_process:24,once:21,wrappy:29}],19:[function(n,t,e){"function"==typeof Object.create?t.exports=function(n,t){n.super_=t,n.prototype=Object.create(t.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(n,t){n.super_=t;var e=function(){};e.prototype=t.prototype,n.prototype=new e,n.prototype.constructor=n}},{}],20:[function(n,t,e){(t.exports=s).Minimatch=i;var u={sep:"/"};try{u=n("path")}catch(n){}var M=s.GLOBSTAR=i.GLOBSTAR={},r=n("brace-expansion"),C={"!":{open:"(?:(?!(?:",close:"))[^/]*?)"},"?":{open:"(?:",close:")?"},"+":{open:"(?:",close:")+"},"*":{open:"(?:",close:")*"},"@":{open:"(?:",close:")"}},P="[^/]",z=P+"*?",B="().*{}+?[]^$\\!".split("").reduce(function(n,t){return n[t]=!0,n},{});var l=/\/+/;function o(t,e){t=t||{},e=e||{};var r={};return Object.keys(e).forEach(function(n){r[n]=e[n]}),Object.keys(t).forEach(function(n){r[n]=t[n]}),r}function s(n,t,e){if("string"!=typeof t)throw new TypeError("glob pattern string required");return e||(e={}),!(!e.nocomment&&"#"===t.charAt(0))&&(""===t.trim()?""===n:new i(t,e).match(n))}function i(n,t){if(!(this instanceof i))return new i(n,t);if("string"!=typeof n)throw new TypeError("glob pattern string required");t||(t={}),n=n.trim(),"/"!==u.sep&&(n=n.split(u.sep).join("/")),this.options=t,this.set=[],this.pattern=n,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.make()}function a(n,t){if(t||(t=this instanceof i?this.options:{}),void 0===(n=void 0===n?this.pattern:n))throw new TypeError("undefined pattern");return t.nobrace||!n.match(/\{.*\}/)?[n]:r(n)}s.filter=function(r,i){return i=i||{},function(n,t,e){return s(n,r,i)}},s.defaults=function(r){if(!r||!Object.keys(r).length)return s;var i=s,n=function(n,t,e){return i.minimatch(n,t,o(r,e))};return n.Minimatch=function(n,t){return new i.Minimatch(n,o(r,t))},n},i.defaults=function(n){return n&&Object.keys(n).length?s.defaults(n).Minimatch:i},i.prototype.debug=function(){},i.prototype.make=function(){if(this._made)return;var n=this.pattern,t=this.options;if(!t.nocomment&&"#"===n.charAt(0))return void(this.comment=!0);if(!n)return void(this.empty=!0);this.parseNegate();var e=this.globSet=this.braceExpand();t.debug&&(this.debug=console.error);this.debug(this.pattern,e),e=this.globParts=e.map(function(n){return n.split(l)}),this.debug(this.pattern,e),e=e.map(function(n,t,e){return n.map(this.parse,this)},this),this.debug(this.pattern,e),e=e.filter(function(n){return-1===n.indexOf(!1)}),this.debug(this.pattern,e),this.set=e},i.prototype.parseNegate=function(){var n=this.pattern,t=!1,e=this.options,r=0;if(e.nonegate)return;for(var i=0,o=n.length;i<o&&"!"===n.charAt(i);i++)t=!t,r++;r&&(this.pattern=n.substr(r));this.negate=t},s.braceExpand=function(n,t){return a(n,t)},i.prototype.braceExpand=a,i.prototype.parse=function(n,t){if(65536<n.length)throw new TypeError("pattern is too long");var e=this.options;if(!e.noglobstar&&"**"===n)return M;if(""===n)return"";var r,i="",o=!!e.nocase,s=!1,a=[],c=[],u=!1,l=-1,f=-1,h="."===n.charAt(0)?"":e.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",p=this;function d(){if(r){switch(r){case"*":i+=z,o=!0;break;case"?":i+=P,o=!0;break;default:i+="\\"+r}p.debug("clearStateChar %j %j",r,i),r=!1}}for(var v,g=0,m=n.length;g<m&&(v=n.charAt(g));g++)if(this.debug("%s\t%s %s %j",n,g,i,v),s&&B[v])i+="\\"+v,s=!1;else switch(v){case"/":return!1;case"\\":d(),s=!0;continue;case"?":case"*":case"+":case"@":case"!":if(this.debug("%s\t%s %s %j <-- stateChar",n,g,i,v),u){this.debug("  in class"),"!"===v&&g===f+1&&(v="^"),i+=v;continue}p.debug("call clearStateChar %j",r),d(),r=v,e.noext&&d();continue;case"(":if(u){i+="(";continue}if(!r){i+="\\(";continue}a.push({type:r,start:g-1,reStart:i.length,open:C[r].open,close:C[r].close}),i+="!"===r?"(?:(?!(?:":"(?:",this.debug("plType %j %j",r,i),r=!1;continue;case")":if(u||!a.length){i+="\\)";continue}d(),o=!0;var y=a.pop();i+=y.close,"!"===y.type&&c.push(y),y.reEnd=i.length;continue;case"|":if(u||!a.length||s){i+="\\|",s=!1;continue}d(),i+="|";continue;case"[":if(d(),u){i+="\\"+v;continue}u=!0,f=g,l=i.length,i+=v;continue;case"]":if(g===f+1||!u){i+="\\"+v,s=!1;continue}if(u){var b=n.substring(f+1,g);try{RegExp("["+b+"]")}catch(n){var _=this.parse(b,U);i=i.substr(0,l)+"\\["+_[0]+"\\]",o=o||_[1],u=!1;continue}}u=!(o=!0),i+=v;continue;default:d(),s?s=!1:!B[v]||"^"===v&&u||(i+="\\"),i+=v}u&&(b=n.substr(f+1),_=this.parse(b,U),i=i.substr(0,l)+"\\["+_[0],o=o||_[1]);for(y=a.pop();y;y=a.pop()){var w=i.slice(y.reStart+y.open.length);this.debug("setting tail",i,y),w=w.replace(/((?:\\{2}){0,64})(\\?)\|/g,function(n,t,e){return e||(e="\\"),t+t+e+"|"}),this.debug("tail=%j\n   %s",w,w,y,i);var E="*"===y.type?z:"?"===y.type?P:"\\"+y.type;o=!0,i=i.slice(0,y.reStart)+E+"\\("+w}d(),s&&(i+="\\\\");var O=!1;switch(i.charAt(0)){case".":case"[":case"(":O=!0}for(var A=c.length-1;-1<A;A--){var x=c[A],j=i.slice(0,x.reStart),k=i.slice(x.reStart,x.reEnd-8),S=i.slice(x.reEnd-8,x.reEnd),R=i.slice(x.reEnd);S+=R;var L=j.split("(").length-1,T=R;for(g=0;g<L;g++)T=T.replace(/\)[+*?]?/,"");var I="";""===(R=T)&&t!==U&&(I="$");var N=j+k+R+I+S;i=N}""!==i&&o&&(i="(?=.)"+i);O&&(i=h+i);if(t===U)return[i,o];if(!o)return n.replace(/\\(.)/g,"$1");var D=e.nocase?"i":"";try{var F=new RegExp("^"+i+"$",D)}catch(n){return new RegExp("$.")}return F._glob=n,F._src=i,F};var U={};s.makeRe=function(n,t){return new i(n,t||{}).makeRe()},i.prototype.makeRe=function(){if(this.regexp||!1===this.regexp)return this.regexp;var n=this.set;if(!n.length)return this.regexp=!1,this.regexp;var t=this.options,e=t.noglobstar?z:t.dot?"(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?":"(?:(?!(?:\\/|^)\\.).)*?",r=t.nocase?"i":"",i=n.map(function(n){return n.map(function(n){return n===M?e:"string"==typeof n?n.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):n._src}).join("\\/")}).join("|");i="^(?:"+i+")$",this.negate&&(i="^(?!"+i+").*$");try{this.regexp=new RegExp(i,r)}catch(n){this.regexp=!1}return this.regexp},s.match=function(n,t,e){var r=new i(t,e=e||{});return n=n.filter(function(n){return r.match(n)}),r.options.nonull&&!n.length&&n.push(t),n},i.prototype.match=function(n,t){if(this.debug("match",n,this.pattern),this.comment)return!1;if(this.empty)return""===n;if("/"===n&&t)return!0;var e=this.options;"/"!==u.sep&&(n=n.split(u.sep).join("/"));n=n.split(l),this.debug(this.pattern,"split",n);var r,i,o=this.set;for(this.debug(this.pattern,"set",o),i=n.length-1;0<=i&&!(r=n[i]);i--);for(i=0;i<o.length;i++){var s=o[i],a=n;e.matchBase&&1===s.length&&(a=[r]);var c=this.matchOne(a,s,t);if(c)return!!e.flipNegate||!this.negate}return!e.flipNegate&&this.negate},i.prototype.matchOne=function(n,t,e){var r=this.options;this.debug("matchOne",{this:this,file:n,pattern:t}),this.debug("matchOne",n.length,t.length);for(var i=0,o=0,s=n.length,a=t.length;i<s&&o<a;i++,o++){this.debug("matchOne loop");var c,u=t[o],l=n[i];if(this.debug(t,u,l),!1===u)return!1;if(u===M){this.debug("GLOBSTAR",[t,u,l]);var f=i,h=o+1;if(h===a){for(this.debug("** at the end");i<s;i++)if("."===n[i]||".."===n[i]||!r.dot&&"."===n[i].charAt(0))return!1;return!0}for(;f<s;){var p=n[f];if(this.debug("\nglobstar while",n,f,t,h,p),this.matchOne(n.slice(f),t.slice(h),e))return this.debug("globstar found match!",f,s,p),!0;if("."===p||".."===p||!r.dot&&"."===p.charAt(0)){this.debug("dot detected!",n,f,t,h);break}this.debug("globstar swallow a segment, and continue"),f++}return!(!e||(this.debug("\n>>> no match, partial?",n,f,t,h),f!==s))}if("string"==typeof u?(c=r.nocase?l.toLowerCase()===u.toLowerCase():l===u,this.debug("string match",u,l,c)):(c=l.match(u),this.debug("pattern match",u,l,c)),!c)return!1}if(i===s&&o===a)return!0;if(i===s)return e;if(o===a)return i===s-1&&""===n[i];throw new Error("wtf?")}},{"brace-expansion":11,path:22}],21:[function(n,t,e){var r=n("wrappy");function i(n){var t=function(){return t.called?t.value:(t.called=!0,t.value=n.apply(this,arguments))};return t.called=!1,t}function o(n){var t=function(){if(t.called)throw new Error(t.onceError);return t.called=!0,t.value=n.apply(this,arguments)},e=n.name||"Function wrapped with `once`";return t.onceError=e+" shouldn't be called more than once",t.called=!1,t}t.exports=r(i),t.exports.strict=r(o),i.proto=i(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return i(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return o(this)},configurable:!0})})},{wrappy:29}],22:[function(n,t,u){(function(i){function o(n,t){for(var e=0,r=n.length-1;0<=r;r--){var i=n[r];"."===i?n.splice(r,1):".."===i?(n.splice(r,1),e++):e&&(n.splice(r,1),e--)}if(t)for(;e--;e)n.unshift("..");return n}var t=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/,s=function(n){return t.exec(n).slice(1)};function a(n,t){if(n.filter)return n.filter(t);for(var e=[],r=0;r<n.length;r++)t(n[r],r,n)&&e.push(n[r]);return e}u.resolve=function(){for(var n="",t=!1,e=arguments.length-1;-1<=e&&!t;e--){var r=0<=e?arguments[e]:i.cwd();if("string"!=typeof r)throw new TypeError("Arguments to path.resolve must be strings");r&&(n=r+"/"+n,t="/"===r.charAt(0))}return(t?"/":"")+(n=o(a(n.split("/"),function(n){return!!n}),!t).join("/"))||"."},u.normalize=function(n){var t=u.isAbsolute(n),e="/"===r(n,-1);return(n=o(a(n.split("/"),function(n){return!!n}),!t).join("/"))||t||(n="."),n&&e&&(n+="/"),(t?"/":"")+n},u.isAbsolute=function(n){return"/"===n.charAt(0)},u.join=function(){var n=Array.prototype.slice.call(arguments,0);return u.normalize(a(n,function(n,t){if("string"!=typeof n)throw new TypeError("Arguments to path.join must be strings");return n}).join("/"))},u.relative=function(n,t){function e(n){for(var t=0;t<n.length&&""===n[t];t++);for(var e=n.length-1;0<=e&&""===n[e];e--);return e<t?[]:n.slice(t,e-t+1)}n=u.resolve(n).substr(1),t=u.resolve(t).substr(1);for(var r=e(n.split("/")),i=e(t.split("/")),o=Math.min(r.length,i.length),s=o,a=0;a<o;a++)if(r[a]!==i[a]){s=a;break}var c=[];for(a=s;a<r.length;a++)c.push("..");return(c=c.concat(i.slice(s))).join("/")},u.sep="/",u.delimiter=":",u.dirname=function(n){var t=s(n),e=t[0],r=t[1];return e||r?(r&&(r=r.substr(0,r.length-1)),e+r):"."},u.basename=function(n,t){var e=s(n)[2];return t&&e.substr(-1*t.length)===t&&(e=e.substr(0,e.length-t.length)),e},u.extname=function(n){return s(n)[3]};var r="b"==="ab".substr(-1)?function(n,t,e){return n.substr(t,e)}:function(n,t,e){return t<0&&(t=n.length+t),n.substr(t,e)}}).call(this,n("_process"))},{_process:24}],23:[function(n,r,t){(function(n){"use strict";function t(n){return"/"===n.charAt(0)}function e(n){var t=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/.exec(n),e=t[1]||"",r=Boolean(e&&":"!==e.charAt(1));return Boolean(t[2]||r)}r.exports="win32"===n.platform?e:t,r.exports.posix=t,r.exports.win32=e}).call(this,n("_process"))},{_process:24}],24:[function(n,t,e){var r,i,o=t.exports={};function s(){throw new Error("setTimeout has not been defined")}function a(){throw new Error("clearTimeout has not been defined")}function c(t){if(r===setTimeout)return setTimeout(t,0);if((r===s||!r)&&setTimeout)return r=setTimeout,setTimeout(t,0);try{return r(t,0)}catch(n){try{return r.call(null,t,0)}catch(n){return r.call(this,t,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:s}catch(n){r=s}try{i="function"==typeof clearTimeout?clearTimeout:a}catch(n){i=a}}();var u,l=[],f=!1,h=-1;function p(){f&&u&&(f=!1,u.length?l=u.concat(l):h=-1,l.length&&d())}function d(){if(!f){var n=c(p);f=!0;for(var t=l.length;t;){for(u=l,l=[];++h<t;)u&&u[h].run();h=-1,t=l.length}u=null,f=!1,function(t){if(i===clearTimeout)return clearTimeout(t);if((i===a||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(t);try{i(t)}catch(n){try{return i.call(null,t)}catch(n){return i.call(this,t)}}}(n)}}function v(n,t){this.fun=n,this.array=t}function g(){}o.nextTick=function(n){var t=new Array(arguments.length-1);if(1<arguments.length)for(var e=1;e<arguments.length;e++)t[e-1]=arguments[e];l.push(new v(n,t)),1!==l.length||f||c(d)},v.prototype.run=function(){this.fun.apply(null,this.array)},o.title="browser",o.browser=!0,o.env={},o.argv=[],o.version="",o.versions={},o.on=g,o.addListener=g,o.once=g,o.off=g,o.removeListener=g,o.removeAllListeners=g,o.emit=g,o.prependListener=g,o.prependOnceListener=g,o.listeners=function(n){return[]},o.binding=function(n){throw new Error("process.binding is not supported")},o.cwd=function(){return"/"},o.chdir=function(n){throw new Error("process.chdir is not supported")},o.umask=function(){return 0}},{}],25:[function(n,q,$){(function(){var n=this,t=n._,r=Array.prototype,s=Object.prototype,e=Function.prototype,i=r.push,c=r.slice,f=s.toString,o=s.hasOwnProperty,a=Array.isArray,u=Object.keys,l=e.bind,h=Object.create,p=function(){},d=function(n){return n instanceof d?n:this instanceof d?void(this._wrapped=n):new d(n)};void 0!==$?(void 0!==q&&q.exports&&($=q.exports=d),$._=d):n._=d,d.VERSION="1.8.3";var v=function(i,o,n){if(void 0===o)return i;switch(null==n?3:n){case 1:return function(n){return i.call(o,n)};case 2:return function(n,t){return i.call(o,n,t)};case 3:return function(n,t,e){return i.call(o,n,t,e)};case 4:return function(n,t,e,r){return i.call(o,n,t,e,r)}}return function(){return i.apply(o,arguments)}},g=function(n,t,e){return null==n?d.identity:d.isFunction(n)?v(n,t,e):d.isObject(n)?d.matcher(n):d.property(n)};d.iteratee=function(n,t){return g(n,t,1/0)};var m=function(c,u){return function(n){var t=arguments.length;if(t<2||null==n)return n;for(var e=1;e<t;e++)for(var r=arguments[e],i=c(r),o=i.length,s=0;s<o;s++){var a=i[s];u&&void 0!==n[a]||(n[a]=r[a])}return n}},y=function(n){if(!d.isObject(n))return{};if(h)return h(n);p.prototype=n;var t=new p;return p.prototype=null,t},b=function(t){return function(n){return null==n?void 0:n[t]}},_=Math.pow(2,53)-1,w=b("length"),E=function(n){var t=w(n);return"number"==typeof t&&0<=t&&t<=_};function O(a){return function(n,t,e,r){t=v(t,r,4);var i=!E(n)&&d.keys(n),o=(i||n).length,s=0<a?0:o-1;return arguments.length<3&&(e=n[i?i[s]:s],s+=a),function(n,t,e,r,i,o){for(;0<=i&&i<o;i+=a){var s=r?r[i]:i;e=t(e,n[s],s,n)}return e}(n,t,e,i,s,o)}}d.each=d.forEach=function(n,t,e){var r,i;if(t=v(t,e),E(n))for(r=0,i=n.length;r<i;r++)t(n[r],r,n);else{var o=d.keys(n);for(r=0,i=o.length;r<i;r++)t(n[o[r]],o[r],n)}return n},d.map=d.collect=function(n,t,e){t=g(t,e);for(var r=!E(n)&&d.keys(n),i=(r||n).length,o=Array(i),s=0;s<i;s++){var a=r?r[s]:s;o[s]=t(n[a],a,n)}return o},d.reduce=d.foldl=d.inject=O(1),d.reduceRight=d.foldr=O(-1),d.find=d.detect=function(n,t,e){var r;if(void 0!==(r=E(n)?d.findIndex(n,t,e):d.findKey(n,t,e))&&-1!==r)return n[r]},d.filter=d.select=function(n,r,t){var i=[];return r=g(r,t),d.each(n,function(n,t,e){r(n,t,e)&&i.push(n)}),i},d.reject=function(n,t,e){return d.filter(n,d.negate(g(t)),e)},d.every=d.all=function(n,t,e){t=g(t,e);for(var r=!E(n)&&d.keys(n),i=(r||n).length,o=0;o<i;o++){var s=r?r[o]:o;if(!t(n[s],s,n))return!1}return!0},d.some=d.any=function(n,t,e){t=g(t,e);for(var r=!E(n)&&d.keys(n),i=(r||n).length,o=0;o<i;o++){var s=r?r[o]:o;if(t(n[s],s,n))return!0}return!1},d.contains=d.includes=d.include=function(n,t,e,r){return E(n)||(n=d.values(n)),("number"!=typeof e||r)&&(e=0),0<=d.indexOf(n,t,e)},d.invoke=function(n,e){var r=c.call(arguments,2),i=d.isFunction(e);return d.map(n,function(n){var t=i?e:n[e];return null==t?t:t.apply(n,r)})},d.pluck=function(n,t){return d.map(n,d.property(t))},d.where=function(n,t){return d.filter(n,d.matcher(t))},d.findWhere=function(n,t){return d.find(n,d.matcher(t))},d.max=function(n,r,t){var e,i,o=-1/0,s=-1/0;if(null==r&&null!=n)for(var a=0,c=(n=E(n)?n:d.values(n)).length;a<c;a++)e=n[a],o<e&&(o=e);else r=g(r,t),d.each(n,function(n,t,e){i=r(n,t,e),(s<i||i===-1/0&&o===-1/0)&&(o=n,s=i)});return o},d.min=function(n,r,t){var e,i,o=1/0,s=1/0;if(null==r&&null!=n)for(var a=0,c=(n=E(n)?n:d.values(n)).length;a<c;a++)(e=n[a])<o&&(o=e);else r=g(r,t),d.each(n,function(n,t,e){((i=r(n,t,e))<s||i===1/0&&o===1/0)&&(o=n,s=i)});return o},d.shuffle=function(n){for(var t,e=E(n)?n:d.values(n),r=e.length,i=Array(r),o=0;o<r;o++)(t=d.random(0,o))!==o&&(i[o]=i[t]),i[t]=e[o];return i},d.sample=function(n,t,e){return null==t||e?(E(n)||(n=d.values(n)),n[d.random(n.length-1)]):d.shuffle(n).slice(0,Math.max(0,t))},d.sortBy=function(n,r,t){return r=g(r,t),d.pluck(d.map(n,function(n,t,e){return{value:n,index:t,criteria:r(n,t,e)}}).sort(function(n,t){var e=n.criteria,r=t.criteria;if(e!==r){if(r<e||void 0===e)return 1;if(e<r||void 0===r)return-1}return n.index-t.index}),"value")};var A=function(s){return function(r,i,n){var o={};return i=g(i,n),d.each(r,function(n,t){var e=i(n,t,r);s(o,n,e)}),o}};d.groupBy=A(function(n,t,e){d.has(n,e)?n[e].push(t):n[e]=[t]}),d.indexBy=A(function(n,t,e){n[e]=t}),d.countBy=A(function(n,t,e){d.has(n,e)?n[e]++:n[e]=1}),d.toArray=function(n){return n?d.isArray(n)?c.call(n):E(n)?d.map(n,d.identity):d.values(n):[]},d.size=function(n){return null==n?0:E(n)?n.length:d.keys(n).length},d.partition=function(n,r,t){r=g(r,t);var i=[],o=[];return d.each(n,function(n,t,e){(r(n,t,e)?i:o).push(n)}),[i,o]},d.first=d.head=d.take=function(n,t,e){if(null!=n)return null==t||e?n[0]:d.initial(n,n.length-t)},d.initial=function(n,t,e){return c.call(n,0,Math.max(0,n.length-(null==t||e?1:t)))},d.last=function(n,t,e){if(null!=n)return null==t||e?n[n.length-1]:d.rest(n,Math.max(0,n.length-t))},d.rest=d.tail=d.drop=function(n,t,e){return c.call(n,null==t||e?1:t)},d.compact=function(n){return d.filter(n,d.identity)};var x=function(n,t,e,r){for(var i=[],o=0,s=r||0,a=w(n);s<a;s++){var c=n[s];if(E(c)&&(d.isArray(c)||d.isArguments(c))){t||(c=x(c,t,e));var u=0,l=c.length;for(i.length+=l;u<l;)i[o++]=c[u++]}else e||(i[o++]=c)}return i};function j(o){return function(n,t,e){t=g(t,e);for(var r=w(n),i=0<o?0:r-1;0<=i&&i<r;i+=o)if(t(n[i],i,n))return i;return-1}}function k(o,s,a){return function(n,t,e){var r=0,i=w(n);if("number"==typeof e)0<o?r=0<=e?e:Math.max(e+i,r):i=0<=e?Math.min(e+1,i):e+i+1;else if(a&&e&&i)return n[e=a(n,t)]===t?e:-1;if(t!=t)return 0<=(e=s(c.call(n,r,i),d.isNaN))?e+r:-1;for(e=0<o?r:i-1;0<=e&&e<i;e+=o)if(n[e]===t)return e;return-1}}d.flatten=function(n,t){return x(n,t,!1)},d.without=function(n){return d.difference(n,c.call(arguments,1))},d.uniq=d.unique=function(n,t,e,r){d.isBoolean(t)||(r=e,e=t,t=!1),null!=e&&(e=g(e,r));for(var i=[],o=[],s=0,a=w(n);s<a;s++){var c=n[s],u=e?e(c,s,n):c;t?(s&&o===u||i.push(c),o=u):e?d.contains(o,u)||(o.push(u),i.push(c)):d.contains(i,c)||i.push(c)}return i},d.union=function(){return d.uniq(x(arguments,!0,!0))},d.intersection=function(n){for(var t=[],e=arguments.length,r=0,i=w(n);r<i;r++){var o=n[r];if(!d.contains(t,o)){for(var s=1;s<e&&d.contains(arguments[s],o);s++);s===e&&t.push(o)}}return t},d.difference=function(n){var t=x(arguments,!0,!0,1);return d.filter(n,function(n){return!d.contains(t,n)})},d.zip=function(){return d.unzip(arguments)},d.unzip=function(n){for(var t=n&&d.max(n,w).length||0,e=Array(t),r=0;r<t;r++)e[r]=d.pluck(n,r);return e},d.object=function(n,t){for(var e={},r=0,i=w(n);r<i;r++)t?e[n[r]]=t[r]:e[n[r][0]]=n[r][1];return e},d.findIndex=j(1),d.findLastIndex=j(-1),d.sortedIndex=function(n,t,e,r){for(var i=(e=g(e,r,1))(t),o=0,s=w(n);o<s;){var a=Math.floor((o+s)/2);e(n[a])<i?o=a+1:s=a}return o},d.indexOf=k(1,d.findIndex,d.sortedIndex),d.lastIndexOf=k(-1,d.findLastIndex),d.range=function(n,t,e){null==t&&(t=n||0,n=0),e=e||1;for(var r=Math.max(Math.ceil((t-n)/e),0),i=Array(r),o=0;o<r;o++,n+=e)i[o]=n;return i};var S=function(n,t,e,r,i){if(!(r instanceof t))return n.apply(e,i);var o=y(n.prototype),s=n.apply(o,i);return d.isObject(s)?s:o};d.bind=function(n,t){if(l&&n.bind===l)return l.apply(n,c.call(arguments,1));if(!d.isFunction(n))throw new TypeError("Bind must be called on a function");var e=c.call(arguments,2),r=function(){return S(n,r,t,this,e.concat(c.call(arguments)))};return r},d.partial=function(i){var o=c.call(arguments,1),s=function(){for(var n=0,t=o.length,e=Array(t),r=0;r<t;r++)e[r]=o[r]===d?arguments[n++]:o[r];for(;n<arguments.length;)e.push(arguments[n++]);return S(i,s,this,this,e)};return s},d.bindAll=function(n){var t,e,r=arguments.length;if(r<=1)throw new Error("bindAll must be passed function names");for(t=1;t<r;t++)n[e=arguments[t]]=d.bind(n[e],n);return n},d.memoize=function(r,i){var o=function(n){var t=o.cache,e=""+(i?i.apply(this,arguments):n);return d.has(t,e)||(t[e]=r.apply(this,arguments)),t[e]};return o.cache={},o},d.delay=function(n,t){var e=c.call(arguments,2);return setTimeout(function(){return n.apply(null,e)},t)},d.defer=d.partial(d.delay,d,1),d.throttle=function(e,r,i){var o,s,a,c=null,u=0;i||(i={});var l=function(){u=!1===i.leading?0:d.now(),c=null,a=e.apply(o,s),c||(o=s=null)};return function(){var n=d.now();u||!1!==i.leading||(u=n);var t=r-(n-u);return o=this,s=arguments,t<=0||r<t?(c&&(clearTimeout(c),c=null),u=n,a=e.apply(o,s),c||(o=s=null)):c||!1===i.trailing||(c=setTimeout(l,t)),a}},d.debounce=function(t,e,r){var i,o,s,a,c,u=function(){var n=d.now()-a;n<e&&0<=n?i=setTimeout(u,e-n):(i=null,r||(c=t.apply(s,o),i||(s=o=null)))};return function(){s=this,o=arguments,a=d.now();var n=r&&!i;return i||(i=setTimeout(u,e)),n&&(c=t.apply(s,o),s=o=null),c}},d.wrap=function(n,t){return d.partial(t,n)},d.negate=function(n){return function(){return!n.apply(this,arguments)}},d.compose=function(){var e=arguments,r=e.length-1;return function(){for(var n=r,t=e[r].apply(this,arguments);n--;)t=e[n].call(this,t);return t}},d.after=function(n,t){return function(){if(--n<1)return t.apply(this,arguments)}},d.before=function(n,t){var e;return function(){return 0<--n&&(e=t.apply(this,arguments)),n<=1&&(t=null),e}},d.once=d.partial(d.before,2);var R=!{toString:null}.propertyIsEnumerable("toString"),L=["valueOf","isPrototypeOf","toString","propertyIsEnumerable","hasOwnProperty","toLocaleString"];function T(n,t){var e=L.length,r=n.constructor,i=d.isFunction(r)&&r.prototype||s,o="constructor";for(d.has(n,o)&&!d.contains(t,o)&&t.push(o);e--;)(o=L[e])in n&&n[o]!==i[o]&&!d.contains(t,o)&&t.push(o)}d.keys=function(n){if(!d.isObject(n))return[];if(u)return u(n);var t=[];for(var e in n)d.has(n,e)&&t.push(e);return R&&T(n,t),t},d.allKeys=function(n){if(!d.isObject(n))return[];var t=[];for(var e in n)t.push(e);return R&&T(n,t),t},d.values=function(n){for(var t=d.keys(n),e=t.length,r=Array(e),i=0;i<e;i++)r[i]=n[t[i]];return r},d.mapObject=function(n,t,e){t=g(t,e);for(var r,i=d.keys(n),o=i.length,s={},a=0;a<o;a++)s[r=i[a]]=t(n[r],r,n);return s},d.pairs=function(n){for(var t=d.keys(n),e=t.length,r=Array(e),i=0;i<e;i++)r[i]=[t[i],n[t[i]]];return r},d.invert=function(n){for(var t={},e=d.keys(n),r=0,i=e.length;r<i;r++)t[n[e[r]]]=e[r];return t},d.functions=d.methods=function(n){var t=[];for(var e in n)d.isFunction(n[e])&&t.push(e);return t.sort()},d.extend=m(d.allKeys),d.extendOwn=d.assign=m(d.keys),d.findKey=function(n,t,e){t=g(t,e);for(var r,i=d.keys(n),o=0,s=i.length;o<s;o++)if(t(n[r=i[o]],r,n))return r},d.pick=function(n,t,e){var r,i,o={},s=n;if(null==s)return o;d.isFunction(t)?(i=d.allKeys(s),r=v(t,e)):(i=x(arguments,!1,!1,1),r=function(n,t,e){return t in e},s=Object(s));for(var a=0,c=i.length;a<c;a++){var u=i[a],l=s[u];r(l,u,s)&&(o[u]=l)}return o},d.omit=function(n,t,e){if(d.isFunction(t))t=d.negate(t);else{var r=d.map(x(arguments,!1,!1,1),String);t=function(n,t){return!d.contains(r,t)}}return d.pick(n,t,e)},d.defaults=m(d.allKeys,!0),d.create=function(n,t){var e=y(n);return t&&d.extendOwn(e,t),e},d.clone=function(n){return d.isObject(n)?d.isArray(n)?n.slice():d.extend({},n):n},d.tap=function(n,t){return t(n),n},d.isMatch=function(n,t){var e=d.keys(t),r=e.length;if(null==n)return!r;for(var i=Object(n),o=0;o<r;o++){var s=e[o];if(t[s]!==i[s]||!(s in i))return!1}return!0};var I=function(n,t,e,r){if(n===t)return 0!==n||1/n==1/t;if(null==n||null==t)return n===t;n instanceof d&&(n=n._wrapped),t instanceof d&&(t=t._wrapped);var i=f.call(n);if(i!==f.call(t))return!1;switch(i){case"[object RegExp]":case"[object String]":return""+n==""+t;case"[object Number]":return+n!=+n?+t!=+t:0==+n?1/+n==1/t:+n==+t;case"[object Date]":case"[object Boolean]":return+n==+t}var o="[object Array]"===i;if(!o){if("object"!=typeof n||"object"!=typeof t)return!1;var s=n.constructor,a=t.constructor;if(s!==a&&!(d.isFunction(s)&&s instanceof s&&d.isFunction(a)&&a instanceof a)&&"constructor"in n&&"constructor"in t)return!1}r=r||[];for(var c=(e=e||[]).length;c--;)if(e[c]===n)return r[c]===t;if(e.push(n),r.push(t),o){if((c=n.length)!==t.length)return!1;for(;c--;)if(!I(n[c],t[c],e,r))return!1}else{var u,l=d.keys(n);if(c=l.length,d.keys(t).length!==c)return!1;for(;c--;)if(u=l[c],!d.has(t,u)||!I(n[u],t[u],e,r))return!1}return e.pop(),r.pop(),!0};d.isEqual=function(n,t){return I(n,t)},d.isEmpty=function(n){return null==n||(E(n)&&(d.isArray(n)||d.isString(n)||d.isArguments(n))?0===n.length:0===d.keys(n).length)},d.isElement=function(n){return!(!n||1!==n.nodeType)},d.isArray=a||function(n){return"[object Array]"===f.call(n)},d.isObject=function(n){var t=typeof n;return"function"===t||"object"===t&&!!n},d.each(["Arguments","Function","String","Number","Date","RegExp","Error"],function(t){d["is"+t]=function(n){return f.call(n)==="[object "+t+"]"}}),d.isArguments(arguments)||(d.isArguments=function(n){return d.has(n,"callee")}),"function"!=typeof/./&&"object"!=typeof Int8Array&&(d.isFunction=function(n){return"function"==typeof n||!1}),d.isFinite=function(n){return isFinite(n)&&!isNaN(parseFloat(n))},d.isNaN=function(n){return d.isNumber(n)&&n!==+n},d.isBoolean=function(n){return!0===n||!1===n||"[object Boolean]"===f.call(n)},d.isNull=function(n){return null===n},d.isUndefined=function(n){return void 0===n},d.has=function(n,t){return null!=n&&o.call(n,t)},d.noConflict=function(){return n._=t,this},d.identity=function(n){return n},d.constant=function(n){return function(){return n}},d.noop=function(){},d.property=b,d.propertyOf=function(t){return null==t?function(){}:function(n){return t[n]}},d.matcher=d.matches=function(t){return t=d.extendOwn({},t),function(n){return d.isMatch(n,t)}},d.times=function(n,t,e){var r=Array(Math.max(0,n));t=v(t,e,1);for(var i=0;i<n;i++)r[i]=t(i);return r},d.random=function(n,t){return null==t&&(t=n,n=0),n+Math.floor(Math.random()*(t-n+1))},d.now=Date.now||function(){return(new Date).getTime()};var N={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#x27;","`":"&#x60;"},D=d.invert(N),F=function(t){var e=function(n){return t[n]},n="(?:"+d.keys(t).join("|")+")",r=RegExp(n),i=RegExp(n,"g");return function(n){return n=null==n?"":""+n,r.test(n)?n.replace(i,e):n}};d.escape=F(N),d.unescape=F(D),d.result=function(n,t,e){var r=null==n?void 0:n[t];return void 0===r&&(r=e),d.isFunction(r)?r.call(n):r};var M=0;d.uniqueId=function(n){var t=++M+"";return n?n+t:t},d.templateSettings={evaluate:/<%([\s\S]+?)%>/g,interpolate:/<%=([\s\S]+?)%>/g,escape:/<%-([\s\S]+?)%>/g};var C=/(.)^/,P={"'":"'","\\":"\\","\r":"r","\n":"n","\u2028":"u2028","\u2029":"u2029"},z=/\\|'|\r|\n|\u2028|\u2029/g,B=function(n){return"\\"+P[n]};d.template=function(o,n,t){!n&&t&&(n=t),n=d.defaults({},n,d.templateSettings);var e=RegExp([(n.escape||C).source,(n.interpolate||C).source,(n.evaluate||C).source].join("|")+"|$","g"),s=0,a="__p+='";o.replace(e,function(n,t,e,r,i){return a+=o.slice(s,i).replace(z,B),s=i+n.length,t?a+="'+\n((__t=("+t+"))==null?'':_.escape(__t))+\n'":e?a+="'+\n((__t=("+e+"))==null?'':__t)+\n'":r&&(a+="';\n"+r+"\n__p+='"),n}),a+="';\n",n.variable||(a="with(obj||{}){\n"+a+"}\n"),a="var __t,__p='',__j=Array.prototype.join,print=function(){__p+=__j.call(arguments,'');};\n"+a+"return __p;\n";try{var r=new Function(n.variable||"obj","_",a)}catch(n){throw n.source=a,n}var i=function(n){return r.call(this,n,d)},c=n.variable||"obj";return i.source="function("+c+"){\n"+a+"}",i},d.chain=function(n){var t=d(n);return t._chain=!0,t};var U=function(n,t){return n._chain?d(t).chain():t};d.mixin=function(e){d.each(d.functions(e),function(n){var t=d[n]=e[n];d.prototype[n]=function(){var n=[this._wrapped];return i.apply(n,arguments),U(this,t.apply(d,n))}})},d.mixin(d),d.each(["pop","push","reverse","shift","sort","splice","unshift"],function(t){var e=r[t];d.prototype[t]=function(){var n=this._wrapped;return e.apply(n,arguments),"shift"!==t&&"splice"!==t||0!==n.length||delete n[0],U(this,n)}}),d.each(["concat","join","slice"],function(n){var t=r[n];d.prototype[n]=function(){return U(this,t.apply(this._wrapped,arguments))}}),d.prototype.value=function(){return this._wrapped},d.prototype.valueOf=d.prototype.toJSON=d.prototype.value,d.prototype.toString=function(){return""+this._wrapped}}).call(this)},{}],26:[function(n,t,e){arguments[4][19][0].apply(e,arguments)},{dup:19}],27:[function(n,t,e){t.exports=function(n){return n&&"object"==typeof n&&"function"==typeof n.copy&&"function"==typeof n.fill&&"function"==typeof n.readUInt8}},{}],28:[function(h,n,k){(function(r,i){var a=/%[sdj%]/g;k.format=function(n){if(!_(n)){for(var t=[],e=0;e<arguments.length;e++)t.push(c(arguments[e]));return t.join(" ")}e=1;for(var r=arguments,i=r.length,o=String(n).replace(a,function(n){if("%%"===n)return"%";if(i<=e)return n;switch(n){case"%s":return String(r[e++]);case"%d":return Number(r[e++]);case"%j":try{return JSON.stringify(r[e++])}catch(n){return"[Circular]"}default:return n}}),s=r[e];e<i;s=r[++e])y(s)||!l(s)?o+=" "+s:o+=" "+c(s);return o},k.deprecate=function(n,t){if(w(i.process))return function(){return k.deprecate(n,t).apply(this,arguments)};if(!0===r.noDeprecation)return n;var e=!1;return function(){if(!e){if(r.throwDeprecation)throw new Error(t);r.traceDeprecation?console.trace(t):console.error(t),e=!0}return n.apply(this,arguments)}};var n,o={};function c(n,t){var e={seen:[],stylize:u};return 3<=arguments.length&&(e.depth=arguments[2]),4<=arguments.length&&(e.colors=arguments[3]),m(t)?e.showHidden=t:t&&k._extend(e,t),w(e.showHidden)&&(e.showHidden=!1),w(e.depth)&&(e.depth=2),w(e.colors)&&(e.colors=!1),w(e.customInspect)&&(e.customInspect=!0),e.colors&&(e.stylize=s),p(e,n,e.depth)}function s(n,t){var e=c.styles[t];return e?"["+c.colors[e][0]+"m"+n+"["+c.colors[e][1]+"m":n}function u(n,t){return n}function p(t,e,r){if(t.customInspect&&e&&x(e.inspect)&&e.inspect!==k.inspect&&(!e.constructor||e.constructor.prototype!==e)){var n=e.inspect(r,t);return _(n)||(n=p(t,n,r)),n}var i=function(n,t){if(w(t))return n.stylize("undefined","undefined");if(_(t)){var e="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return n.stylize(e,"string")}if(b(t))return n.stylize(""+t,"number");if(m(t))return n.stylize(""+t,"boolean");if(y(t))return n.stylize("null","null")}(t,e);if(i)return i;var o,s=Object.keys(e),a=(o={},s.forEach(function(n,t){o[n]=!0}),o);if(t.showHidden&&(s=Object.getOwnPropertyNames(e)),A(e)&&(0<=s.indexOf("message")||0<=s.indexOf("description")))return d(e);if(0===s.length){if(x(e)){var c=e.name?": "+e.name:"";return t.stylize("[Function"+c+"]","special")}if(E(e))return t.stylize(RegExp.prototype.toString.call(e),"regexp");if(O(e))return t.stylize(Date.prototype.toString.call(e),"date");if(A(e))return d(e)}var u,l="",f=!1,h=["{","}"];(g(e)&&(f=!0,h=["[","]"]),x(e))&&(l=" [Function"+(e.name?": "+e.name:"")+"]");return E(e)&&(l=" "+RegExp.prototype.toString.call(e)),O(e)&&(l=" "+Date.prototype.toUTCString.call(e)),A(e)&&(l=" "+d(e)),0!==s.length||f&&0!=e.length?r<0?E(e)?t.stylize(RegExp.prototype.toString.call(e),"regexp"):t.stylize("[Object]","special"):(t.seen.push(e),u=f?function(t,e,r,i,n){for(var o=[],s=0,a=e.length;s<a;++s)j(e,String(s))?o.push(v(t,e,r,i,String(s),!0)):o.push("");return n.forEach(function(n){n.match(/^\d+$/)||o.push(v(t,e,r,i,n,!0))}),o}(t,e,r,a,s):s.map(function(n){return v(t,e,r,a,n,f)}),t.seen.pop(),function(n,t,e){if(60<n.reduce(function(n,t){return 0,0<=t.indexOf("\n")&&0,n+t.replace(/\u001b\[\d\d?m/g,"").length+1},0))return e[0]+(""===t?"":t+"\n ")+" "+n.join(",\n  ")+" "+e[1];return e[0]+t+" "+n.join(", ")+" "+e[1]}(u,l,h)):h[0]+l+h[1]}function d(n){return"["+Error.prototype.toString.call(n)+"]"}function v(n,t,e,r,i,o){var s,a,c;if((c=Object.getOwnPropertyDescriptor(t,i)||{value:t[i]}).get?a=c.set?n.stylize("[Getter/Setter]","special"):n.stylize("[Getter]","special"):c.set&&(a=n.stylize("[Setter]","special")),j(r,i)||(s="["+i+"]"),a||(n.seen.indexOf(c.value)<0?-1<(a=y(e)?p(n,c.value,null):p(n,c.value,e-1)).indexOf("\n")&&(a=o?a.split("\n").map(function(n){return"  "+n}).join("\n").substr(2):"\n"+a.split("\n").map(function(n){return"   "+n}).join("\n")):a=n.stylize("[Circular]","special")),w(s)){if(o&&i.match(/^\d+$/))return a;s=(s=JSON.stringify(""+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),n.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),n.stylize(s,"string"))}return s+": "+a}function g(n){return Array.isArray(n)}function m(n){return"boolean"==typeof n}function y(n){return null===n}function b(n){return"number"==typeof n}function _(n){return"string"==typeof n}function w(n){return void 0===n}function E(n){return l(n)&&"[object RegExp]"===t(n)}function l(n){return"object"==typeof n&&null!==n}function O(n){return l(n)&&"[object Date]"===t(n)}function A(n){return l(n)&&("[object Error]"===t(n)||n instanceof Error)}function x(n){return"function"==typeof n}function t(n){return Object.prototype.toString.call(n)}function e(n){return n<10?"0"+n.toString(10):n.toString(10)}k.debuglog=function(t){if(w(n)&&(n=r.env.NODE_DEBUG||""),t=t.toUpperCase(),!o[t])if(new RegExp("\\b"+t+"\\b","i").test(n)){var e=r.pid;o[t]=function(){var n=k.format.apply(k,arguments);console.error("%s %d: %s",t,e,n)}}else o[t]=function(){};return o[t]},(k.inspect=c).colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},c.styles={special:"cyan",number:"yellow",boolean:"yellow",undefined:"grey",null:"bold",string:"green",date:"magenta",regexp:"red"},k.isArray=g,k.isBoolean=m,k.isNull=y,k.isNullOrUndefined=function(n){return null==n},k.isNumber=b,k.isString=_,k.isSymbol=function(n){return"symbol"==typeof n},k.isUndefined=w,k.isRegExp=E,k.isObject=l,k.isDate=O,k.isError=A,k.isFunction=x,k.isPrimitive=function(n){return null===n||"boolean"==typeof n||"number"==typeof n||"string"==typeof n||"symbol"==typeof n||void 0===n},k.isBuffer=h("./support/isBuffer");var f=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];function j(n,t){return Object.prototype.hasOwnProperty.call(n,t)}k.log=function(){var n,t;console.log("%s - %s",(n=new Date,t=[e(n.getHours()),e(n.getMinutes()),e(n.getSeconds())].join(":"),[n.getDate(),f[n.getMonth()],t].join(" ")),k.format.apply(k,arguments))},k.inherits=h("inherits"),k._extend=function(n,t){if(!t||!l(t))return n;for(var e=Object.keys(t),r=e.length;r--;)n[e[r]]=t[e[r]];return n}}).call(this,h("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./support/isBuffer":27,_process:24,inherits:26}],29:[function(n,t,e){t.exports=function n(i,t){if(i&&t)return n(i)(t);if("function"!=typeof i)throw new TypeError("need wrapper function");Object.keys(i).forEach(function(n){e[n]=i[n]});return e;function e(){for(var n=new Array(arguments.length),t=0;t<n.length;t++)n[t]=arguments[t];var e=i.apply(this,n),r=n[n.length-1];return"function"==typeof e&&e!==r&&Object.keys(r).forEach(function(n){e[n]=r[n]}),e}}},{}]},{},[7])(7)});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/javascripts/modernizr.74668098.js b/lib/AutoConnect-master/docs/assets/javascripts/modernizr.74668098.js
deleted file mode 100644
index 36eaf6a0450c5a150834345972b6eff6dc20b63c..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/javascripts/modernizr.74668098.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(e,t){for(var n in t)e[n]=t[n]}(window,function(n){var r={};function o(e){if(r[e])return r[e].exports;var t=r[e]={i:e,l:!1,exports:{}};return n[e].call(t.exports,t,t.exports,o),t.l=!0,t.exports}return o.m=n,o.c=r,o.d=function(e,t,n){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(t,e){if(1&e&&(t=o(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var r in t)o.d(n,r,function(e){return t[e]}.bind(null,r));return n},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=11)}({11:function(e,t,n){"use strict";n.r(t);n(12)},12:function(e,t){var n;(function(i,d,p){function y(e,t){return typeof e===t}function s(e){var t=S.className,n=c._config.classPrefix||"";if(b&&(t=t.baseVal),c._config.enableJSClass){var r=new RegExp("(^|\\s)"+n+"no-js(\\s|$)");t=t.replace(r,"$1"+n+"js$2")}c._config.enableClasses&&(0<e.length&&(t+=" "+n+e.join(" "+n)),b?S.className.baseVal=t:S.className=t)}function a(e,t){if("object"==typeof e)for(var n in e)v(e,n)&&a(n,e[n]);else{var r=(e=e.toLowerCase()).split("."),o=c[r[0]];if(2===r.length&&(o=o[r[1]]),void 0!==o)return c;t="function"==typeof t?t():t,1===r.length?c[r[0]]=t:(!c[r[0]]||c[r[0]]instanceof Boolean||(c[r[0]]=new Boolean(c[r[0]])),c[r[0]][r[1]]=t),s([(t&&!1!==t?"":"no-")+r.join("-")]),c._trigger(e,t)}return c}function m(){return"function"!=typeof d.createElement?d.createElement(arguments[0]):b?d.createElementNS.call(d,"http://www.w3.org/2000/svg",arguments[0]):d.createElement.apply(d,arguments)}function o(e,t,n,r){var o,i,s,a,l,u="modernizr",f=m("div"),c=((l=d.body)||((l=m(b?"svg":"body")).fake=!0),l);if(parseInt(n,10))for(;n--;)(s=m("div")).id=r?r[n]:u+(n+1),f.appendChild(s);return(o=m("style")).type="text/css",o.id="s"+u,(c.fake?c:f).appendChild(o),c.appendChild(f),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(d.createTextNode(e)),f.id=u,c.fake&&(c.style.background="",c.style.overflow="hidden",a=S.style.overflow,S.style.overflow="hidden",S.appendChild(c)),i=t(f,e),c.fake?(c.parentNode.removeChild(c),S.style.overflow=a,S.offsetHeight):f.parentNode.removeChild(f),!!i}function l(e){return e.replace(/([A-Z])/g,function(e,t){return"-"+t.toLowerCase()}).replace(/^ms-/,"-ms-")}function h(e,t){var n=e.length;if("CSS"in i&&"supports"in i.CSS){for(;n--;)if(i.CSS.supports(l(e[n]),t))return!0;return!1}if("CSSSupportsRule"in i){for(var r=[];n--;)r.push("("+l(e[n])+":"+t+")");return o("@supports ("+(r=r.join(" or "))+") { #modernizr { position: absolute; } }",function(e){return"absolute"===function(e,t,n){var r;if("getComputedStyle"in i){r=getComputedStyle.call(i,e,t);var o=i.console;null!==r?n&&(r=r.getPropertyValue(n)):o&&o[o.error?"error":"log"].call(o,"getComputedStyle returning null, its possible modernizr test results are inaccurate")}else r=!t&&e.currentStyle&&e.currentStyle[n];return r}(e,null,"position")})}return p}function u(e,t){return function(){return e.apply(t,arguments)}}function r(e,t,n,r,o){var i=e.charAt(0).toUpperCase()+e.slice(1),s=(e+" "+w.join(i+" ")+i).split(" ");return y(t,"string")||y(t,"undefined")?function(e,t,n,r){function o(){s&&(delete T.style,delete T.modElem)}if(r=!y(r,"undefined")&&r,!y(n,"undefined")){var i=h(e,n);if(!y(i,"undefined"))return i}for(var s,a,l,u,f,c=["modernizr","tspan","samp"];!T.style&&c.length;)s=!0,T.modElem=m(c.shift()),T.style=T.modElem.style;for(l=e.length,a=0;a<l;a++)if(u=e[a],f=T.style[u],!!~(""+u).indexOf("-")&&(u=u.replace(/([a-z])-([a-z])/g,function(e,t,n){return t+n.toUpperCase()}).replace(/^-/,"")),T.style[u]!==p){if(r||y(n,"undefined"))return o(),"pfx"!==t||u;try{T.style[u]=n}catch(e){}if(T.style[u]!==f)return o(),"pfx"!==t||u}return o(),!1}(s,t,r,o):function(e,t,n){var r;for(var o in e)if(e[o]in t)return!1===n?e[o]:y(r=t[e[o]],"function")?u(r,n||t):r;return!1}(s=(e+" "+P.join(i+" ")+i).split(" "),t,n)}function e(e,t,n){return r(e,p,p,t,n)}var f=[],t={_version:"3.7.1",_config:{classPrefix:"",enableClasses:!0,enableJSClass:!0,usePrefixes:!0},_q:[],on:function(e,t){var n=this;setTimeout(function(){t(n[e])},0)},addTest:function(e,t,n){f.push({name:e,fn:t,options:n})},addAsyncTest:function(e){f.push({name:null,fn:e})}},c=function(){};c.prototype=t,c=new c;var v,n,g=[],S=d.documentElement,b="svg"===S.nodeName.toLowerCase();v=y(n={}.hasOwnProperty,"undefined")||y(n.call,"undefined")?function(e,t){return t in e&&y(e.constructor.prototype[t],"undefined")}:function(e,t){return n.call(e,t)},t._l={},t.on=function(e,t){this._l[e]||(this._l[e]=[]),this._l[e].push(t),c.hasOwnProperty(e)&&setTimeout(function(){c._trigger(e,c[e])},0)},t._trigger=function(e,t){if(this._l[e]){var n=this._l[e];setTimeout(function(){var e;for(e=0;e<n.length;e++)(0,n[e])(t)},0),delete this._l[e]}},c._q.push(function(){t.addTest=a}),c.addTest("json","JSON"in i&&"parse"in JSON&&"stringify"in JSON),c.addTest("svg",!!d.createElementNS&&!!d.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect);var C=t.testStyles=o;c.addTest("checked",function(){return C("#modernizr {position:absolute} #modernizr input {margin-left:10px} #modernizr :checked {margin-left:20px;display:block}",function(e){var t=m("input");return t.setAttribute("type","checkbox"),t.setAttribute("checked","checked"),e.appendChild(t),20===t.offsetLeft})}),c.addTest("target",function(){var e=i.document;if(!("querySelectorAll"in e))return!1;try{return e.querySelectorAll(":target"),!0}catch(e){return!1}}),c.addTest("dataset",function(){var e=m("div");return e.setAttribute("data-a-b","c"),!(!e.dataset||"c"!==e.dataset.aB)}),c.addTest("details",function(){var t,n=m("details");return"open"in n&&(C("#modernizr details{display:block}",function(e){e.appendChild(n),n.innerHTML="<summary>a</summary>b",t=n.offsetHeight,n.open=!0,t=t!==n.offsetHeight}),t)}),c.addTest("fetch","fetch"in i);var _="Moz O ms Webkit",w=t._config.usePrefixes?_.split(" "):[];t._cssomPrefixes=w;var x={elem:m("modernizr")};c._q.push(function(){delete x.elem});var T={style:x.elem.style};c._q.unshift(function(){delete T.style});var P=t._config.usePrefixes?_.toLowerCase().split(" "):[];t._domPrefixes=P,t.testAllProps=r,t.testAllProps=e;var j="CSS"in i&&"supports"in i.CSS,O="supportsCSS"in i;c.addTest("supports",j||O),c.addTest("csstransforms3d",function(){return!!e("perspective","1px",!0)}),function(){var e,t,n,r,o,i;for(var s in f)if(f.hasOwnProperty(s)){if(e=[],(t=f[s]).name&&(e.push(t.name.toLowerCase()),t.options&&t.options.aliases&&t.options.aliases.length))for(n=0;n<t.options.aliases.length;n++)e.push(t.options.aliases[n].toLowerCase());for(r=y(t.fn,"function")?t.fn():t.fn,o=0;o<e.length;o++)1===(i=e[o].split(".")).length?c[i[0]]=r:(!c[i[0]]||c[i[0]]instanceof Boolean||(c[i[0]]=new Boolean(c[i[0]])),c[i[0]][i[1]]=r),g.push((r?"":"no-")+i.join("-"))}}(),s(g),delete t.addTest,delete t.addAsyncTest;for(var z=0;z<c._q.length;z++)c._q[z]();i.Modernizr=c})(n=window,document),e.exports=n.Modernizr}}));
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/stylesheets/application-palette.224b79ff.css b/lib/AutoConnect-master/docs/assets/stylesheets/application-palette.224b79ff.css
deleted file mode 100644
index c73ee4a97cb9d008bd44950588b4c5a9b096c2e3..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/stylesheets/application-palette.224b79ff.css
+++ /dev/null
@@ -1 +0,0 @@
-button[data-md-color-accent],button[data-md-color-primary]{width:6.5rem;margin-bottom:.2rem;padding:1.2rem .4rem .2rem;transition:background-color .25s,opacity .25s;border-radius:.1rem;color:#fff;font-size:.64rem;text-align:left;cursor:pointer}button[data-md-color-accent]:hover,button[data-md-color-primary]:hover{opacity:.75}button[data-md-color-primary=red]{background-color:#ef5350}[data-md-color-primary=red] .md-typeset a{color:#ef5350}[data-md-color-primary=red] .md-header,[data-md-color-primary=red] .md-hero{background-color:#ef5350}[data-md-color-primary=red] .md-nav__link--active,[data-md-color-primary=red] .md-nav__link:active{color:#ef5350}[data-md-color-primary=red] .md-nav__item--nested>.md-nav__link{color:inherit}button[data-md-color-primary=pink]{background-color:#e91e63}[data-md-color-primary=pink] .md-typeset a{color:#e91e63}[data-md-color-primary=pink] .md-header,[data-md-color-primary=pink] .md-hero{background-color:#e91e63}[data-md-color-primary=pink] .md-nav__link--active,[data-md-color-primary=pink] .md-nav__link:active{color:#e91e63}[data-md-color-primary=pink] .md-nav__item--nested>.md-nav__link{color:inherit}button[data-md-color-primary=purple]{background-color:#ab47bc}[data-md-color-primary=purple] .md-typeset a{color:#ab47bc}[data-md-color-primary=purple] .md-header,[data-md-color-primary=purple] .md-hero{background-color:#ab47bc}[data-md-color-primary=purple] .md-nav__link--active,[data-md-color-primary=purple] .md-nav__link:active{color:#ab47bc}[data-md-color-primary=purple] .md-nav__item--nested>.md-nav__link{color:inherit}button[data-md-color-primary=deep-purple]{background-color:#7e57c2}[data-md-color-primary=deep-purple] .md-typeset a{color:#7e57c2}[data-md-color-primary=deep-purple] .md-header,[data-md-color-primary=deep-purple] .md-hero{background-color:#7e57c2}[data-md-color-primary=deep-purple] .md-nav__link--active,[data-md-color-primary=deep-purple] .md-nav__link:active{color:#7e57c2}[data-md-color-primary=deep-purple] .md-nav__item--nested>.md-nav__link{color:inherit}button[data-md-color-primary=indigo]{background-color:#3f51b5}[data-md-color-primary=indigo] .md-typeset a{color:#3f51b5}[data-md-color-primary=indigo] .md-header,[data-md-color-primary=indigo] .md-hero{background-color:#3f51b5}[data-md-color-primary=indigo] .md-nav__link--active,[data-md-color-primary=indigo] .md-nav__link:active{color:#3f51b5}[data-md-color-primary=indigo] .md-nav__item--nested>.md-nav__link{color:inherit}button[data-md-color-primary=blue]{background-color:#2196f3}[data-md-color-primary=blue] .md-typeset a{color:#2196f3}[data-md-color-primary=blue] .md-header,[data-md-color-primary=blue] .md-hero{background-color:#2196f3}[data-md-color-primary=blue] .md-nav__link--active,[data-md-color-primary=blue] .md-nav__link:active{color:#2196f3}[data-md-color-primary=blue] .md-nav__item--nested>.md-nav__link{color:inherit}button[data-md-color-primary=light-blue]{background-color:#03a9f4}[data-md-color-primary=light-blue] .md-typeset a{color:#03a9f4}[data-md-color-primary=light-blue] .md-header,[data-md-color-primary=light-blue] .md-hero{background-color:#03a9f4}[data-md-color-primary=light-blue] .md-nav__link--active,[data-md-color-primary=light-blue] .md-nav__link:active{color:#03a9f4}[data-md-color-primary=light-blue] .md-nav__item--nested>.md-nav__link{color:inherit}button[data-md-color-primary=cyan]{background-color:#00bcd4}[data-md-color-primary=cyan] .md-typeset a{color:#00bcd4}[data-md-color-primary=cyan] .md-header,[data-md-color-primary=cyan] .md-hero{background-color:#00bcd4}[data-md-color-primary=cyan] .md-nav__link--active,[data-md-color-primary=cyan] .md-nav__link:active{color:#00bcd4}[data-md-color-primary=cyan] .md-nav__item--nested>.md-nav__link{color:inherit}button[data-md-color-primary=teal]{background-color:#009688}[data-md-color-primary=teal] .md-typeset a{color:#009688}[data-md-color-primary=teal] .md-header,[data-md-color-primary=teal] .md-hero{background-color:#009688}[data-md-color-primary=teal] .md-nav__link--active,[data-md-color-primary=teal] .md-nav__link:active{color:#009688}[data-md-color-primary=teal] .md-nav__item--nested>.md-nav__link{color:inherit}button[data-md-color-primary=green]{background-color:#4caf50}[data-md-color-primary=green] .md-typeset a{color:#4caf50}[data-md-color-primary=green] .md-header,[data-md-color-primary=green] .md-hero{background-color:#4caf50}[data-md-color-primary=green] .md-nav__link--active,[data-md-color-primary=green] .md-nav__link:active{color:#4caf50}[data-md-color-primary=green] .md-nav__item--nested>.md-nav__link{color:inherit}button[data-md-color-primary=light-green]{background-color:#7cb342}[data-md-color-primary=light-green] .md-typeset a{color:#7cb342}[data-md-color-primary=light-green] .md-header,[data-md-color-primary=light-green] .md-hero{background-color:#7cb342}[data-md-color-primary=light-green] .md-nav__link--active,[data-md-color-primary=light-green] .md-nav__link:active{color:#7cb342}[data-md-color-primary=light-green] .md-nav__item--nested>.md-nav__link{color:inherit}button[data-md-color-primary=lime]{background-color:#c0ca33}[data-md-color-primary=lime] .md-typeset a{color:#c0ca33}[data-md-color-primary=lime] .md-header,[data-md-color-primary=lime] .md-hero{background-color:#c0ca33}[data-md-color-primary=lime] .md-nav__link--active,[data-md-color-primary=lime] .md-nav__link:active{color:#c0ca33}[data-md-color-primary=lime] .md-nav__item--nested>.md-nav__link{color:inherit}button[data-md-color-primary=yellow]{background-color:#f9a825}[data-md-color-primary=yellow] .md-typeset a{color:#f9a825}[data-md-color-primary=yellow] .md-header,[data-md-color-primary=yellow] .md-hero{background-color:#f9a825}[data-md-color-primary=yellow] .md-nav__link--active,[data-md-color-primary=yellow] .md-nav__link:active{color:#f9a825}[data-md-color-primary=yellow] .md-nav__item--nested>.md-nav__link{color:inherit}button[data-md-color-primary=amber]{background-color:#ffa000}[data-md-color-primary=amber] .md-typeset a{color:#ffa000}[data-md-color-primary=amber] .md-header,[data-md-color-primary=amber] .md-hero{background-color:#ffa000}[data-md-color-primary=amber] .md-nav__link--active,[data-md-color-primary=amber] .md-nav__link:active{color:#ffa000}[data-md-color-primary=amber] .md-nav__item--nested>.md-nav__link{color:inherit}button[data-md-color-primary=orange]{background-color:#fb8c00}[data-md-color-primary=orange] .md-typeset a{color:#fb8c00}[data-md-color-primary=orange] .md-header,[data-md-color-primary=orange] .md-hero{background-color:#fb8c00}[data-md-color-primary=orange] .md-nav__link--active,[data-md-color-primary=orange] .md-nav__link:active{color:#fb8c00}[data-md-color-primary=orange] .md-nav__item--nested>.md-nav__link{color:inherit}button[data-md-color-primary=deep-orange]{background-color:#ff7043}[data-md-color-primary=deep-orange] .md-typeset a{color:#ff7043}[data-md-color-primary=deep-orange] .md-header,[data-md-color-primary=deep-orange] .md-hero{background-color:#ff7043}[data-md-color-primary=deep-orange] .md-nav__link--active,[data-md-color-primary=deep-orange] .md-nav__link:active{color:#ff7043}[data-md-color-primary=deep-orange] .md-nav__item--nested>.md-nav__link{color:inherit}button[data-md-color-primary=brown]{background-color:#795548}[data-md-color-primary=brown] .md-typeset a{color:#795548}[data-md-color-primary=brown] .md-header,[data-md-color-primary=brown] .md-hero{background-color:#795548}[data-md-color-primary=brown] .md-nav__link--active,[data-md-color-primary=brown] .md-nav__link:active{color:#795548}[data-md-color-primary=brown] .md-nav__item--nested>.md-nav__link{color:inherit}button[data-md-color-primary=grey]{background-color:#757575}[data-md-color-primary=grey] .md-typeset a{color:#757575}[data-md-color-primary=grey] .md-header,[data-md-color-primary=grey] .md-hero{background-color:#757575}[data-md-color-primary=grey] .md-nav__link--active,[data-md-color-primary=grey] .md-nav__link:active{color:#757575}[data-md-color-primary=grey] .md-nav__item--nested>.md-nav__link{color:inherit}button[data-md-color-primary=blue-grey]{background-color:#546e7a}[data-md-color-primary=blue-grey] .md-typeset a{color:#546e7a}[data-md-color-primary=blue-grey] .md-header,[data-md-color-primary=blue-grey] .md-hero{background-color:#546e7a}[data-md-color-primary=blue-grey] .md-nav__link--active,[data-md-color-primary=blue-grey] .md-nav__link:active{color:#546e7a}[data-md-color-primary=blue-grey] .md-nav__item--nested>.md-nav__link{color:inherit}button[data-md-color-primary=white]{box-shadow:inset 0 0 .05rem rgba(0,0,0,.54)}[data-md-color-primary=white] .md-header,[data-md-color-primary=white] .md-hero,button[data-md-color-primary=white]{background-color:#fff;color:rgba(0,0,0,.87)}[data-md-color-primary=white] .md-hero--expand{border-bottom:.05rem solid rgba(0,0,0,.07)}button[data-md-color-accent=red]{background-color:#ff1744}[data-md-color-accent=red] .md-typeset a:active,[data-md-color-accent=red] .md-typeset a:hover{color:#ff1744}[data-md-color-accent=red] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover,[data-md-color-accent=red] .md-typeset pre code::-webkit-scrollbar-thumb:hover{background-color:#ff1744}[data-md-color-accent=red] .md-nav__link:focus,[data-md-color-accent=red] .md-nav__link:hover,[data-md-color-accent=red] .md-typeset .footnote li:hover .footnote-backref:hover,[data-md-color-accent=red] .md-typeset .footnote li:target .footnote-backref,[data-md-color-accent=red] .md-typeset .md-clipboard:active:before,[data-md-color-accent=red] .md-typeset .md-clipboard:hover:before,[data-md-color-accent=red] .md-typeset [id] .headerlink:focus,[data-md-color-accent=red] .md-typeset [id]:hover .headerlink:hover,[data-md-color-accent=red] .md-typeset [id]:target .headerlink{color:#ff1744}[data-md-color-accent=red] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#ff1744}[data-md-color-accent=red] .md-search-result__link:hover,[data-md-color-accent=red] .md-search-result__link[data-md-state=active]{background-color:rgba(255,23,68,.1)}[data-md-color-accent=red] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#ff1744}[data-md-color-accent=red] .md-source-file:hover:before{background-color:#ff1744}button[data-md-color-accent=pink]{background-color:#f50057}[data-md-color-accent=pink] .md-typeset a:active,[data-md-color-accent=pink] .md-typeset a:hover{color:#f50057}[data-md-color-accent=pink] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover,[data-md-color-accent=pink] .md-typeset pre code::-webkit-scrollbar-thumb:hover{background-color:#f50057}[data-md-color-accent=pink] .md-nav__link:focus,[data-md-color-accent=pink] .md-nav__link:hover,[data-md-color-accent=pink] .md-typeset .footnote li:hover .footnote-backref:hover,[data-md-color-accent=pink] .md-typeset .footnote li:target .footnote-backref,[data-md-color-accent=pink] .md-typeset .md-clipboard:active:before,[data-md-color-accent=pink] .md-typeset .md-clipboard:hover:before,[data-md-color-accent=pink] .md-typeset [id] .headerlink:focus,[data-md-color-accent=pink] .md-typeset [id]:hover .headerlink:hover,[data-md-color-accent=pink] .md-typeset [id]:target .headerlink{color:#f50057}[data-md-color-accent=pink] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#f50057}[data-md-color-accent=pink] .md-search-result__link:hover,[data-md-color-accent=pink] .md-search-result__link[data-md-state=active]{background-color:rgba(245,0,87,.1)}[data-md-color-accent=pink] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#f50057}[data-md-color-accent=pink] .md-source-file:hover:before{background-color:#f50057}button[data-md-color-accent=purple]{background-color:#e040fb}[data-md-color-accent=purple] .md-typeset a:active,[data-md-color-accent=purple] .md-typeset a:hover{color:#e040fb}[data-md-color-accent=purple] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover,[data-md-color-accent=purple] .md-typeset pre code::-webkit-scrollbar-thumb:hover{background-color:#e040fb}[data-md-color-accent=purple] .md-nav__link:focus,[data-md-color-accent=purple] .md-nav__link:hover,[data-md-color-accent=purple] .md-typeset .footnote li:hover .footnote-backref:hover,[data-md-color-accent=purple] .md-typeset .footnote li:target .footnote-backref,[data-md-color-accent=purple] .md-typeset .md-clipboard:active:before,[data-md-color-accent=purple] .md-typeset .md-clipboard:hover:before,[data-md-color-accent=purple] .md-typeset [id] .headerlink:focus,[data-md-color-accent=purple] .md-typeset [id]:hover .headerlink:hover,[data-md-color-accent=purple] .md-typeset [id]:target .headerlink{color:#e040fb}[data-md-color-accent=purple] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#e040fb}[data-md-color-accent=purple] .md-search-result__link:hover,[data-md-color-accent=purple] .md-search-result__link[data-md-state=active]{background-color:rgba(224,64,251,.1)}[data-md-color-accent=purple] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#e040fb}[data-md-color-accent=purple] .md-source-file:hover:before{background-color:#e040fb}button[data-md-color-accent=deep-purple]{background-color:#7c4dff}[data-md-color-accent=deep-purple] .md-typeset a:active,[data-md-color-accent=deep-purple] .md-typeset a:hover{color:#7c4dff}[data-md-color-accent=deep-purple] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover,[data-md-color-accent=deep-purple] .md-typeset pre code::-webkit-scrollbar-thumb:hover{background-color:#7c4dff}[data-md-color-accent=deep-purple] .md-nav__link:focus,[data-md-color-accent=deep-purple] .md-nav__link:hover,[data-md-color-accent=deep-purple] .md-typeset .footnote li:hover .footnote-backref:hover,[data-md-color-accent=deep-purple] .md-typeset .footnote li:target .footnote-backref,[data-md-color-accent=deep-purple] .md-typeset .md-clipboard:active:before,[data-md-color-accent=deep-purple] .md-typeset .md-clipboard:hover:before,[data-md-color-accent=deep-purple] .md-typeset [id] .headerlink:focus,[data-md-color-accent=deep-purple] .md-typeset [id]:hover .headerlink:hover,[data-md-color-accent=deep-purple] .md-typeset [id]:target .headerlink{color:#7c4dff}[data-md-color-accent=deep-purple] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#7c4dff}[data-md-color-accent=deep-purple] .md-search-result__link:hover,[data-md-color-accent=deep-purple] .md-search-result__link[data-md-state=active]{background-color:rgba(124,77,255,.1)}[data-md-color-accent=deep-purple] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#7c4dff}[data-md-color-accent=deep-purple] .md-source-file:hover:before{background-color:#7c4dff}button[data-md-color-accent=indigo]{background-color:#536dfe}[data-md-color-accent=indigo] .md-typeset a:active,[data-md-color-accent=indigo] .md-typeset a:hover{color:#536dfe}[data-md-color-accent=indigo] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover,[data-md-color-accent=indigo] .md-typeset pre code::-webkit-scrollbar-thumb:hover{background-color:#536dfe}[data-md-color-accent=indigo] .md-nav__link:focus,[data-md-color-accent=indigo] .md-nav__link:hover,[data-md-color-accent=indigo] .md-typeset .footnote li:hover .footnote-backref:hover,[data-md-color-accent=indigo] .md-typeset .footnote li:target .footnote-backref,[data-md-color-accent=indigo] .md-typeset .md-clipboard:active:before,[data-md-color-accent=indigo] .md-typeset .md-clipboard:hover:before,[data-md-color-accent=indigo] .md-typeset [id] .headerlink:focus,[data-md-color-accent=indigo] .md-typeset [id]:hover .headerlink:hover,[data-md-color-accent=indigo] .md-typeset [id]:target .headerlink{color:#536dfe}[data-md-color-accent=indigo] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#536dfe}[data-md-color-accent=indigo] .md-search-result__link:hover,[data-md-color-accent=indigo] .md-search-result__link[data-md-state=active]{background-color:rgba(83,109,254,.1)}[data-md-color-accent=indigo] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#536dfe}[data-md-color-accent=indigo] .md-source-file:hover:before{background-color:#536dfe}button[data-md-color-accent=blue]{background-color:#448aff}[data-md-color-accent=blue] .md-typeset a:active,[data-md-color-accent=blue] .md-typeset a:hover{color:#448aff}[data-md-color-accent=blue] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover,[data-md-color-accent=blue] .md-typeset pre code::-webkit-scrollbar-thumb:hover{background-color:#448aff}[data-md-color-accent=blue] .md-nav__link:focus,[data-md-color-accent=blue] .md-nav__link:hover,[data-md-color-accent=blue] .md-typeset .footnote li:hover .footnote-backref:hover,[data-md-color-accent=blue] .md-typeset .footnote li:target .footnote-backref,[data-md-color-accent=blue] .md-typeset .md-clipboard:active:before,[data-md-color-accent=blue] .md-typeset .md-clipboard:hover:before,[data-md-color-accent=blue] .md-typeset [id] .headerlink:focus,[data-md-color-accent=blue] .md-typeset [id]:hover .headerlink:hover,[data-md-color-accent=blue] .md-typeset [id]:target .headerlink{color:#448aff}[data-md-color-accent=blue] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#448aff}[data-md-color-accent=blue] .md-search-result__link:hover,[data-md-color-accent=blue] .md-search-result__link[data-md-state=active]{background-color:rgba(68,138,255,.1)}[data-md-color-accent=blue] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#448aff}[data-md-color-accent=blue] .md-source-file:hover:before{background-color:#448aff}button[data-md-color-accent=light-blue]{background-color:#0091ea}[data-md-color-accent=light-blue] .md-typeset a:active,[data-md-color-accent=light-blue] .md-typeset a:hover{color:#0091ea}[data-md-color-accent=light-blue] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover,[data-md-color-accent=light-blue] .md-typeset pre code::-webkit-scrollbar-thumb:hover{background-color:#0091ea}[data-md-color-accent=light-blue] .md-nav__link:focus,[data-md-color-accent=light-blue] .md-nav__link:hover,[data-md-color-accent=light-blue] .md-typeset .footnote li:hover .footnote-backref:hover,[data-md-color-accent=light-blue] .md-typeset .footnote li:target .footnote-backref,[data-md-color-accent=light-blue] .md-typeset .md-clipboard:active:before,[data-md-color-accent=light-blue] .md-typeset .md-clipboard:hover:before,[data-md-color-accent=light-blue] .md-typeset [id] .headerlink:focus,[data-md-color-accent=light-blue] .md-typeset [id]:hover .headerlink:hover,[data-md-color-accent=light-blue] .md-typeset [id]:target .headerlink{color:#0091ea}[data-md-color-accent=light-blue] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#0091ea}[data-md-color-accent=light-blue] .md-search-result__link:hover,[data-md-color-accent=light-blue] .md-search-result__link[data-md-state=active]{background-color:rgba(0,145,234,.1)}[data-md-color-accent=light-blue] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#0091ea}[data-md-color-accent=light-blue] .md-source-file:hover:before{background-color:#0091ea}button[data-md-color-accent=cyan]{background-color:#00b8d4}[data-md-color-accent=cyan] .md-typeset a:active,[data-md-color-accent=cyan] .md-typeset a:hover{color:#00b8d4}[data-md-color-accent=cyan] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover,[data-md-color-accent=cyan] .md-typeset pre code::-webkit-scrollbar-thumb:hover{background-color:#00b8d4}[data-md-color-accent=cyan] .md-nav__link:focus,[data-md-color-accent=cyan] .md-nav__link:hover,[data-md-color-accent=cyan] .md-typeset .footnote li:hover .footnote-backref:hover,[data-md-color-accent=cyan] .md-typeset .footnote li:target .footnote-backref,[data-md-color-accent=cyan] .md-typeset .md-clipboard:active:before,[data-md-color-accent=cyan] .md-typeset .md-clipboard:hover:before,[data-md-color-accent=cyan] .md-typeset [id] .headerlink:focus,[data-md-color-accent=cyan] .md-typeset [id]:hover .headerlink:hover,[data-md-color-accent=cyan] .md-typeset [id]:target .headerlink{color:#00b8d4}[data-md-color-accent=cyan] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#00b8d4}[data-md-color-accent=cyan] .md-search-result__link:hover,[data-md-color-accent=cyan] .md-search-result__link[data-md-state=active]{background-color:rgba(0,184,212,.1)}[data-md-color-accent=cyan] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#00b8d4}[data-md-color-accent=cyan] .md-source-file:hover:before{background-color:#00b8d4}button[data-md-color-accent=teal]{background-color:#00bfa5}[data-md-color-accent=teal] .md-typeset a:active,[data-md-color-accent=teal] .md-typeset a:hover{color:#00bfa5}[data-md-color-accent=teal] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover,[data-md-color-accent=teal] .md-typeset pre code::-webkit-scrollbar-thumb:hover{background-color:#00bfa5}[data-md-color-accent=teal] .md-nav__link:focus,[data-md-color-accent=teal] .md-nav__link:hover,[data-md-color-accent=teal] .md-typeset .footnote li:hover .footnote-backref:hover,[data-md-color-accent=teal] .md-typeset .footnote li:target .footnote-backref,[data-md-color-accent=teal] .md-typeset .md-clipboard:active:before,[data-md-color-accent=teal] .md-typeset .md-clipboard:hover:before,[data-md-color-accent=teal] .md-typeset [id] .headerlink:focus,[data-md-color-accent=teal] .md-typeset [id]:hover .headerlink:hover,[data-md-color-accent=teal] .md-typeset [id]:target .headerlink{color:#00bfa5}[data-md-color-accent=teal] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#00bfa5}[data-md-color-accent=teal] .md-search-result__link:hover,[data-md-color-accent=teal] .md-search-result__link[data-md-state=active]{background-color:rgba(0,191,165,.1)}[data-md-color-accent=teal] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#00bfa5}[data-md-color-accent=teal] .md-source-file:hover:before{background-color:#00bfa5}button[data-md-color-accent=green]{background-color:#00c853}[data-md-color-accent=green] .md-typeset a:active,[data-md-color-accent=green] .md-typeset a:hover{color:#00c853}[data-md-color-accent=green] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover,[data-md-color-accent=green] .md-typeset pre code::-webkit-scrollbar-thumb:hover{background-color:#00c853}[data-md-color-accent=green] .md-nav__link:focus,[data-md-color-accent=green] .md-nav__link:hover,[data-md-color-accent=green] .md-typeset .footnote li:hover .footnote-backref:hover,[data-md-color-accent=green] .md-typeset .footnote li:target .footnote-backref,[data-md-color-accent=green] .md-typeset .md-clipboard:active:before,[data-md-color-accent=green] .md-typeset .md-clipboard:hover:before,[data-md-color-accent=green] .md-typeset [id] .headerlink:focus,[data-md-color-accent=green] .md-typeset [id]:hover .headerlink:hover,[data-md-color-accent=green] .md-typeset [id]:target .headerlink{color:#00c853}[data-md-color-accent=green] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#00c853}[data-md-color-accent=green] .md-search-result__link:hover,[data-md-color-accent=green] .md-search-result__link[data-md-state=active]{background-color:rgba(0,200,83,.1)}[data-md-color-accent=green] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#00c853}[data-md-color-accent=green] .md-source-file:hover:before{background-color:#00c853}button[data-md-color-accent=light-green]{background-color:#64dd17}[data-md-color-accent=light-green] .md-typeset a:active,[data-md-color-accent=light-green] .md-typeset a:hover{color:#64dd17}[data-md-color-accent=light-green] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover,[data-md-color-accent=light-green] .md-typeset pre code::-webkit-scrollbar-thumb:hover{background-color:#64dd17}[data-md-color-accent=light-green] .md-nav__link:focus,[data-md-color-accent=light-green] .md-nav__link:hover,[data-md-color-accent=light-green] .md-typeset .footnote li:hover .footnote-backref:hover,[data-md-color-accent=light-green] .md-typeset .footnote li:target .footnote-backref,[data-md-color-accent=light-green] .md-typeset .md-clipboard:active:before,[data-md-color-accent=light-green] .md-typeset .md-clipboard:hover:before,[data-md-color-accent=light-green] .md-typeset [id] .headerlink:focus,[data-md-color-accent=light-green] .md-typeset [id]:hover .headerlink:hover,[data-md-color-accent=light-green] .md-typeset [id]:target .headerlink{color:#64dd17}[data-md-color-accent=light-green] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#64dd17}[data-md-color-accent=light-green] .md-search-result__link:hover,[data-md-color-accent=light-green] .md-search-result__link[data-md-state=active]{background-color:rgba(100,221,23,.1)}[data-md-color-accent=light-green] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#64dd17}[data-md-color-accent=light-green] .md-source-file:hover:before{background-color:#64dd17}button[data-md-color-accent=lime]{background-color:#aeea00}[data-md-color-accent=lime] .md-typeset a:active,[data-md-color-accent=lime] .md-typeset a:hover{color:#aeea00}[data-md-color-accent=lime] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover,[data-md-color-accent=lime] .md-typeset pre code::-webkit-scrollbar-thumb:hover{background-color:#aeea00}[data-md-color-accent=lime] .md-nav__link:focus,[data-md-color-accent=lime] .md-nav__link:hover,[data-md-color-accent=lime] .md-typeset .footnote li:hover .footnote-backref:hover,[data-md-color-accent=lime] .md-typeset .footnote li:target .footnote-backref,[data-md-color-accent=lime] .md-typeset .md-clipboard:active:before,[data-md-color-accent=lime] .md-typeset .md-clipboard:hover:before,[data-md-color-accent=lime] .md-typeset [id] .headerlink:focus,[data-md-color-accent=lime] .md-typeset [id]:hover .headerlink:hover,[data-md-color-accent=lime] .md-typeset [id]:target .headerlink{color:#aeea00}[data-md-color-accent=lime] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#aeea00}[data-md-color-accent=lime] .md-search-result__link:hover,[data-md-color-accent=lime] .md-search-result__link[data-md-state=active]{background-color:rgba(174,234,0,.1)}[data-md-color-accent=lime] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#aeea00}[data-md-color-accent=lime] .md-source-file:hover:before{background-color:#aeea00}button[data-md-color-accent=yellow]{background-color:#ffd600}[data-md-color-accent=yellow] .md-typeset a:active,[data-md-color-accent=yellow] .md-typeset a:hover{color:#ffd600}[data-md-color-accent=yellow] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover,[data-md-color-accent=yellow] .md-typeset pre code::-webkit-scrollbar-thumb:hover{background-color:#ffd600}[data-md-color-accent=yellow] .md-nav__link:focus,[data-md-color-accent=yellow] .md-nav__link:hover,[data-md-color-accent=yellow] .md-typeset .footnote li:hover .footnote-backref:hover,[data-md-color-accent=yellow] .md-typeset .footnote li:target .footnote-backref,[data-md-color-accent=yellow] .md-typeset .md-clipboard:active:before,[data-md-color-accent=yellow] .md-typeset .md-clipboard:hover:before,[data-md-color-accent=yellow] .md-typeset [id] .headerlink:focus,[data-md-color-accent=yellow] .md-typeset [id]:hover .headerlink:hover,[data-md-color-accent=yellow] .md-typeset [id]:target .headerlink{color:#ffd600}[data-md-color-accent=yellow] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#ffd600}[data-md-color-accent=yellow] .md-search-result__link:hover,[data-md-color-accent=yellow] .md-search-result__link[data-md-state=active]{background-color:rgba(255,214,0,.1)}[data-md-color-accent=yellow] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#ffd600}[data-md-color-accent=yellow] .md-source-file:hover:before{background-color:#ffd600}button[data-md-color-accent=amber]{background-color:#ffab00}[data-md-color-accent=amber] .md-typeset a:active,[data-md-color-accent=amber] .md-typeset a:hover{color:#ffab00}[data-md-color-accent=amber] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover,[data-md-color-accent=amber] .md-typeset pre code::-webkit-scrollbar-thumb:hover{background-color:#ffab00}[data-md-color-accent=amber] .md-nav__link:focus,[data-md-color-accent=amber] .md-nav__link:hover,[data-md-color-accent=amber] .md-typeset .footnote li:hover .footnote-backref:hover,[data-md-color-accent=amber] .md-typeset .footnote li:target .footnote-backref,[data-md-color-accent=amber] .md-typeset .md-clipboard:active:before,[data-md-color-accent=amber] .md-typeset .md-clipboard:hover:before,[data-md-color-accent=amber] .md-typeset [id] .headerlink:focus,[data-md-color-accent=amber] .md-typeset [id]:hover .headerlink:hover,[data-md-color-accent=amber] .md-typeset [id]:target .headerlink{color:#ffab00}[data-md-color-accent=amber] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#ffab00}[data-md-color-accent=amber] .md-search-result__link:hover,[data-md-color-accent=amber] .md-search-result__link[data-md-state=active]{background-color:rgba(255,171,0,.1)}[data-md-color-accent=amber] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#ffab00}[data-md-color-accent=amber] .md-source-file:hover:before{background-color:#ffab00}button[data-md-color-accent=orange]{background-color:#ff9100}[data-md-color-accent=orange] .md-typeset a:active,[data-md-color-accent=orange] .md-typeset a:hover{color:#ff9100}[data-md-color-accent=orange] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover,[data-md-color-accent=orange] .md-typeset pre code::-webkit-scrollbar-thumb:hover{background-color:#ff9100}[data-md-color-accent=orange] .md-nav__link:focus,[data-md-color-accent=orange] .md-nav__link:hover,[data-md-color-accent=orange] .md-typeset .footnote li:hover .footnote-backref:hover,[data-md-color-accent=orange] .md-typeset .footnote li:target .footnote-backref,[data-md-color-accent=orange] .md-typeset .md-clipboard:active:before,[data-md-color-accent=orange] .md-typeset .md-clipboard:hover:before,[data-md-color-accent=orange] .md-typeset [id] .headerlink:focus,[data-md-color-accent=orange] .md-typeset [id]:hover .headerlink:hover,[data-md-color-accent=orange] .md-typeset [id]:target .headerlink{color:#ff9100}[data-md-color-accent=orange] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#ff9100}[data-md-color-accent=orange] .md-search-result__link:hover,[data-md-color-accent=orange] .md-search-result__link[data-md-state=active]{background-color:rgba(255,145,0,.1)}[data-md-color-accent=orange] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#ff9100}[data-md-color-accent=orange] .md-source-file:hover:before{background-color:#ff9100}button[data-md-color-accent=deep-orange]{background-color:#ff6e40}[data-md-color-accent=deep-orange] .md-typeset a:active,[data-md-color-accent=deep-orange] .md-typeset a:hover{color:#ff6e40}[data-md-color-accent=deep-orange] .md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover,[data-md-color-accent=deep-orange] .md-typeset pre code::-webkit-scrollbar-thumb:hover{background-color:#ff6e40}[data-md-color-accent=deep-orange] .md-nav__link:focus,[data-md-color-accent=deep-orange] .md-nav__link:hover,[data-md-color-accent=deep-orange] .md-typeset .footnote li:hover .footnote-backref:hover,[data-md-color-accent=deep-orange] .md-typeset .footnote li:target .footnote-backref,[data-md-color-accent=deep-orange] .md-typeset .md-clipboard:active:before,[data-md-color-accent=deep-orange] .md-typeset .md-clipboard:hover:before,[data-md-color-accent=deep-orange] .md-typeset [id] .headerlink:focus,[data-md-color-accent=deep-orange] .md-typeset [id]:hover .headerlink:hover,[data-md-color-accent=deep-orange] .md-typeset [id]:target .headerlink{color:#ff6e40}[data-md-color-accent=deep-orange] .md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#ff6e40}[data-md-color-accent=deep-orange] .md-search-result__link:hover,[data-md-color-accent=deep-orange] .md-search-result__link[data-md-state=active]{background-color:rgba(255,110,64,.1)}[data-md-color-accent=deep-orange] .md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#ff6e40}[data-md-color-accent=deep-orange] .md-source-file:hover:before{background-color:#ff6e40}@media only screen and (max-width:59.9375em){[data-md-color-primary=red] .md-nav__source{background-color:rgba(190,66,64,.9675)}[data-md-color-primary=pink] .md-nav__source{background-color:rgba(185,24,79,.9675)}[data-md-color-primary=purple] .md-nav__source{background-color:rgba(136,57,150,.9675)}[data-md-color-primary=deep-purple] .md-nav__source{background-color:rgba(100,69,154,.9675)}[data-md-color-primary=indigo] .md-nav__source{background-color:rgba(50,64,144,.9675)}[data-md-color-primary=blue] .md-nav__source{background-color:rgba(26,119,193,.9675)}[data-md-color-primary=light-blue] .md-nav__source{background-color:rgba(2,134,194,.9675)}[data-md-color-primary=cyan] .md-nav__source{background-color:rgba(0,150,169,.9675)}[data-md-color-primary=teal] .md-nav__source{background-color:rgba(0,119,108,.9675)}[data-md-color-primary=green] .md-nav__source{background-color:rgba(60,139,64,.9675)}[data-md-color-primary=light-green] .md-nav__source{background-color:rgba(99,142,53,.9675)}[data-md-color-primary=lime] .md-nav__source{background-color:rgba(153,161,41,.9675)}[data-md-color-primary=yellow] .md-nav__source{background-color:rgba(198,134,29,.9675)}[data-md-color-primary=amber] .md-nav__source{background-color:rgba(203,127,0,.9675)}[data-md-color-primary=orange] .md-nav__source{background-color:rgba(200,111,0,.9675)}[data-md-color-primary=deep-orange] .md-nav__source{background-color:rgba(203,89,53,.9675)}[data-md-color-primary=brown] .md-nav__source{background-color:rgba(96,68,57,.9675)}[data-md-color-primary=grey] .md-nav__source{background-color:rgba(93,93,93,.9675)}[data-md-color-primary=blue-grey] .md-nav__source{background-color:rgba(67,88,97,.9675)}[data-md-color-primary=white] .md-nav__source{background-color:rgba(0,0,0,.07);color:rgba(0,0,0,.87)}}@media only screen and (max-width:76.1875em){html [data-md-color-primary=red] .md-nav--primary .md-nav__title--site{background-color:#ef5350}html [data-md-color-primary=pink] .md-nav--primary .md-nav__title--site{background-color:#e91e63}html [data-md-color-primary=purple] .md-nav--primary .md-nav__title--site{background-color:#ab47bc}html [data-md-color-primary=deep-purple] .md-nav--primary .md-nav__title--site{background-color:#7e57c2}html [data-md-color-primary=indigo] .md-nav--primary .md-nav__title--site{background-color:#3f51b5}html [data-md-color-primary=blue] .md-nav--primary .md-nav__title--site{background-color:#2196f3}html [data-md-color-primary=light-blue] .md-nav--primary .md-nav__title--site{background-color:#03a9f4}html [data-md-color-primary=cyan] .md-nav--primary .md-nav__title--site{background-color:#00bcd4}html [data-md-color-primary=teal] .md-nav--primary .md-nav__title--site{background-color:#009688}html [data-md-color-primary=green] .md-nav--primary .md-nav__title--site{background-color:#4caf50}html [data-md-color-primary=light-green] .md-nav--primary .md-nav__title--site{background-color:#7cb342}html [data-md-color-primary=lime] .md-nav--primary .md-nav__title--site{background-color:#c0ca33}html [data-md-color-primary=yellow] .md-nav--primary .md-nav__title--site{background-color:#f9a825}html [data-md-color-primary=amber] .md-nav--primary .md-nav__title--site{background-color:#ffa000}html [data-md-color-primary=orange] .md-nav--primary .md-nav__title--site{background-color:#fb8c00}html [data-md-color-primary=deep-orange] .md-nav--primary .md-nav__title--site{background-color:#ff7043}html [data-md-color-primary=brown] .md-nav--primary .md-nav__title--site{background-color:#795548}html [data-md-color-primary=grey] .md-nav--primary .md-nav__title--site{background-color:#757575}html [data-md-color-primary=blue-grey] .md-nav--primary .md-nav__title--site{background-color:#546e7a}html [data-md-color-primary=white] .md-nav--primary .md-nav__title--site{background-color:#fff;color:rgba(0,0,0,.87)}[data-md-color-primary=white] .md-hero{border-bottom:.05rem solid rgba(0,0,0,.07)}}@media only screen and (min-width:76.25em){[data-md-color-primary=red] .md-tabs{background-color:#ef5350}[data-md-color-primary=pink] .md-tabs{background-color:#e91e63}[data-md-color-primary=purple] .md-tabs{background-color:#ab47bc}[data-md-color-primary=deep-purple] .md-tabs{background-color:#7e57c2}[data-md-color-primary=indigo] .md-tabs{background-color:#3f51b5}[data-md-color-primary=blue] .md-tabs{background-color:#2196f3}[data-md-color-primary=light-blue] .md-tabs{background-color:#03a9f4}[data-md-color-primary=cyan] .md-tabs{background-color:#00bcd4}[data-md-color-primary=teal] .md-tabs{background-color:#009688}[data-md-color-primary=green] .md-tabs{background-color:#4caf50}[data-md-color-primary=light-green] .md-tabs{background-color:#7cb342}[data-md-color-primary=lime] .md-tabs{background-color:#c0ca33}[data-md-color-primary=yellow] .md-tabs{background-color:#f9a825}[data-md-color-primary=amber] .md-tabs{background-color:#ffa000}[data-md-color-primary=orange] .md-tabs{background-color:#fb8c00}[data-md-color-primary=deep-orange] .md-tabs{background-color:#ff7043}[data-md-color-primary=brown] .md-tabs{background-color:#795548}[data-md-color-primary=grey] .md-tabs{background-color:#757575}[data-md-color-primary=blue-grey] .md-tabs{background-color:#546e7a}[data-md-color-primary=white] .md-tabs{border-bottom:.05rem solid rgba(0,0,0,.07);background-color:#fff;color:rgba(0,0,0,.87)}}@media only screen and (min-width:60em){[data-md-color-primary=white] .md-search__input{background-color:rgba(0,0,0,.07)}[data-md-color-primary=white] .md-search__input::-webkit-input-placeholder{color:rgba(0,0,0,.54)}[data-md-color-primary=white] .md-search__input:-ms-input-placeholder{color:rgba(0,0,0,.54)}[data-md-color-primary=white] .md-search__input::-ms-input-placeholder{color:rgba(0,0,0,.54)}[data-md-color-primary=white] .md-search__input::placeholder{color:rgba(0,0,0,.54)}}
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/assets/stylesheets/application.4031d38b.css b/lib/AutoConnect-master/docs/assets/stylesheets/application.4031d38b.css
deleted file mode 100644
index d31c1257dd44c1d04875dcacd2dbce703f761fb1..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/assets/stylesheets/application.4031d38b.css
+++ /dev/null
@@ -1 +0,0 @@
-@charset "UTF-8";html{box-sizing:border-box}*,:after,:before{box-sizing:inherit}html{-webkit-text-size-adjust:none;-moz-text-size-adjust:none;-ms-text-size-adjust:none;text-size-adjust:none}body{margin:0}hr{overflow:visible;box-sizing:content-box}a{-webkit-text-decoration-skip:objects}a,button,input,label{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}small,sub,sup{font-size:80%}sub,sup{position:relative;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}table{border-collapse:separate;border-spacing:0}td,th{font-weight:400;vertical-align:top}button{margin:0;padding:0;border:0;outline-style:none;background:transparent;font-size:inherit}input{border:0;outline:0}.md-clipboard:before,.md-icon,.md-nav__button,.md-nav__link:after,.md-nav__title:before,.md-search-result__article--document:before,.md-source-file:before,.md-typeset .admonition>.admonition-title:before,.md-typeset .admonition>summary:before,.md-typeset .critic.comment:before,.md-typeset .footnote-backref,.md-typeset .task-list-control .task-list-indicator:before,.md-typeset details>.admonition-title:before,.md-typeset details>summary:before,.md-typeset summary:after{font-family:Material Icons;font-style:normal;font-variant:normal;font-weight:400;line-height:1;text-transform:none;white-space:nowrap;speak:none;word-wrap:normal;direction:ltr}.md-content__icon,.md-footer-nav__button,.md-header-nav__button,.md-nav__button,.md-nav__title:before,.md-search-result__article--document:before{display:inline-block;margin:.2rem;padding:.4rem;font-size:1.2rem;cursor:pointer}.md-icon--arrow-back:before{content:""}.md-icon--arrow-forward:before{content:""}.md-icon--menu:before{content:""}.md-icon--search:before{content:""}[dir=rtl] .md-icon--arrow-back:before{content:""}[dir=rtl] .md-icon--arrow-forward:before{content:""}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body,input{color:rgba(0,0,0,.87);-webkit-font-feature-settings:"kern","liga";font-feature-settings:"kern","liga";font-family:Helvetica Neue,Helvetica,Arial,sans-serif}code,kbd,pre{color:rgba(0,0,0,.87);-webkit-font-feature-settings:"kern";font-feature-settings:"kern";font-family:Courier New,Courier,monospace}.md-typeset{font-size:.8rem;line-height:1.6;-webkit-print-color-adjust:exact}.md-typeset blockquote,.md-typeset ol,.md-typeset p,.md-typeset ul{margin:1em 0}.md-typeset h1{margin:0 0 2rem;color:rgba(0,0,0,.54);font-size:1.5625rem;line-height:1.3}.md-typeset h1,.md-typeset h2{font-weight:300;letter-spacing:-.01em}.md-typeset h2{margin:2rem 0 .8rem;font-size:1.25rem;line-height:1.4}.md-typeset h3{margin:1.6rem 0 .8rem;font-size:1rem;font-weight:400;letter-spacing:-.01em;line-height:1.5}.md-typeset h2+h3{margin-top:.8rem}.md-typeset h4{font-size:.8rem}.md-typeset h4,.md-typeset h5,.md-typeset h6{margin:.8rem 0;font-weight:700;letter-spacing:-.01em}.md-typeset h5,.md-typeset h6{color:rgba(0,0,0,.54);font-size:.64rem}.md-typeset h5{text-transform:uppercase}.md-typeset hr{margin:1.5em 0;border-bottom:.05rem dotted rgba(0,0,0,.26)}.md-typeset a{color:#3f51b5;word-break:break-word}.md-typeset a,.md-typeset a:before{transition:color .125s}.md-typeset a:active,.md-typeset a:hover{color:#536dfe}.md-typeset code,.md-typeset pre{background-color:hsla(0,0%,92.5%,.5);color:#37474f;font-size:85%;direction:ltr}.md-typeset code{margin:0 .29412em;padding:.07353em 0;border-radius:.1rem;box-shadow:.29412em 0 0 hsla(0,0%,92.5%,.5),-.29412em 0 0 hsla(0,0%,92.5%,.5);word-break:break-word;-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset h1 code,.md-typeset h2 code,.md-typeset h3 code,.md-typeset h4 code,.md-typeset h5 code,.md-typeset h6 code{margin:0;background-color:transparent;box-shadow:none}.md-typeset a>code{margin:inherit;padding:inherit;border-radius:initial;background-color:inherit;color:inherit;box-shadow:none}.md-typeset pre{position:relative;margin:1em 0;border-radius:.1rem;line-height:1.4;-webkit-overflow-scrolling:touch}.md-typeset pre>code{display:block;margin:0;padding:.525rem .6rem;background-color:transparent;font-size:inherit;box-shadow:none;-webkit-box-decoration-break:slice;box-decoration-break:slice;overflow:auto}.md-typeset pre>code::-webkit-scrollbar{width:.2rem;height:.2rem}.md-typeset pre>code::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.26)}.md-typeset pre>code::-webkit-scrollbar-thumb:hover{background-color:#536dfe}.md-typeset kbd{padding:0 .29412em;border-radius:.15rem;border:.05rem solid #c9c9c9;border-bottom-color:#bcbcbc;background-color:#fcfcfc;color:#555;font-size:85%;box-shadow:0 .05rem 0 #b0b0b0;word-break:break-word}.md-typeset mark{margin:0 .25em;padding:.0625em 0;border-radius:.1rem;background-color:rgba(255,235,59,.5);box-shadow:.25em 0 0 rgba(255,235,59,.5),-.25em 0 0 rgba(255,235,59,.5);word-break:break-word;-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset abbr{border-bottom:.05rem dotted rgba(0,0,0,.54);text-decoration:none;cursor:help}.md-typeset small{opacity:.75}.md-typeset sub,.md-typeset sup{margin-left:.07812em}[dir=rtl] .md-typeset sub,[dir=rtl] .md-typeset sup{margin-right:.07812em;margin-left:0}.md-typeset blockquote{padding-left:.6rem;border-left:.2rem solid rgba(0,0,0,.26);color:rgba(0,0,0,.54)}[dir=rtl] .md-typeset blockquote{padding-right:.6rem;padding-left:0;border-right:.2rem solid rgba(0,0,0,.26);border-left:initial}.md-typeset ul{list-style-type:disc}.md-typeset ol,.md-typeset ul{margin-left:.625em;padding:0}[dir=rtl] .md-typeset ol,[dir=rtl] .md-typeset ul{margin-right:.625em;margin-left:0}.md-typeset ol ol,.md-typeset ul ol{list-style-type:lower-alpha}.md-typeset ol ol ol,.md-typeset ul ol ol{list-style-type:lower-roman}.md-typeset ol li,.md-typeset ul li{margin-bottom:.5em;margin-left:1.25em}[dir=rtl] .md-typeset ol li,[dir=rtl] .md-typeset ul li{margin-right:1.25em;margin-left:0}.md-typeset ol li blockquote,.md-typeset ol li p,.md-typeset ul li blockquote,.md-typeset ul li p{margin:.5em 0}.md-typeset ol li:last-child,.md-typeset ul li:last-child{margin-bottom:0}.md-typeset ol li ol,.md-typeset ol li ul,.md-typeset ul li ol,.md-typeset ul li ul{margin:.5em 0 .5em .625em}[dir=rtl] .md-typeset ol li ol,[dir=rtl] .md-typeset ol li ul,[dir=rtl] .md-typeset ul li ol,[dir=rtl] .md-typeset ul li ul{margin-right:.625em;margin-left:0}.md-typeset dd{margin:1em 0 1em 1.875em}[dir=rtl] .md-typeset dd{margin-right:1.875em;margin-left:0}.md-typeset iframe,.md-typeset img,.md-typeset svg{max-width:100%}.md-typeset table:not([class]){box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);display:inline-block;max-width:100%;border-radius:.1rem;font-size:.64rem;overflow:auto;-webkit-overflow-scrolling:touch}.md-typeset table:not([class])+*{margin-top:1.5em}.md-typeset table:not([class]) td:not([align]),.md-typeset table:not([class]) th:not([align]){text-align:left}[dir=rtl] .md-typeset table:not([class]) td:not([align]),[dir=rtl] .md-typeset table:not([class]) th:not([align]){text-align:right}.md-typeset table:not([class]) th{min-width:5rem;padding:.6rem .8rem;background-color:rgba(0,0,0,.54);color:#fff;vertical-align:top}.md-typeset table:not([class]) td{padding:.6rem .8rem;border-top:.05rem solid rgba(0,0,0,.07);vertical-align:top}.md-typeset table:not([class]) tr{transition:background-color .125s}.md-typeset table:not([class]) tr:hover{background-color:rgba(0,0,0,.035);box-shadow:inset 0 .05rem 0 #fff}.md-typeset table:not([class]) tr:first-child td{border-top:0}.md-typeset table:not([class]) a{word-break:normal}.md-typeset__scrollwrap{margin:1em -.8rem;overflow-x:auto;-webkit-overflow-scrolling:touch}.md-typeset .md-typeset__table{display:inline-block;margin-bottom:.5em;padding:0 .8rem}.md-typeset .md-typeset__table table{display:table;width:100%;margin:0;overflow:hidden}html{font-size:125%;overflow-x:hidden}body,html{height:100%}body{position:relative;font-size:.5rem}hr{display:block;height:.05rem;padding:0;border:0}.md-svg{display:none}.md-grid{max-width:61rem;margin-right:auto;margin-left:auto}.md-container,.md-main{overflow:auto}.md-container{display:table;width:100%;height:100%;padding-top:2.4rem;table-layout:fixed}.md-main{display:table-row;height:100%}.md-main__inner{height:100%;padding-top:1.5rem;padding-bottom:.05rem}.md-toggle{display:none}.md-overlay{position:fixed;top:0;width:0;height:0;transition:width 0s .25s,height 0s .25s,opacity .25s;background-color:rgba(0,0,0,.54);opacity:0;z-index:3}.md-flex{display:table}.md-flex__cell{display:table-cell;position:relative;vertical-align:top}.md-flex__cell--shrink{width:0}.md-flex__cell--stretch{display:table;width:100%;table-layout:fixed}.md-flex__ellipsis{display:table-cell;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-skip{position:fixed;width:.05rem;height:.05rem;margin:.5rem;padding:.3rem .5rem;-webkit-transform:translateY(.4rem);transform:translateY(.4rem);border-radius:.1rem;background-color:rgba(0,0,0,.87);color:#fff;font-size:.64rem;opacity:0;overflow:hidden}.md-skip:focus{width:auto;height:auto;clip:auto;-webkit-transform:translateX(0);transform:translateX(0);transition:opacity .175s 75ms,-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .175s 75ms;transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .175s 75ms,-webkit-transform .25s cubic-bezier(.4,0,.2,1);opacity:1;z-index:10}@page{margin:25mm}.md-clipboard{position:absolute;top:.3rem;right:.3rem;width:1.4rem;height:1.4rem;border-radius:.1rem;font-size:.8rem;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;backface-visibility:hidden}.md-clipboard:before{transition:color .25s,opacity .25s;color:rgba(0,0,0,.07);content:"\E14D"}.codehilite:hover .md-clipboard:before,.md-typeset .highlight:hover .md-clipboard:before,pre:hover .md-clipboard:before{color:rgba(0,0,0,.54)}.md-clipboard:focus:before,.md-clipboard:hover:before{color:#536dfe}.md-clipboard__message{display:block;position:absolute;top:0;right:1.7rem;padding:.3rem .5rem;-webkit-transform:translateX(.4rem);transform:translateX(.4rem);transition:opacity .175s,-webkit-transform .25s cubic-bezier(.9,.1,.9,0);transition:transform .25s cubic-bezier(.9,.1,.9,0),opacity .175s;transition:transform .25s cubic-bezier(.9,.1,.9,0),opacity .175s,-webkit-transform .25s cubic-bezier(.9,.1,.9,0);border-radius:.1rem;background-color:rgba(0,0,0,.54);color:#fff;font-size:.64rem;white-space:nowrap;opacity:0;pointer-events:none}.md-clipboard__message--active{-webkit-transform:translateX(0);transform:translateX(0);transition:opacity .175s 75ms,-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .175s 75ms;transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .175s 75ms,-webkit-transform .25s cubic-bezier(.4,0,.2,1);opacity:1;pointer-events:auto}.md-clipboard__message:before{content:attr(aria-label)}.md-clipboard__message:after{display:block;position:absolute;top:50%;right:-.2rem;width:0;margin-top:-.2rem;border-color:transparent rgba(0,0,0,.54);border-style:solid;border-width:.2rem 0 .2rem .2rem;content:""}.md-content__inner{margin:0 .8rem 1.2rem;padding-top:.6rem}.md-content__inner:before{display:block;height:.4rem;content:""}.md-content__inner>:last-child{margin-bottom:0}.md-content__icon{position:relative;margin:.4rem 0;padding:0;float:right}.md-typeset .md-content__icon{color:rgba(0,0,0,.26)}.md-header{position:fixed;top:0;right:0;left:0;height:2.4rem;transition:background-color .25s,color .25s;background-color:#3f51b5;color:#fff;box-shadow:none;z-index:2;-webkit-backface-visibility:hidden;backface-visibility:hidden}.no-js .md-header{transition:none;box-shadow:none}.md-header[data-md-state=shadow]{transition:background-color .25s,color .25s,box-shadow .25s;box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2)}.md-header-nav{padding:0 .2rem}.md-header-nav__button{position:relative;transition:opacity .25s;z-index:1}.md-header-nav__button:hover{opacity:.7}.md-header-nav__button.md-logo *{display:block}.no-js .md-header-nav__button.md-icon--search{display:none}.md-header-nav__topic{display:block;position:absolute;transition:opacity .15s,-webkit-transform .4s cubic-bezier(.1,.7,.1,1);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s,-webkit-transform .4s cubic-bezier(.1,.7,.1,1);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-header-nav__topic+.md-header-nav__topic{-webkit-transform:translateX(1.25rem);transform:translateX(1.25rem);transition:opacity .15s,-webkit-transform .4s cubic-bezier(1,.7,.1,.1);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s,-webkit-transform .4s cubic-bezier(1,.7,.1,.1);opacity:0;z-index:-1;pointer-events:none}[dir=rtl] .md-header-nav__topic+.md-header-nav__topic{-webkit-transform:translateX(-1.25rem);transform:translateX(-1.25rem)}.no-js .md-header-nav__topic{position:static}.no-js .md-header-nav__topic+.md-header-nav__topic{display:none}.md-header-nav__title{padding:0 1rem;font-size:.9rem;line-height:2.4rem}.md-header-nav__title[data-md-state=active] .md-header-nav__topic{-webkit-transform:translateX(-1.25rem);transform:translateX(-1.25rem);transition:opacity .15s,-webkit-transform .4s cubic-bezier(1,.7,.1,.1);transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s;transition:transform .4s cubic-bezier(1,.7,.1,.1),opacity .15s,-webkit-transform .4s cubic-bezier(1,.7,.1,.1);opacity:0;z-index:-1;pointer-events:none}[dir=rtl] .md-header-nav__title[data-md-state=active] .md-header-nav__topic{-webkit-transform:translateX(1.25rem);transform:translateX(1.25rem)}.md-header-nav__title[data-md-state=active] .md-header-nav__topic+.md-header-nav__topic{-webkit-transform:translateX(0);transform:translateX(0);transition:opacity .15s,-webkit-transform .4s cubic-bezier(.1,.7,.1,1);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .15s,-webkit-transform .4s cubic-bezier(.1,.7,.1,1);opacity:1;z-index:0;pointer-events:auto}.md-header-nav__source{display:none}.md-hero{transition:background .25s;background-color:#3f51b5;color:#fff;font-size:1rem;overflow:hidden}.md-hero__inner{margin-top:1rem;padding:.8rem .8rem .4rem;transition:opacity .25s,-webkit-transform .4s cubic-bezier(.1,.7,.1,1);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s,-webkit-transform .4s cubic-bezier(.1,.7,.1,1);transition-delay:.1s}[data-md-state=hidden] .md-hero__inner{pointer-events:none;-webkit-transform:translateY(.625rem);transform:translateY(.625rem);transition:opacity .1s 0s,-webkit-transform 0s .4s;transition:transform 0s .4s,opacity .1s 0s;transition:transform 0s .4s,opacity .1s 0s,-webkit-transform 0s .4s;opacity:0}.md-hero--expand .md-hero__inner{margin-bottom:1.2rem}.md-footer-nav{background-color:rgba(0,0,0,.87);color:#fff}.md-footer-nav__inner{padding:.2rem;overflow:auto}.md-footer-nav__link{padding-top:1.4rem;padding-bottom:.4rem;transition:opacity .25s}.md-footer-nav__link:hover{opacity:.7}.md-footer-nav__link--prev{width:25%;float:left}[dir=rtl] .md-footer-nav__link--prev{float:right}.md-footer-nav__link--next{width:75%;float:right;text-align:right}[dir=rtl] .md-footer-nav__link--next{float:left;text-align:left}.md-footer-nav__button{transition:background .25s}.md-footer-nav__title{position:relative;padding:0 1rem;font-size:.9rem;line-height:2.4rem}.md-footer-nav__direction{position:absolute;right:0;left:0;margin-top:-1rem;padding:0 1rem;color:hsla(0,0%,100%,.7);font-size:.75rem}.md-footer-meta{background-color:rgba(0,0,0,.895)}.md-footer-meta__inner{padding:.2rem;overflow:auto}html .md-footer-meta.md-typeset a{color:hsla(0,0%,100%,.7)}html .md-footer-meta.md-typeset a:focus,html .md-footer-meta.md-typeset a:hover{color:#fff}.md-footer-copyright{margin:0 .6rem;padding:.4rem 0;color:hsla(0,0%,100%,.3);font-size:.64rem}.md-footer-copyright__highlight{color:hsla(0,0%,100%,.7)}.md-footer-social{margin:0 .4rem;padding:.2rem 0 .6rem}.md-footer-social__link{display:inline-block;width:1.6rem;height:1.6rem;font-size:.8rem;text-align:center}.md-footer-social__link:before{line-height:1.9}.md-nav{font-size:.7rem;line-height:1.3}.md-nav__title{display:block;padding:0 .6rem;font-weight:700;text-overflow:ellipsis;overflow:hidden}.md-nav__title:before{display:none;content:"\E5C4"}[dir=rtl] .md-nav__title:before{content:"\E5C8"}.md-nav__title .md-nav__button{display:none}.md-nav__list{margin:0;padding:0;list-style:none}.md-nav__item{padding:0 .6rem}.md-nav__item:last-child{padding-bottom:.6rem}.md-nav__item .md-nav__item{padding-right:0}[dir=rtl] .md-nav__item .md-nav__item{padding-right:.6rem;padding-left:0}.md-nav__item .md-nav__item:last-child{padding-bottom:0}.md-nav__button img{width:100%;height:auto}.md-nav__link{display:block;margin-top:.625em;transition:color .125s;text-overflow:ellipsis;cursor:pointer;overflow:hidden}.md-nav__item--nested>.md-nav__link:after{content:"\E313"}html .md-nav__link[for=__toc],html .md-nav__link[for=__toc]+.md-nav__link:after,html .md-nav__link[for=__toc]~.md-nav{display:none}.md-nav__link[data-md-state=blur]{color:rgba(0,0,0,.54)}.md-nav__link--active,.md-nav__link:active{color:#3f51b5}.md-nav__item--nested>.md-nav__link{color:inherit}.md-nav__link:focus,.md-nav__link:hover{color:#536dfe}.md-nav__source,.no-js .md-search{display:none}.md-search__overlay{opacity:0;z-index:1}.md-search__form{position:relative}.md-search__input{position:relative;padding:0 2.2rem 0 3.6rem;text-overflow:ellipsis;z-index:2}[dir=rtl] .md-search__input{padding:0 3.6rem 0 2.2rem}.md-search__input::-webkit-input-placeholder{transition:color .25s cubic-bezier(.1,.7,.1,1)}.md-search__input:-ms-input-placeholder{transition:color .25s cubic-bezier(.1,.7,.1,1)}.md-search__input::-ms-input-placeholder{transition:color .25s cubic-bezier(.1,.7,.1,1)}.md-search__input::placeholder{transition:color .25s cubic-bezier(.1,.7,.1,1)}.md-search__input::-webkit-input-placeholder,.md-search__input~.md-search__icon{color:rgba(0,0,0,.54)}.md-search__input:-ms-input-placeholder,.md-search__input~.md-search__icon{color:rgba(0,0,0,.54)}.md-search__input::-ms-input-placeholder,.md-search__input~.md-search__icon{color:rgba(0,0,0,.54)}.md-search__input::placeholder,.md-search__input~.md-search__icon{color:rgba(0,0,0,.54)}.md-search__input::-ms-clear{display:none}.md-search__icon{position:absolute;transition:color .25s cubic-bezier(.1,.7,.1,1),opacity .25s;font-size:1.2rem;cursor:pointer;z-index:2}.md-search__icon:hover{opacity:.7}.md-search__icon[for=__search]{top:.3rem;left:.5rem}[dir=rtl] .md-search__icon[for=__search]{right:.5rem;left:auto}.md-search__icon[for=__search]:before{content:"\E8B6"}.md-search__icon[type=reset]{top:.3rem;right:.5rem;-webkit-transform:scale(.125);transform:scale(.125);transition:opacity .15s,-webkit-transform .15s cubic-bezier(.1,.7,.1,1);transition:transform .15s cubic-bezier(.1,.7,.1,1),opacity .15s;transition:transform .15s cubic-bezier(.1,.7,.1,1),opacity .15s,-webkit-transform .15s cubic-bezier(.1,.7,.1,1);opacity:0}[dir=rtl] .md-search__icon[type=reset]{right:auto;left:.5rem}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__icon[type=reset]{-webkit-transform:scale(1);transform:scale(1);opacity:1}[data-md-toggle=search]:checked~.md-header .md-search__input:valid~.md-search__icon[type=reset]:hover{opacity:.7}.md-search__output{position:absolute;width:100%;border-radius:0 0 .1rem .1rem;overflow:hidden;z-index:1}.md-search__scrollwrap{height:100%;background-color:#fff;box-shadow:inset 0 .05rem 0 rgba(0,0,0,.07);overflow-y:auto;-webkit-overflow-scrolling:touch}.md-search-result{color:rgba(0,0,0,.87);word-break:break-word}.md-search-result__meta{padding:0 .8rem;background-color:rgba(0,0,0,.07);color:rgba(0,0,0,.54);font-size:.64rem;line-height:1.8rem}.md-search-result__list{margin:0;padding:0;border-top:.05rem solid rgba(0,0,0,.07);list-style:none}.md-search-result__item{box-shadow:0 -.05rem 0 rgba(0,0,0,.07)}.md-search-result__link{display:block;transition:background .25s;outline:0;overflow:hidden}.md-search-result__link:hover,.md-search-result__link[data-md-state=active]{background-color:rgba(83,109,254,.1)}.md-search-result__link:hover .md-search-result__article:before,.md-search-result__link[data-md-state=active] .md-search-result__article:before{opacity:.7}.md-search-result__link:last-child .md-search-result__teaser{margin-bottom:.6rem}.md-search-result__article{position:relative;padding:0 .8rem;overflow:auto}.md-search-result__article--document:before{position:absolute;left:0;margin:.1rem;transition:opacity .25s;color:rgba(0,0,0,.54);content:"\E880"}[dir=rtl] .md-search-result__article--document:before{right:0;left:auto}.md-search-result__article--document .md-search-result__title{margin:.55rem 0;font-size:.8rem;font-weight:400;line-height:1.4}.md-search-result__title{margin:.5em 0;font-size:.64rem;font-weight:700;line-height:1.4}.md-search-result__teaser{display:-webkit-box;max-height:1.65rem;margin:.5em 0;color:rgba(0,0,0,.54);font-size:.64rem;line-height:1.4;text-overflow:ellipsis;overflow:hidden;-webkit-line-clamp:2}.md-search-result em{font-style:normal;font-weight:700;text-decoration:underline}.md-sidebar{position:absolute;width:12.1rem;padding:1.2rem 0;overflow:hidden}.md-sidebar[data-md-state=lock]{position:fixed;top:2.4rem}.md-sidebar--secondary{display:none}.md-sidebar__scrollwrap{max-height:100%;margin:0 .2rem;overflow-y:auto;-webkit-backface-visibility:hidden;backface-visibility:hidden}.md-sidebar__scrollwrap::-webkit-scrollbar{width:.2rem;height:.2rem}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.26)}.md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#536dfe}@-webkit-keyframes md-source__facts--done{0%{height:0}to{height:.65rem}}@keyframes md-source__facts--done{0%{height:0}to{height:.65rem}}@-webkit-keyframes md-source__fact--done{0%{-webkit-transform:translateY(100%);transform:translateY(100%);opacity:0}50%{opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}@keyframes md-source__fact--done{0%{-webkit-transform:translateY(100%);transform:translateY(100%);opacity:0}50%{opacity:0}to{-webkit-transform:translateY(0);transform:translateY(0);opacity:1}}.md-source{display:block;padding-right:.6rem;transition:opacity .25s;font-size:.65rem;line-height:1.2;white-space:nowrap}[dir=rtl] .md-source{padding-right:0;padding-left:.6rem}.md-source:hover{opacity:.7}.md-source:after,.md-source__icon{display:inline-block;height:2.4rem;content:"";vertical-align:middle}.md-source__icon{width:2.4rem}.md-source__icon svg{width:1.2rem;height:1.2rem;margin-top:.6rem;margin-left:.6rem}[dir=rtl] .md-source__icon svg{margin-right:.6rem;margin-left:0}.md-source__icon+.md-source__repository{margin-left:-2rem;padding-left:2rem}[dir=rtl] .md-source__icon+.md-source__repository{margin-right:-2rem;margin-left:0;padding-right:2rem;padding-left:0}.md-source__repository{display:inline-block;max-width:100%;margin-left:.6rem;font-weight:700;text-overflow:ellipsis;overflow:hidden;vertical-align:middle}.md-source__facts{margin:0;padding:0;font-size:.55rem;font-weight:700;list-style-type:none;opacity:.75;overflow:hidden}[data-md-state=done] .md-source__facts{-webkit-animation:md-source__facts--done .25s ease-in;animation:md-source__facts--done .25s ease-in}.md-source__fact{float:left}[dir=rtl] .md-source__fact{float:right}[data-md-state=done] .md-source__fact{-webkit-animation:md-source__fact--done .4s ease-out;animation:md-source__fact--done .4s ease-out}.md-source__fact:before{margin:0 .1rem;content:"\00B7"}.md-source__fact:first-child:before{display:none}.md-source-file{display:inline-block;margin:1em .5em 1em 0;padding-right:.25rem;border-radius:.1rem;background-color:rgba(0,0,0,.07);font-size:.64rem;list-style-type:none;cursor:pointer;overflow:hidden}.md-source-file:before{display:inline-block;margin-right:.25rem;padding:.25rem;background-color:rgba(0,0,0,.26);color:#fff;font-size:.8rem;content:"\E86F";vertical-align:middle}html .md-source-file{transition:background .4s,color .4s,box-shadow .4s cubic-bezier(.4,0,.2,1)}html .md-source-file:before{transition:inherit}html body .md-typeset .md-source-file{color:rgba(0,0,0,.54)}.md-source-file:hover{box-shadow:0 0 8px rgba(0,0,0,.18),0 8px 16px rgba(0,0,0,.36)}.md-source-file:hover:before{background-color:#536dfe}.md-tabs{width:100%;transition:background .25s;background-color:#3f51b5;color:#fff;overflow:auto}.md-tabs__list{margin:0 0 0 .2rem;padding:0;list-style:none;white-space:nowrap}.md-tabs__item{display:inline-block;height:2.4rem;padding-right:.6rem;padding-left:.6rem}.md-tabs__link{display:block;margin-top:.8rem;transition:opacity .25s,-webkit-transform .4s cubic-bezier(.1,.7,.1,1);transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s;transition:transform .4s cubic-bezier(.1,.7,.1,1),opacity .25s,-webkit-transform .4s cubic-bezier(.1,.7,.1,1);font-size:.7rem;opacity:.7}.md-tabs__link--active,.md-tabs__link:hover{color:inherit;opacity:1}.md-tabs__item:nth-child(2) .md-tabs__link{transition-delay:.02s}.md-tabs__item:nth-child(3) .md-tabs__link{transition-delay:.04s}.md-tabs__item:nth-child(4) .md-tabs__link{transition-delay:.06s}.md-tabs__item:nth-child(5) .md-tabs__link{transition-delay:.08s}.md-tabs__item:nth-child(6) .md-tabs__link{transition-delay:.1s}.md-tabs__item:nth-child(7) .md-tabs__link{transition-delay:.12s}.md-tabs__item:nth-child(8) .md-tabs__link{transition-delay:.14s}.md-tabs__item:nth-child(9) .md-tabs__link{transition-delay:.16s}.md-tabs__item:nth-child(10) .md-tabs__link{transition-delay:.18s}.md-tabs__item:nth-child(11) .md-tabs__link{transition-delay:.2s}.md-tabs__item:nth-child(12) .md-tabs__link{transition-delay:.22s}.md-tabs__item:nth-child(13) .md-tabs__link{transition-delay:.24s}.md-tabs__item:nth-child(14) .md-tabs__link{transition-delay:.26s}.md-tabs__item:nth-child(15) .md-tabs__link{transition-delay:.28s}.md-tabs__item:nth-child(16) .md-tabs__link{transition-delay:.3s}.md-tabs[data-md-state=hidden]{pointer-events:none}.md-tabs[data-md-state=hidden] .md-tabs__link{-webkit-transform:translateY(50%);transform:translateY(50%);transition:color .25s,opacity .1s,-webkit-transform 0s .4s;transition:color .25s,transform 0s .4s,opacity .1s;transition:color .25s,transform 0s .4s,opacity .1s,-webkit-transform 0s .4s;opacity:0}.md-typeset .admonition,.md-typeset details{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2);position:relative;margin:1.5625em 0;padding:0 .6rem;border-left:.2rem solid #448aff;border-radius:.1rem;font-size:.64rem;overflow:auto}[dir=rtl] .md-typeset .admonition,[dir=rtl] .md-typeset details{border-right:.2rem solid #448aff;border-left:none}html .md-typeset .admonition>:last-child,html .md-typeset details>:last-child{margin-bottom:.6rem}.md-typeset .admonition .admonition,.md-typeset .admonition details,.md-typeset details .admonition,.md-typeset details details{margin:1em 0}.md-typeset .admonition>.admonition-title,.md-typeset .admonition>summary,.md-typeset details>.admonition-title,.md-typeset details>summary{margin:0 -.6rem;padding:.4rem .6rem .4rem 2rem;border-bottom:.05rem solid rgba(68,138,255,.1);background-color:rgba(68,138,255,.1);font-weight:700}[dir=rtl] .md-typeset .admonition>.admonition-title,[dir=rtl] .md-typeset .admonition>summary,[dir=rtl] .md-typeset details>.admonition-title,[dir=rtl] .md-typeset details>summary{padding:.4rem 2rem .4rem .6rem}.md-typeset .admonition>.admonition-title:last-child,.md-typeset .admonition>summary:last-child,.md-typeset details>.admonition-title:last-child,.md-typeset details>summary:last-child{margin-bottom:0}.md-typeset .admonition>.admonition-title:before,.md-typeset .admonition>summary:before,.md-typeset details>.admonition-title:before,.md-typeset details>summary:before{position:absolute;left:.6rem;color:#448aff;font-size:1rem;content:"\E3C9"}[dir=rtl] .md-typeset .admonition>.admonition-title:before,[dir=rtl] .md-typeset .admonition>summary:before,[dir=rtl] .md-typeset details>.admonition-title:before,[dir=rtl] .md-typeset details>summary:before{right:.6rem;left:auto}.md-typeset .admonition.abstract,.md-typeset .admonition.summary,.md-typeset .admonition.tldr,.md-typeset details.abstract,.md-typeset details.summary,.md-typeset details.tldr{border-left-color:#00b0ff}[dir=rtl] .md-typeset .admonition.abstract,[dir=rtl] .md-typeset .admonition.summary,[dir=rtl] .md-typeset .admonition.tldr,[dir=rtl] .md-typeset details.abstract,[dir=rtl] .md-typeset details.summary,[dir=rtl] .md-typeset details.tldr{border-right-color:#00b0ff}.md-typeset .admonition.abstract>.admonition-title,.md-typeset .admonition.abstract>summary,.md-typeset .admonition.summary>.admonition-title,.md-typeset .admonition.summary>summary,.md-typeset .admonition.tldr>.admonition-title,.md-typeset .admonition.tldr>summary,.md-typeset details.abstract>.admonition-title,.md-typeset details.abstract>summary,.md-typeset details.summary>.admonition-title,.md-typeset details.summary>summary,.md-typeset details.tldr>.admonition-title,.md-typeset details.tldr>summary{border-bottom-color:rgba(0,176,255,.1);background-color:rgba(0,176,255,.1)}.md-typeset .admonition.abstract>.admonition-title:before,.md-typeset .admonition.abstract>summary:before,.md-typeset .admonition.summary>.admonition-title:before,.md-typeset .admonition.summary>summary:before,.md-typeset .admonition.tldr>.admonition-title:before,.md-typeset .admonition.tldr>summary:before,.md-typeset details.abstract>.admonition-title:before,.md-typeset details.abstract>summary:before,.md-typeset details.summary>.admonition-title:before,.md-typeset details.summary>summary:before,.md-typeset details.tldr>.admonition-title:before,.md-typeset details.tldr>summary:before{color:#00b0ff;content:""}.md-typeset .admonition.info,.md-typeset .admonition.todo,.md-typeset details.info,.md-typeset details.todo{border-left-color:#00b8d4}[dir=rtl] .md-typeset .admonition.info,[dir=rtl] .md-typeset .admonition.todo,[dir=rtl] .md-typeset details.info,[dir=rtl] .md-typeset details.todo{border-right-color:#00b8d4}.md-typeset .admonition.info>.admonition-title,.md-typeset .admonition.info>summary,.md-typeset .admonition.todo>.admonition-title,.md-typeset .admonition.todo>summary,.md-typeset details.info>.admonition-title,.md-typeset details.info>summary,.md-typeset details.todo>.admonition-title,.md-typeset details.todo>summary{border-bottom-color:rgba(0,184,212,.1);background-color:rgba(0,184,212,.1)}.md-typeset .admonition.info>.admonition-title:before,.md-typeset .admonition.info>summary:before,.md-typeset .admonition.todo>.admonition-title:before,.md-typeset .admonition.todo>summary:before,.md-typeset details.info>.admonition-title:before,.md-typeset details.info>summary:before,.md-typeset details.todo>.admonition-title:before,.md-typeset details.todo>summary:before{color:#00b8d4;content:""}.md-typeset .admonition.hint,.md-typeset .admonition.important,.md-typeset .admonition.tip,.md-typeset details.hint,.md-typeset details.important,.md-typeset details.tip{border-left-color:#00bfa5}[dir=rtl] .md-typeset .admonition.hint,[dir=rtl] .md-typeset .admonition.important,[dir=rtl] .md-typeset .admonition.tip,[dir=rtl] .md-typeset details.hint,[dir=rtl] .md-typeset details.important,[dir=rtl] .md-typeset details.tip{border-right-color:#00bfa5}.md-typeset .admonition.hint>.admonition-title,.md-typeset .admonition.hint>summary,.md-typeset .admonition.important>.admonition-title,.md-typeset .admonition.important>summary,.md-typeset .admonition.tip>.admonition-title,.md-typeset .admonition.tip>summary,.md-typeset details.hint>.admonition-title,.md-typeset details.hint>summary,.md-typeset details.important>.admonition-title,.md-typeset details.important>summary,.md-typeset details.tip>.admonition-title,.md-typeset details.tip>summary{border-bottom-color:rgba(0,191,165,.1);background-color:rgba(0,191,165,.1)}.md-typeset .admonition.hint>.admonition-title:before,.md-typeset .admonition.hint>summary:before,.md-typeset .admonition.important>.admonition-title:before,.md-typeset .admonition.important>summary:before,.md-typeset .admonition.tip>.admonition-title:before,.md-typeset .admonition.tip>summary:before,.md-typeset details.hint>.admonition-title:before,.md-typeset details.hint>summary:before,.md-typeset details.important>.admonition-title:before,.md-typeset details.important>summary:before,.md-typeset details.tip>.admonition-title:before,.md-typeset details.tip>summary:before{color:#00bfa5;content:""}.md-typeset .admonition.check,.md-typeset .admonition.done,.md-typeset .admonition.success,.md-typeset details.check,.md-typeset details.done,.md-typeset details.success{border-left-color:#00c853}[dir=rtl] .md-typeset .admonition.check,[dir=rtl] .md-typeset .admonition.done,[dir=rtl] .md-typeset .admonition.success,[dir=rtl] .md-typeset details.check,[dir=rtl] .md-typeset details.done,[dir=rtl] .md-typeset details.success{border-right-color:#00c853}.md-typeset .admonition.check>.admonition-title,.md-typeset .admonition.check>summary,.md-typeset .admonition.done>.admonition-title,.md-typeset .admonition.done>summary,.md-typeset .admonition.success>.admonition-title,.md-typeset .admonition.success>summary,.md-typeset details.check>.admonition-title,.md-typeset details.check>summary,.md-typeset details.done>.admonition-title,.md-typeset details.done>summary,.md-typeset details.success>.admonition-title,.md-typeset details.success>summary{border-bottom-color:rgba(0,200,83,.1);background-color:rgba(0,200,83,.1)}.md-typeset .admonition.check>.admonition-title:before,.md-typeset .admonition.check>summary:before,.md-typeset .admonition.done>.admonition-title:before,.md-typeset .admonition.done>summary:before,.md-typeset .admonition.success>.admonition-title:before,.md-typeset .admonition.success>summary:before,.md-typeset details.check>.admonition-title:before,.md-typeset details.check>summary:before,.md-typeset details.done>.admonition-title:before,.md-typeset details.done>summary:before,.md-typeset details.success>.admonition-title:before,.md-typeset details.success>summary:before{color:#00c853;content:""}.md-typeset .admonition.faq,.md-typeset .admonition.help,.md-typeset .admonition.question,.md-typeset details.faq,.md-typeset details.help,.md-typeset details.question{border-left-color:#64dd17}[dir=rtl] .md-typeset .admonition.faq,[dir=rtl] .md-typeset .admonition.help,[dir=rtl] .md-typeset .admonition.question,[dir=rtl] .md-typeset details.faq,[dir=rtl] .md-typeset details.help,[dir=rtl] .md-typeset details.question{border-right-color:#64dd17}.md-typeset .admonition.faq>.admonition-title,.md-typeset .admonition.faq>summary,.md-typeset .admonition.help>.admonition-title,.md-typeset .admonition.help>summary,.md-typeset .admonition.question>.admonition-title,.md-typeset .admonition.question>summary,.md-typeset details.faq>.admonition-title,.md-typeset details.faq>summary,.md-typeset details.help>.admonition-title,.md-typeset details.help>summary,.md-typeset details.question>.admonition-title,.md-typeset details.question>summary{border-bottom-color:rgba(100,221,23,.1);background-color:rgba(100,221,23,.1)}.md-typeset .admonition.faq>.admonition-title:before,.md-typeset .admonition.faq>summary:before,.md-typeset .admonition.help>.admonition-title:before,.md-typeset .admonition.help>summary:before,.md-typeset .admonition.question>.admonition-title:before,.md-typeset .admonition.question>summary:before,.md-typeset details.faq>.admonition-title:before,.md-typeset details.faq>summary:before,.md-typeset details.help>.admonition-title:before,.md-typeset details.help>summary:before,.md-typeset details.question>.admonition-title:before,.md-typeset details.question>summary:before{color:#64dd17;content:""}.md-typeset .admonition.attention,.md-typeset .admonition.caution,.md-typeset .admonition.warning,.md-typeset details.attention,.md-typeset details.caution,.md-typeset details.warning{border-left-color:#ff9100}[dir=rtl] .md-typeset .admonition.attention,[dir=rtl] .md-typeset .admonition.caution,[dir=rtl] .md-typeset .admonition.warning,[dir=rtl] .md-typeset details.attention,[dir=rtl] .md-typeset details.caution,[dir=rtl] .md-typeset details.warning{border-right-color:#ff9100}.md-typeset .admonition.attention>.admonition-title,.md-typeset .admonition.attention>summary,.md-typeset .admonition.caution>.admonition-title,.md-typeset .admonition.caution>summary,.md-typeset .admonition.warning>.admonition-title,.md-typeset .admonition.warning>summary,.md-typeset details.attention>.admonition-title,.md-typeset details.attention>summary,.md-typeset details.caution>.admonition-title,.md-typeset details.caution>summary,.md-typeset details.warning>.admonition-title,.md-typeset details.warning>summary{border-bottom-color:rgba(255,145,0,.1);background-color:rgba(255,145,0,.1)}.md-typeset .admonition.attention>.admonition-title:before,.md-typeset .admonition.attention>summary:before,.md-typeset .admonition.caution>.admonition-title:before,.md-typeset .admonition.caution>summary:before,.md-typeset .admonition.warning>.admonition-title:before,.md-typeset .admonition.warning>summary:before,.md-typeset details.attention>.admonition-title:before,.md-typeset details.attention>summary:before,.md-typeset details.caution>.admonition-title:before,.md-typeset details.caution>summary:before,.md-typeset details.warning>.admonition-title:before,.md-typeset details.warning>summary:before{color:#ff9100;content:""}.md-typeset .admonition.fail,.md-typeset .admonition.failure,.md-typeset .admonition.missing,.md-typeset details.fail,.md-typeset details.failure,.md-typeset details.missing{border-left-color:#ff5252}[dir=rtl] .md-typeset .admonition.fail,[dir=rtl] .md-typeset .admonition.failure,[dir=rtl] .md-typeset .admonition.missing,[dir=rtl] .md-typeset details.fail,[dir=rtl] .md-typeset details.failure,[dir=rtl] .md-typeset details.missing{border-right-color:#ff5252}.md-typeset .admonition.fail>.admonition-title,.md-typeset .admonition.fail>summary,.md-typeset .admonition.failure>.admonition-title,.md-typeset .admonition.failure>summary,.md-typeset .admonition.missing>.admonition-title,.md-typeset .admonition.missing>summary,.md-typeset details.fail>.admonition-title,.md-typeset details.fail>summary,.md-typeset details.failure>.admonition-title,.md-typeset details.failure>summary,.md-typeset details.missing>.admonition-title,.md-typeset details.missing>summary{border-bottom-color:rgba(255,82,82,.1);background-color:rgba(255,82,82,.1)}.md-typeset .admonition.fail>.admonition-title:before,.md-typeset .admonition.fail>summary:before,.md-typeset .admonition.failure>.admonition-title:before,.md-typeset .admonition.failure>summary:before,.md-typeset .admonition.missing>.admonition-title:before,.md-typeset .admonition.missing>summary:before,.md-typeset details.fail>.admonition-title:before,.md-typeset details.fail>summary:before,.md-typeset details.failure>.admonition-title:before,.md-typeset details.failure>summary:before,.md-typeset details.missing>.admonition-title:before,.md-typeset details.missing>summary:before{color:#ff5252;content:""}.md-typeset .admonition.danger,.md-typeset .admonition.error,.md-typeset details.danger,.md-typeset details.error{border-left-color:#ff1744}[dir=rtl] .md-typeset .admonition.danger,[dir=rtl] .md-typeset .admonition.error,[dir=rtl] .md-typeset details.danger,[dir=rtl] .md-typeset details.error{border-right-color:#ff1744}.md-typeset .admonition.danger>.admonition-title,.md-typeset .admonition.danger>summary,.md-typeset .admonition.error>.admonition-title,.md-typeset .admonition.error>summary,.md-typeset details.danger>.admonition-title,.md-typeset details.danger>summary,.md-typeset details.error>.admonition-title,.md-typeset details.error>summary{border-bottom-color:rgba(255,23,68,.1);background-color:rgba(255,23,68,.1)}.md-typeset .admonition.danger>.admonition-title:before,.md-typeset .admonition.danger>summary:before,.md-typeset .admonition.error>.admonition-title:before,.md-typeset .admonition.error>summary:before,.md-typeset details.danger>.admonition-title:before,.md-typeset details.danger>summary:before,.md-typeset details.error>.admonition-title:before,.md-typeset details.error>summary:before{color:#ff1744;content:""}.md-typeset .admonition.bug,.md-typeset details.bug{border-left-color:#f50057}[dir=rtl] .md-typeset .admonition.bug,[dir=rtl] .md-typeset details.bug{border-right-color:#f50057}.md-typeset .admonition.bug>.admonition-title,.md-typeset .admonition.bug>summary,.md-typeset details.bug>.admonition-title,.md-typeset details.bug>summary{border-bottom-color:rgba(245,0,87,.1);background-color:rgba(245,0,87,.1)}.md-typeset .admonition.bug>.admonition-title:before,.md-typeset .admonition.bug>summary:before,.md-typeset details.bug>.admonition-title:before,.md-typeset details.bug>summary:before{color:#f50057;content:""}.md-typeset .admonition.example,.md-typeset details.example{border-left-color:#651fff}[dir=rtl] .md-typeset .admonition.example,[dir=rtl] .md-typeset details.example{border-right-color:#651fff}.md-typeset .admonition.example>.admonition-title,.md-typeset .admonition.example>summary,.md-typeset details.example>.admonition-title,.md-typeset details.example>summary{border-bottom-color:rgba(101,31,255,.1);background-color:rgba(101,31,255,.1)}.md-typeset .admonition.example>.admonition-title:before,.md-typeset .admonition.example>summary:before,.md-typeset details.example>.admonition-title:before,.md-typeset details.example>summary:before{color:#651fff;content:""}.md-typeset .admonition.cite,.md-typeset .admonition.quote,.md-typeset details.cite,.md-typeset details.quote{border-left-color:#9e9e9e}[dir=rtl] .md-typeset .admonition.cite,[dir=rtl] .md-typeset .admonition.quote,[dir=rtl] .md-typeset details.cite,[dir=rtl] .md-typeset details.quote{border-right-color:#9e9e9e}.md-typeset .admonition.cite>.admonition-title,.md-typeset .admonition.cite>summary,.md-typeset .admonition.quote>.admonition-title,.md-typeset .admonition.quote>summary,.md-typeset details.cite>.admonition-title,.md-typeset details.cite>summary,.md-typeset details.quote>.admonition-title,.md-typeset details.quote>summary{border-bottom-color:hsla(0,0%,62%,.1);background-color:hsla(0,0%,62%,.1)}.md-typeset .admonition.cite>.admonition-title:before,.md-typeset .admonition.cite>summary:before,.md-typeset .admonition.quote>.admonition-title:before,.md-typeset .admonition.quote>summary:before,.md-typeset details.cite>.admonition-title:before,.md-typeset details.cite>summary:before,.md-typeset details.quote>.admonition-title:before,.md-typeset details.quote>summary:before{color:#9e9e9e;content:""}.codehilite .o,.codehilite .ow,.md-typeset .highlight .o,.md-typeset .highlight .ow{color:inherit}.codehilite .ge,.md-typeset .highlight .ge{color:#000}.codehilite .gr,.md-typeset .highlight .gr{color:#a00}.codehilite .gh,.md-typeset .highlight .gh{color:#999}.codehilite .go,.md-typeset .highlight .go{color:#888}.codehilite .gp,.md-typeset .highlight .gp{color:#555}.codehilite .gs,.md-typeset .highlight .gs{color:inherit}.codehilite .gu,.md-typeset .highlight .gu{color:#aaa}.codehilite .gt,.md-typeset .highlight .gt{color:#a00}.codehilite .gd,.md-typeset .highlight .gd{background-color:#fdd}.codehilite .gi,.md-typeset .highlight .gi{background-color:#dfd}.codehilite .k,.md-typeset .highlight .k{color:#3b78e7}.codehilite .kc,.md-typeset .highlight .kc{color:#a71d5d}.codehilite .kd,.codehilite .kn,.md-typeset .highlight .kd,.md-typeset .highlight .kn{color:#3b78e7}.codehilite .kp,.md-typeset .highlight .kp{color:#a71d5d}.codehilite .kr,.codehilite .kt,.md-typeset .highlight .kr,.md-typeset .highlight .kt{color:#3e61a2}.codehilite .c,.codehilite .cm,.md-typeset .highlight .c,.md-typeset .highlight .cm{color:#999}.codehilite .cp,.md-typeset .highlight .cp{color:#666}.codehilite .c1,.codehilite .ch,.codehilite .cs,.md-typeset .highlight .c1,.md-typeset .highlight .ch,.md-typeset .highlight .cs{color:#999}.codehilite .na,.codehilite .nb,.md-typeset .highlight .na,.md-typeset .highlight .nb{color:#c2185b}.codehilite .bp,.md-typeset .highlight .bp{color:#3e61a2}.codehilite .nc,.md-typeset .highlight .nc{color:#c2185b}.codehilite .no,.md-typeset .highlight .no{color:#3e61a2}.codehilite .nd,.codehilite .ni,.md-typeset .highlight .nd,.md-typeset .highlight .ni{color:#666}.codehilite .ne,.codehilite .nf,.md-typeset .highlight .ne,.md-typeset .highlight .nf{color:#c2185b}.codehilite .nl,.md-typeset .highlight .nl{color:#3b5179}.codehilite .nn,.md-typeset .highlight .nn{color:#ec407a}.codehilite .nt,.md-typeset .highlight .nt{color:#3b78e7}.codehilite .nv,.codehilite .vc,.codehilite .vg,.codehilite .vi,.md-typeset .highlight .nv,.md-typeset .highlight .vc,.md-typeset .highlight .vg,.md-typeset .highlight .vi{color:#3e61a2}.codehilite .nx,.md-typeset .highlight .nx{color:#ec407a}.codehilite .il,.codehilite .m,.codehilite .mf,.codehilite .mh,.codehilite .mi,.codehilite .mo,.md-typeset .highlight .il,.md-typeset .highlight .m,.md-typeset .highlight .mf,.md-typeset .highlight .mh,.md-typeset .highlight .mi,.md-typeset .highlight .mo{color:#e74c3c}.codehilite .s,.codehilite .sb,.codehilite .sc,.md-typeset .highlight .s,.md-typeset .highlight .sb,.md-typeset .highlight .sc{color:#0d904f}.codehilite .sd,.md-typeset .highlight .sd{color:#999}.codehilite .s2,.md-typeset .highlight .s2{color:#0d904f}.codehilite .se,.codehilite .sh,.codehilite .si,.codehilite .sx,.md-typeset .highlight .se,.md-typeset .highlight .sh,.md-typeset .highlight .si,.md-typeset .highlight .sx{color:#183691}.codehilite .sr,.md-typeset .highlight .sr{color:#009926}.codehilite .s1,.codehilite .ss,.md-typeset .highlight .s1,.md-typeset .highlight .ss{color:#0d904f}.codehilite .err,.md-typeset .highlight .err{color:#a61717}.codehilite .w,.md-typeset .highlight .w{color:transparent}.codehilite .hll,.md-typeset .highlight .hll{display:block;margin:0 -.6rem;padding:0 .6rem;background-color:rgba(255,235,59,.5)}.md-typeset .codehilite,.md-typeset .highlight{position:relative;margin:1em 0;padding:0;border-radius:.1rem;background-color:hsla(0,0%,92.5%,.5);color:#37474f;line-height:1.4;-webkit-overflow-scrolling:touch}.md-typeset .codehilite code,.md-typeset .codehilite pre,.md-typeset .highlight code,.md-typeset .highlight pre{display:block;margin:0;padding:.525rem .6rem;background-color:transparent;overflow:auto;vertical-align:top}.md-typeset .codehilite code::-webkit-scrollbar,.md-typeset .codehilite pre::-webkit-scrollbar,.md-typeset .highlight code::-webkit-scrollbar,.md-typeset .highlight pre::-webkit-scrollbar{width:.2rem;height:.2rem}.md-typeset .codehilite code::-webkit-scrollbar-thumb,.md-typeset .codehilite pre::-webkit-scrollbar-thumb,.md-typeset .highlight code::-webkit-scrollbar-thumb,.md-typeset .highlight pre::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.26)}.md-typeset .codehilite code::-webkit-scrollbar-thumb:hover,.md-typeset .codehilite pre::-webkit-scrollbar-thumb:hover,.md-typeset .highlight code::-webkit-scrollbar-thumb:hover,.md-typeset .highlight pre::-webkit-scrollbar-thumb:hover{background-color:#536dfe}.md-typeset pre.codehilite,.md-typeset pre.highlight{overflow:visible}.md-typeset pre.codehilite code,.md-typeset pre.highlight code{display:block;padding:.525rem .6rem;overflow:auto}.md-typeset .codehilitetable,.md-typeset .highlighttable{display:block;margin:1em 0;border-radius:.2em;font-size:.8rem;overflow:hidden}.md-typeset .codehilitetable tbody,.md-typeset .codehilitetable td,.md-typeset .highlighttable tbody,.md-typeset .highlighttable td{display:block;padding:0}.md-typeset .codehilitetable tr,.md-typeset .highlighttable tr{display:flex}.md-typeset .codehilitetable .codehilite,.md-typeset .codehilitetable .highlight,.md-typeset .codehilitetable .linenodiv,.md-typeset .highlighttable .codehilite,.md-typeset .highlighttable .highlight,.md-typeset .highlighttable .linenodiv{margin:0;border-radius:0}.md-typeset .codehilitetable .linenodiv,.md-typeset .highlighttable .linenodiv{padding:.525rem .6rem}.md-typeset .codehilitetable .linenos,.md-typeset .highlighttable .linenos{background-color:rgba(0,0,0,.07);color:rgba(0,0,0,.26);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.md-typeset .codehilitetable .linenos pre,.md-typeset .highlighttable .linenos pre{margin:0;padding:0;background-color:transparent;color:inherit;text-align:right}.md-typeset .codehilitetable .code,.md-typeset .highlighttable .code{flex:1;overflow:hidden}.md-typeset>.codehilitetable,.md-typeset>.highlighttable{box-shadow:none}.md-typeset [id^="fnref:"]{display:inline-block}.md-typeset [id^="fnref:"]:target{margin-top:-3.8rem;padding-top:3.8rem;pointer-events:none}.md-typeset [id^="fn:"]:before{display:none;height:0;content:""}.md-typeset [id^="fn:"]:target:before{display:block;margin-top:-3.5rem;padding-top:3.5rem;pointer-events:none}.md-typeset .footnote{color:rgba(0,0,0,.54);font-size:.64rem}.md-typeset .footnote ol{margin-left:0}.md-typeset .footnote li{transition:color .25s}.md-typeset .footnote li:target{color:rgba(0,0,0,.87)}.md-typeset .footnote li :first-child{margin-top:0}.md-typeset .footnote li:hover .footnote-backref,.md-typeset .footnote li:target .footnote-backref{-webkit-transform:translateX(0);transform:translateX(0);opacity:1}.md-typeset .footnote li:hover .footnote-backref:hover,.md-typeset .footnote li:target .footnote-backref{color:#536dfe}.md-typeset .footnote-ref{display:inline-block;pointer-events:auto}.md-typeset .footnote-ref:before{display:inline;margin:0 .2em;border-left:.05rem solid rgba(0,0,0,.26);font-size:1.25em;content:"";vertical-align:-.25rem}.md-typeset .footnote-backref{display:inline-block;-webkit-transform:translateX(.25rem);transform:translateX(.25rem);transition:color .25s,opacity .125s .125s,-webkit-transform .25s .125s;transition:transform .25s .125s,color .25s,opacity .125s .125s;transition:transform .25s .125s,color .25s,opacity .125s .125s,-webkit-transform .25s .125s;color:rgba(0,0,0,.26);font-size:0;opacity:0;vertical-align:text-bottom}[dir=rtl] .md-typeset .footnote-backref{-webkit-transform:translateX(-.25rem);transform:translateX(-.25rem)}.md-typeset .footnote-backref:before{display:inline-block;font-size:.8rem;content:"\E31B"}[dir=rtl] .md-typeset .footnote-backref:before{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.md-typeset .headerlink{display:inline-block;margin-left:.5rem;-webkit-transform:translateY(.25rem);transform:translateY(.25rem);transition:color .25s,opacity .125s .25s,-webkit-transform .25s .25s;transition:transform .25s .25s,color .25s,opacity .125s .25s;transition:transform .25s .25s,color .25s,opacity .125s .25s,-webkit-transform .25s .25s;opacity:0}[dir=rtl] .md-typeset .headerlink{margin-right:.5rem;margin-left:0}html body .md-typeset .headerlink{color:rgba(0,0,0,.26)}.md-typeset h1[id]:before{display:block;margin-top:-9px;padding-top:9px;content:""}.md-typeset h1[id]:target:before{margin-top:-3.45rem;padding-top:3.45rem}.md-typeset h1[id] .headerlink:focus,.md-typeset h1[id]:hover .headerlink,.md-typeset h1[id]:target .headerlink{-webkit-transform:translate(0);transform:translate(0);opacity:1}.md-typeset h1[id] .headerlink:focus,.md-typeset h1[id]:hover .headerlink:hover,.md-typeset h1[id]:target .headerlink{color:#536dfe}.md-typeset h2[id]:before{display:block;margin-top:-8px;padding-top:8px;content:""}.md-typeset h2[id]:target:before{margin-top:-3.4rem;padding-top:3.4rem}.md-typeset h2[id] .headerlink:focus,.md-typeset h2[id]:hover .headerlink,.md-typeset h2[id]:target .headerlink{-webkit-transform:translate(0);transform:translate(0);opacity:1}.md-typeset h2[id] .headerlink:focus,.md-typeset h2[id]:hover .headerlink:hover,.md-typeset h2[id]:target .headerlink{color:#536dfe}.md-typeset h3[id]:before{display:block;margin-top:-9px;padding-top:9px;content:""}.md-typeset h3[id]:target:before{margin-top:-3.45rem;padding-top:3.45rem}.md-typeset h3[id] .headerlink:focus,.md-typeset h3[id]:hover .headerlink,.md-typeset h3[id]:target .headerlink{-webkit-transform:translate(0);transform:translate(0);opacity:1}.md-typeset h3[id] .headerlink:focus,.md-typeset h3[id]:hover .headerlink:hover,.md-typeset h3[id]:target .headerlink{color:#536dfe}.md-typeset h4[id]:before{display:block;margin-top:-9px;padding-top:9px;content:""}.md-typeset h4[id]:target:before{margin-top:-3.45rem;padding-top:3.45rem}.md-typeset h4[id] .headerlink:focus,.md-typeset h4[id]:hover .headerlink,.md-typeset h4[id]:target .headerlink{-webkit-transform:translate(0);transform:translate(0);opacity:1}.md-typeset h4[id] .headerlink:focus,.md-typeset h4[id]:hover .headerlink:hover,.md-typeset h4[id]:target .headerlink{color:#536dfe}.md-typeset h5[id]:before{display:block;margin-top:-11px;padding-top:11px;content:""}.md-typeset h5[id]:target:before{margin-top:-3.55rem;padding-top:3.55rem}.md-typeset h5[id] .headerlink:focus,.md-typeset h5[id]:hover .headerlink,.md-typeset h5[id]:target .headerlink{-webkit-transform:translate(0);transform:translate(0);opacity:1}.md-typeset h5[id] .headerlink:focus,.md-typeset h5[id]:hover .headerlink:hover,.md-typeset h5[id]:target .headerlink{color:#536dfe}.md-typeset h6[id]:before{display:block;margin-top:-11px;padding-top:11px;content:""}.md-typeset h6[id]:target:before{margin-top:-3.55rem;padding-top:3.55rem}.md-typeset h6[id] .headerlink:focus,.md-typeset h6[id]:hover .headerlink,.md-typeset h6[id]:target .headerlink{-webkit-transform:translate(0);transform:translate(0);opacity:1}.md-typeset h6[id] .headerlink:focus,.md-typeset h6[id]:hover .headerlink:hover,.md-typeset h6[id]:target .headerlink{color:#536dfe}.md-typeset .MJXc-display{margin:.75em 0;padding:.75em 0;overflow:auto;-webkit-overflow-scrolling:touch}.md-typeset .MathJax_CHTML{outline:0}.md-typeset .critic.comment,.md-typeset del.critic,.md-typeset ins.critic{margin:0 .25em;padding:.0625em 0;border-radius:.1rem;-webkit-box-decoration-break:clone;box-decoration-break:clone}.md-typeset del.critic{background-color:#fdd;box-shadow:.25em 0 0 #fdd,-.25em 0 0 #fdd}.md-typeset ins.critic{background-color:#dfd;box-shadow:.25em 0 0 #dfd,-.25em 0 0 #dfd}.md-typeset .critic.comment{background-color:hsla(0,0%,92.5%,.5);color:#37474f;box-shadow:.25em 0 0 hsla(0,0%,92.5%,.5),-.25em 0 0 hsla(0,0%,92.5%,.5)}.md-typeset .critic.comment:before{padding-right:.125em;color:rgba(0,0,0,.26);content:"\E0B7";vertical-align:-.125em}.md-typeset .critic.block{display:block;margin:1em 0;padding-right:.8rem;padding-left:.8rem;box-shadow:none}.md-typeset .critic.block :first-child{margin-top:.5em}.md-typeset .critic.block :last-child{margin-bottom:.5em}.md-typeset details{display:block;padding-top:0}.md-typeset details[open]>summary:after{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.md-typeset details:not([open]){padding-bottom:0}.md-typeset details:not([open])>summary{border-bottom:none}.md-typeset details summary{padding-right:2rem}[dir=rtl] .md-typeset details summary{padding-left:2rem}.no-details .md-typeset details:not([open])>*{display:none}.no-details .md-typeset details:not([open]) summary{display:block}.md-typeset summary{display:block;outline:none;cursor:pointer}.md-typeset summary::-webkit-details-marker{display:none}.md-typeset summary:after{position:absolute;top:.4rem;right:.6rem;color:rgba(0,0,0,.26);font-size:1rem;content:"\E313"}[dir=rtl] .md-typeset summary:after{right:auto;left:.6rem}.md-typeset .emojione{width:1rem;vertical-align:text-top}.md-typeset code.codehilite,.md-typeset code.highlight{margin:0 .29412em;padding:.07353em 0}.md-typeset .superfences-content{display:none;order:99;width:100%;background-color:#fff}.md-typeset .superfences-content>*{margin:0;border-radius:0}.md-typeset .superfences-tabs{display:flex;position:relative;flex-wrap:wrap;margin:1em 0;border:.05rem solid rgba(0,0,0,.07);border-radius:.2em}.md-typeset .superfences-tabs>input{display:none}.md-typeset .superfences-tabs>input:checked+label{font-weight:700}.md-typeset .superfences-tabs>input:checked+label+.superfences-content{display:block}.md-typeset .superfences-tabs>label{width:auto;padding:.6rem;transition:color .125s;font-size:.64rem;cursor:pointer}html .md-typeset .superfences-tabs>label:hover{color:#536dfe}.md-typeset .task-list-item{position:relative;list-style-type:none}.md-typeset .task-list-item [type=checkbox]{position:absolute;top:.45em;left:-2em}[dir=rtl] .md-typeset .task-list-item [type=checkbox]{right:-2em;left:auto}.md-typeset .task-list-control .task-list-indicator:before{position:absolute;top:.15em;left:-1.25em;color:rgba(0,0,0,.26);font-size:1.25em;content:"\E835";vertical-align:-.25em}[dir=rtl] .md-typeset .task-list-control .task-list-indicator:before{right:-1.25em;left:auto}.md-typeset .task-list-control [type=checkbox]:checked+.task-list-indicator:before{content:"\E834"}.md-typeset .task-list-control [type=checkbox]{opacity:0;z-index:-1}@media print{.md-typeset a:after{color:rgba(0,0,0,.54);content:" [" attr(href) "]"}.md-typeset code,.md-typeset pre{white-space:pre-wrap}.md-typeset code{box-shadow:none;-webkit-box-decoration-break:initial;box-decoration-break:slice}.md-clipboard,.md-content__icon,.md-footer,.md-header,.md-sidebar,.md-tabs,.md-typeset .headerlink{display:none}}@media only screen and (max-width:44.9375em){.md-typeset pre{margin:1em -.8rem;border-radius:0}.md-typeset pre>code{padding:.525rem .8rem}.md-footer-nav__link--prev .md-footer-nav__title{display:none}.md-search-result__teaser{max-height:2.5rem;-webkit-line-clamp:3}.codehilite .hll,.md-typeset .highlight .hll{margin:0 -.8rem;padding:0 .8rem}.md-typeset>.codehilite,.md-typeset>.highlight{margin:1em -.8rem;border-radius:0}.md-typeset>.codehilite code,.md-typeset>.codehilite pre,.md-typeset>.highlight code,.md-typeset>.highlight pre{padding:.525rem .8rem}.md-typeset>.codehilitetable,.md-typeset>.highlighttable{margin:1em -.8rem;border-radius:0}.md-typeset>.codehilitetable .codehilite>code,.md-typeset>.codehilitetable .codehilite>pre,.md-typeset>.codehilitetable .highlight>code,.md-typeset>.codehilitetable .highlight>pre,.md-typeset>.codehilitetable .linenodiv,.md-typeset>.highlighttable .codehilite>code,.md-typeset>.highlighttable .codehilite>pre,.md-typeset>.highlighttable .highlight>code,.md-typeset>.highlighttable .highlight>pre,.md-typeset>.highlighttable .linenodiv{padding:.5rem .8rem}.md-typeset>p>.MJXc-display{margin:.75em -.8rem;padding:.25em .8rem}.md-typeset>.superfences-tabs{margin:1em -.8rem;border:0;border-top:.05rem solid rgba(0,0,0,.07);border-radius:0}.md-typeset>.superfences-tabs code,.md-typeset>.superfences-tabs pre{padding:.525rem .8rem}}@media only screen and (min-width:100em){html{font-size:137.5%}}@media only screen and (min-width:125em){html{font-size:150%}}@media only screen and (max-width:59.9375em){body[data-md-state=lock]{overflow:hidden}.ios body[data-md-state=lock] .md-container{display:none}html .md-nav__link[for=__toc]{display:block;padding-right:2.4rem}html .md-nav__link[for=__toc]:after{color:inherit;content:"\E8DE"}html .md-nav__link[for=__toc]+.md-nav__link{display:none}html .md-nav__link[for=__toc]~.md-nav{display:flex}html [dir=rtl] .md-nav__link{padding-right:.8rem;padding-left:2.4rem}.md-nav__source{display:block;padding:0 .2rem;background-color:rgba(50,64,144,.9675);color:#fff}.md-search__overlay{position:absolute;top:.2rem;left:.2rem;width:1.8rem;height:1.8rem;-webkit-transform-origin:center;transform-origin:center;transition:opacity .2s .2s,-webkit-transform .3s .1s;transition:transform .3s .1s,opacity .2s .2s;transition:transform .3s .1s,opacity .2s .2s,-webkit-transform .3s .1s;border-radius:1rem;background-color:#fff;overflow:hidden;pointer-events:none}[dir=rtl] .md-search__overlay{right:.2rem;left:auto}[data-md-toggle=search]:checked~.md-header .md-search__overlay{transition:opacity .1s,-webkit-transform .4s;transition:transform .4s,opacity .1s;transition:transform .4s,opacity .1s,-webkit-transform .4s;opacity:1}.md-search__inner{position:fixed;top:0;left:100%;width:100%;height:100%;-webkit-transform:translateX(5%);transform:translateX(5%);transition:right 0s .3s,left 0s .3s,opacity .15s .15s,-webkit-transform .15s cubic-bezier(.4,0,.2,1) .15s;transition:right 0s .3s,left 0s .3s,transform .15s cubic-bezier(.4,0,.2,1) .15s,opacity .15s .15s;transition:right 0s .3s,left 0s .3s,transform .15s cubic-bezier(.4,0,.2,1) .15s,opacity .15s .15s,-webkit-transform .15s cubic-bezier(.4,0,.2,1) .15s;opacity:0;z-index:2}[data-md-toggle=search]:checked~.md-header .md-search__inner{left:0;-webkit-transform:translateX(0);transform:translateX(0);transition:right 0s 0s,left 0s 0s,opacity .15s .15s,-webkit-transform .15s cubic-bezier(.1,.7,.1,1) .15s;transition:right 0s 0s,left 0s 0s,transform .15s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s;transition:right 0s 0s,left 0s 0s,transform .15s cubic-bezier(.1,.7,.1,1) .15s,opacity .15s .15s,-webkit-transform .15s cubic-bezier(.1,.7,.1,1) .15s;opacity:1}[dir=rtl] [data-md-toggle=search]:checked~.md-header .md-search__inner{right:0;left:auto}html [dir=rtl] .md-search__inner{right:100%;left:auto;-webkit-transform:translateX(-5%);transform:translateX(-5%)}.md-search__input{width:100%;height:2.4rem;font-size:.9rem}.md-search__icon[for=__search]{top:.6rem;left:.8rem}.md-search__icon[for=__search][for=__search]:before{content:"\E5C4"}[dir=rtl] .md-search__icon[for=__search][for=__search]:before{content:"\E5C8"}.md-search__icon[type=reset]{top:.6rem;right:.8rem}.md-search__output{top:2.4rem;bottom:0}.md-search-result__article--document:before{display:none}}@media only screen and (max-width:76.1875em){[data-md-toggle=drawer]:checked~.md-overlay{width:100%;height:100%;transition:width 0s,height 0s,opacity .25s;opacity:1}.md-header-nav__button.md-icon--home,.md-header-nav__button.md-logo{display:none}.md-hero__inner{margin-top:2.4rem;margin-bottom:1.2rem}.md-nav{background-color:#fff}.md-nav--primary,.md-nav--primary .md-nav{display:flex;position:absolute;top:0;right:0;left:0;flex-direction:column;height:100%;z-index:1}.md-nav--primary .md-nav__item,.md-nav--primary .md-nav__title{font-size:.8rem;line-height:1.5}html .md-nav--primary .md-nav__title{position:relative;height:5.6rem;padding:3rem .8rem .2rem;background-color:rgba(0,0,0,.07);color:rgba(0,0,0,.54);font-weight:400;line-height:2.4rem;white-space:nowrap;cursor:pointer}html .md-nav--primary .md-nav__title:before{display:block;position:absolute;top:.2rem;left:.2rem;width:2rem;height:2rem;color:rgba(0,0,0,.54)}html .md-nav--primary .md-nav__title~.md-nav__list{background-color:#fff;box-shadow:inset 0 .05rem 0 rgba(0,0,0,.07)}html .md-nav--primary .md-nav__title~.md-nav__list>.md-nav__item:first-child{border-top:0}html .md-nav--primary .md-nav__title--site{position:relative;background-color:#3f51b5;color:#fff}html .md-nav--primary .md-nav__title--site .md-nav__button{display:block;position:absolute;top:.2rem;left:.2rem;width:3.2rem;height:3.2rem;font-size:2.4rem}html .md-nav--primary .md-nav__title--site:before{display:none}html [dir=rtl] .md-nav--primary .md-nav__title--site .md-nav__button,html [dir=rtl] .md-nav--primary .md-nav__title:before{right:.2rem;left:auto}.md-nav--primary .md-nav__list{flex:1;overflow-y:auto}.md-nav--primary .md-nav__item{padding:0;border-top:.05rem solid rgba(0,0,0,.07)}[dir=rtl] .md-nav--primary .md-nav__item{padding:0}.md-nav--primary .md-nav__item--nested>.md-nav__link{padding-right:2.4rem}[dir=rtl] .md-nav--primary .md-nav__item--nested>.md-nav__link{padding-right:.8rem;padding-left:2.4rem}.md-nav--primary .md-nav__item--nested>.md-nav__link:after{content:"\E315"}[dir=rtl] .md-nav--primary .md-nav__item--nested>.md-nav__link:after{content:"\E314"}.md-nav--primary .md-nav__link{position:relative;margin-top:0;padding:.6rem .8rem}.md-nav--primary .md-nav__link:after{position:absolute;top:50%;right:.6rem;margin-top:-.6rem;color:inherit;font-size:1.2rem}[dir=rtl] .md-nav--primary .md-nav__link:after{right:auto;left:.6rem}.md-nav--primary .md-nav--secondary .md-nav__link{position:static}.md-nav--primary .md-nav--secondary .md-nav{position:static;background-color:transparent}.md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-left:1.4rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link{padding-right:1.4rem;padding-left:0}.md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-left:2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link{padding-right:2rem;padding-left:0}.md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-left:2.6rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link{padding-right:2.6rem;padding-left:0}.md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-left:3.2rem}[dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link{padding-right:3.2rem;padding-left:0}.md-nav__toggle~.md-nav{display:flex;-webkit-transform:translateX(100%);transform:translateX(100%);transition:opacity .125s .05s,-webkit-transform .25s cubic-bezier(.8,0,.6,1);transition:transform .25s cubic-bezier(.8,0,.6,1),opacity .125s .05s;transition:transform .25s cubic-bezier(.8,0,.6,1),opacity .125s .05s,-webkit-transform .25s cubic-bezier(.8,0,.6,1);opacity:0}[dir=rtl] .md-nav__toggle~.md-nav{-webkit-transform:translateX(-100%);transform:translateX(-100%)}.no-csstransforms3d .md-nav__toggle~.md-nav{display:none}.md-nav__toggle:checked~.md-nav{-webkit-transform:translateX(0);transform:translateX(0);transition:opacity .125s .125s,-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .125s .125s;transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .125s .125s,-webkit-transform .25s cubic-bezier(.4,0,.2,1);opacity:1}.no-csstransforms3d .md-nav__toggle:checked~.md-nav{display:flex}.md-sidebar--primary{position:fixed;top:0;left:-12.1rem;width:12.1rem;height:100%;-webkit-transform:translateX(0);transform:translateX(0);transition:box-shadow .25s,-webkit-transform .25s cubic-bezier(.4,0,.2,1);transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s;transition:transform .25s cubic-bezier(.4,0,.2,1),box-shadow .25s,-webkit-transform .25s cubic-bezier(.4,0,.2,1);background-color:#fff;z-index:3}[dir=rtl] .md-sidebar--primary{right:-12.1rem;left:auto}.no-csstransforms3d .md-sidebar--primary{display:none}[data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.4);-webkit-transform:translateX(12.1rem);transform:translateX(12.1rem)}[dir=rtl] [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{-webkit-transform:translateX(-12.1rem);transform:translateX(-12.1rem)}.no-csstransforms3d [data-md-toggle=drawer]:checked~.md-container .md-sidebar--primary{display:block}.md-sidebar--primary .md-sidebar__scrollwrap{overflow:hidden;position:absolute;top:0;right:0;bottom:0;left:0;margin:0}.md-tabs{display:none}}@media only screen and (min-width:60em){.md-content{margin-right:12.1rem}[dir=rtl] .md-content{margin-right:0;margin-left:12.1rem}.md-header-nav__button.md-icon--search{display:none}.md-header-nav__source{display:block;width:11.7rem;max-width:11.7rem;padding-right:.6rem}[dir=rtl] .md-header-nav__source{padding-right:0;padding-left:.6rem}.md-search{padding:.2rem}.md-search__overlay{position:fixed;top:0;left:0;width:0;height:0;transition:width 0s .25s,height 0s .25s,opacity .25s;background-color:rgba(0,0,0,.54);cursor:pointer}[dir=rtl] .md-search__overlay{right:0;left:auto}[data-md-toggle=search]:checked~.md-header .md-search__overlay{width:100%;height:100%;transition:width 0s,height 0s,opacity .25s;opacity:1}.md-search__inner{position:relative;width:11.5rem;margin-right:.8rem;padding:.1rem 0;float:right;transition:width .25s cubic-bezier(.1,.7,.1,1)}[dir=rtl] .md-search__inner{margin-right:0;margin-left:.8rem;float:left}.md-search__form,.md-search__input{border-radius:.1rem}.md-search__input{width:100%;height:1.8rem;padding-left:2.2rem;transition:background-color .25s cubic-bezier(.1,.7,.1,1),color .25s cubic-bezier(.1,.7,.1,1);background-color:rgba(0,0,0,.26);color:inherit;font-size:.8rem}[dir=rtl] .md-search__input{padding-right:2.2rem}.md-search__input+.md-search__icon{color:inherit}.md-search__input::-webkit-input-placeholder{color:hsla(0,0%,100%,.7)}.md-search__input:-ms-input-placeholder{color:hsla(0,0%,100%,.7)}.md-search__input::-ms-input-placeholder{color:hsla(0,0%,100%,.7)}.md-search__input::placeholder{color:hsla(0,0%,100%,.7)}.md-search__input:hover{background-color:hsla(0,0%,100%,.12)}[data-md-toggle=search]:checked~.md-header .md-search__input{border-radius:.1rem .1rem 0 0;background-color:#fff;color:rgba(0,0,0,.87);text-overflow:clip}[data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon,[data-md-toggle=search]:checked~.md-header .md-search__input::-webkit-input-placeholder{color:rgba(0,0,0,.54)}[data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon,[data-md-toggle=search]:checked~.md-header .md-search__input:-ms-input-placeholder{color:rgba(0,0,0,.54)}[data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon,[data-md-toggle=search]:checked~.md-header .md-search__input::-ms-input-placeholder{color:rgba(0,0,0,.54)}[data-md-toggle=search]:checked~.md-header .md-search__input+.md-search__icon,[data-md-toggle=search]:checked~.md-header .md-search__input::placeholder{color:rgba(0,0,0,.54)}.md-search__output{top:1.9rem;transition:opacity .4s;opacity:0}[data-md-toggle=search]:checked~.md-header .md-search__output{box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.4);opacity:1}.md-search__scrollwrap{max-height:0}[data-md-toggle=search]:checked~.md-header .md-search__scrollwrap{max-height:75vh}.md-search__scrollwrap::-webkit-scrollbar{width:.2rem;height:.2rem}.md-search__scrollwrap::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.26)}.md-search__scrollwrap::-webkit-scrollbar-thumb:hover{background-color:#536dfe}.md-search-result__meta{padding-left:2.2rem}[dir=rtl] .md-search-result__meta{padding-right:2.2rem;padding-left:0}.md-search-result__article{padding-left:2.2rem}[dir=rtl] .md-search-result__article{padding-right:2.2rem;padding-left:.8rem}.md-sidebar--secondary{display:block;margin-left:100%;-webkit-transform:translate(-100%);transform:translate(-100%)}[dir=rtl] .md-sidebar--secondary{margin-right:100%;margin-left:0;-webkit-transform:translate(100%);transform:translate(100%)}}@media only screen and (min-width:76.25em){.md-content{margin-left:12.1rem}[dir=rtl] .md-content{margin-right:12.1rem}.md-content__inner{margin-right:1.2rem;margin-left:1.2rem}.md-header-nav__button.md-icon--menu{display:none}.md-nav[data-md-state=animate]{transition:max-height .25s cubic-bezier(.86,0,.07,1)}.md-nav__toggle~.md-nav{max-height:0;overflow:hidden}.no-js .md-nav__toggle~.md-nav{display:none}.md-nav[data-md-state=expand],.md-nav__toggle:checked~.md-nav{max-height:100%}.no-js .md-nav[data-md-state=expand],.no-js .md-nav__toggle:checked~.md-nav{display:block}.md-nav__item--nested>.md-nav>.md-nav__title{display:none}.md-nav__item--nested>.md-nav__link:after{display:inline-block;-webkit-transform-origin:.45em .45em;transform-origin:.45em .45em;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;vertical-align:-.125em}.js .md-nav__item--nested>.md-nav__link:after{transition:-webkit-transform .4s;transition:transform .4s;transition:transform .4s,-webkit-transform .4s}.md-nav__item--nested .md-nav__toggle:checked~.md-nav__link:after{-webkit-transform:rotateX(180deg);transform:rotateX(180deg)}.md-search__inner{margin-right:1.2rem}[dir=rtl] .md-search__inner{margin-left:1.2rem}.md-search__scrollwrap,[data-md-toggle=search]:checked~.md-header .md-search__inner{width:34.4rem}.md-sidebar--secondary{margin-left:61rem}[dir=rtl] .md-sidebar--secondary{margin-right:61rem;margin-left:0}.md-tabs~.md-main .md-nav--primary>.md-nav__list>.md-nav__item--nested{font-size:0;visibility:hidden}.md-tabs--active~.md-main .md-nav--primary .md-nav__title{display:block;padding:0}.md-tabs--active~.md-main .md-nav--primary .md-nav__title--site{display:none}.no-js .md-tabs--active~.md-main .md-nav--primary .md-nav{display:block}.md-tabs--active~.md-main .md-nav--primary>.md-nav__list>.md-nav__item{font-size:0;visibility:hidden}.md-tabs--active~.md-main .md-nav--primary>.md-nav__list>.md-nav__item--nested{display:none;font-size:.7rem;overflow:auto;visibility:visible}.md-tabs--active~.md-main .md-nav--primary>.md-nav__list>.md-nav__item--nested>.md-nav__link{display:none}.md-tabs--active~.md-main .md-nav--primary>.md-nav__list>.md-nav__item--active{display:block}.md-tabs--active~.md-main .md-nav[data-md-level="1"]{max-height:none;overflow:visible}.md-tabs--active~.md-main .md-nav[data-md-level="1"]>.md-nav__list>.md-nav__item{padding-left:0}.md-tabs--active~.md-main .md-nav[data-md-level="1"] .md-nav .md-nav__title{display:none}}@media only screen and (min-width:45em){.md-footer-nav__link{width:50%}.md-footer-copyright{max-width:75%;float:left}[dir=rtl] .md-footer-copyright{float:right}.md-footer-social{padding:.6rem 0;float:right}[dir=rtl] .md-footer-social{float:left}}@media only screen and (max-width:29.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{-webkit-transform:scale(45);transform:scale(45)}}@media only screen and (min-width:30em) and (max-width:44.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{-webkit-transform:scale(60);transform:scale(60)}}@media only screen and (min-width:45em) and (max-width:59.9375em){[data-md-toggle=search]:checked~.md-header .md-search__overlay{-webkit-transform:scale(75);transform:scale(75)}}@media only screen and (min-width:60em) and (max-width:76.1875em){.md-search__scrollwrap,[data-md-toggle=search]:checked~.md-header .md-search__inner{width:23.4rem}.md-search-result__teaser{max-height:2.5rem;-webkit-line-clamp:3}}
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/basicusage.html b/lib/AutoConnect-master/docs/basicusage.html
deleted file mode 100644
index f0368d537e58c79c56f07d996df6f38cd35eabdb..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/basicusage.html
+++ /dev/null
@@ -1,137 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/basicusage.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>Basic usage - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#simple-usage" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">Basic usage</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">Basic usage</label><a href="basicusage.html" title="Basic usage" class="md-nav__link md-nav__link--active">Basic usage</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#simple-usage" title="Simple usage" class="md-nav__link">Simple usage</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#embed-to-the-sketches" title=" Embed to the sketches" class="md-nav__link"> Embed to the sketches</a></li></ul></nav></li><li class="md-nav__item"><a href="#basic-usage" title="Basic usage" class="md-nav__link">Basic usage</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#basic-logic-sequence-for-the-user-sketches" title=" Basic logic sequence for the user sketches" class="md-nav__link"> Basic logic sequence for the user sketches</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#1-a-typical-logic-sequence" title="1. A typical logic sequence" class="md-nav__link">1. A typical logic sequence</a></li><li class="md-nav__item"><a href="#2-declare-autoconnect-object" title="2. Declare AutoConnect object" class="md-nav__link">2. Declare AutoConnect object</a></li><li class="md-nav__item"><a href="#3-no-need-wifibegin" title="3. No need WiFI.begin(...)" class="md-nav__link">3. No need WiFI.begin(...)</a></li><li class="md-nav__item"><a href="#4-alternate-esp8266webserverbegin-and-webserverbegin" title="4. Alternate ESP8266WebServer::begin() and WebServer::begin()" class="md-nav__link">4. Alternate ESP8266WebServer::begin() and WebServer::begin()</a></li><li class="md-nav__item"><a href="#5-autoconnectbegin-with-ssid-and-password" title="5. AutoConnect::begin with SSID and Password" class="md-nav__link">5. AutoConnect::begin with SSID and Password</a></li><li class="md-nav__item"><a href="#6-use-esp8266webserveron-and-webserveron-to-handle-url" title="6. Use ESP8266WebServer::on and WebServer::on to handle URL" class="md-nav__link">6. Use ESP8266WebServer::on and WebServer::on to handle URL</a></li><li class="md-nav__item"><a href="#7-use-either-esp8266webserverhandleclientwebserverhandleclient-or-autoconnecthandleclient" title="7. Use either ESP8266WebServer::handleClient()/WebServer::handleClient() or AutoConnect::handleClient()" class="md-nav__link">7. Use either ESP8266WebServer::handleClient()/WebServer::handleClient() or AutoConnect::handleClient()</a></li></ul></nav></li><li class="md-nav__item"><a href="#esp8266webserverwebserver-hosted-or-parasitic" title=" ESP8266WebServer/WebServer hosted or parasitic" class="md-nav__link"> ESP8266WebServer/WebServer hosted or parasitic</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7"><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#simple-usage" title="Simple usage" class="md-nav__link">Simple usage</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#embed-to-the-sketches" title=" Embed to the sketches" class="md-nav__link"> Embed to the sketches</a></li></ul></nav></li><li class="md-nav__item"><a href="#basic-usage" title="Basic usage" class="md-nav__link">Basic usage</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#basic-logic-sequence-for-the-user-sketches" title=" Basic logic sequence for the user sketches" class="md-nav__link"> Basic logic sequence for the user sketches</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#1-a-typical-logic-sequence" title="1. A typical logic sequence" class="md-nav__link">1. A typical logic sequence</a></li><li class="md-nav__item"><a href="#2-declare-autoconnect-object" title="2. Declare AutoConnect object" class="md-nav__link">2. Declare AutoConnect object</a></li><li class="md-nav__item"><a href="#3-no-need-wifibegin" title="3. No need WiFI.begin(...)" class="md-nav__link">3. No need WiFI.begin(...)</a></li><li class="md-nav__item"><a href="#4-alternate-esp8266webserverbegin-and-webserverbegin" title="4. Alternate ESP8266WebServer::begin() and WebServer::begin()" class="md-nav__link">4. Alternate ESP8266WebServer::begin() and WebServer::begin()</a></li><li class="md-nav__item"><a href="#5-autoconnectbegin-with-ssid-and-password" title="5. AutoConnect::begin with SSID and Password" class="md-nav__link">5. AutoConnect::begin with SSID and Password</a></li><li class="md-nav__item"><a href="#6-use-esp8266webserveron-and-webserveron-to-handle-url" title="6. Use ESP8266WebServer::on and WebServer::on to handle URL" class="md-nav__link">6. Use ESP8266WebServer::on and WebServer::on to handle URL</a></li><li class="md-nav__item"><a href="#7-use-either-esp8266webserverhandleclientwebserverhandleclient-or-autoconnecthandleclient" title="7. Use either ESP8266WebServer::handleClient()/WebServer::handleClient() or AutoConnect::handleClient()" class="md-nav__link">7. Use either ESP8266WebServer::handleClient()/WebServer::handleClient() or AutoConnect::handleClient()</a></li></ul></nav></li><li class="md-nav__item"><a href="#esp8266webserverwebserver-hosted-or-parasitic" title=" ESP8266WebServer/WebServer hosted or parasitic" class="md-nav__link"> ESP8266WebServer/WebServer hosted or parasitic</a></li></ul></nav></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>Basic usage</h1><h2 id="simple-usage">Simple usage<a class="headerlink" href="#simple-usage" title="Permanent link">&para;</a></h2>
-<h3 id="embed-to-the-sketches"><i class="fa fa-edit"></i> Embed to the sketches<a class="headerlink" href="#embed-to-the-sketches" title="Permanent link">&para;</a></h3>
-<p>How embed the AutoConnect to the sketches you have. Most simple approach to applying AutoConnect for the existing sketches, follow the below steps. The below sketch is for ESP8266. For ESP32, replace <code>ESP8266WebServer</code> with <code>WebServer</code> and <code>ESP8266WiFi.h</code> with <code>WiFi.h</code> respectively.</p>
-<p><img src="images/BeforeAfter.svg" /></p>
-<ul class="ulsty-edit" style="list-style:none;">
-  <li>Insert <code class="codehilite"><span class="cp">#include</span> <span class="cpf">&lt;AutoConnect.h&gt;</span></code> to behind of <code class="codehilite"><span class="cp">#include</span> <span class="cpf">&lt;ESP8266WebServer.h&gt;</span></code>.</li>
-  <li>Insert <code class="codehilite"><span class="na">AutoConnect</span> <em>PORTAL(WEBSERVER);</em></code> to behind of <code class="codehilite"><span class="na">ESP8266WebServer</span> <em>WEBSERVER;</em></code> declaration.<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup></li>
-  <li>Remove <code class="codehilite">WiFi.<span class="na">begin</span>(<em>SSID</em>,<em>PSK</em>)</code> and the subsequent logic for the connection status check.</li>
-  <li>Replace <code class="codehilite"><em>WEBSERVER</em>.<span class="na">begin</span><span class="p">()</span></code> to <code class="codehilite"><em>PORTAL</em>.<span class="na">begin</span><span class="p">()</span></code>.<sup id="fnref:2"><a class="footnote-ref" href="#fn:2" rel="footnote">2</a></sup></li>
-  <li>Replace <code class="codehilite"><em>WEBSERVER</em>.<span class="na">handleClient</span><span class="p">()</span></code> to <code class="codehilite"><em>PORTAL</em>.<span class="na">handleClient</span><span class="p">()</span></code>.<sup id="fnref:3"><a class="footnote-ref" href="#fn:3" rel="footnote">3</a></sup></li>
-  <li>If the connection checks logic is needed, you can check the return value according to <code class="codehilite"><em>PORTAL</em>.<span class="na">begin</span><span class="p">()</span></code> with <code class="codehilite">true</code> or <code class="codehilite">false</code>.</li>
-</ul>
-
-<h2 id="basic-usage">Basic usage<a class="headerlink" href="#basic-usage" title="Permanent link">&para;</a></h2>
-<h3 id="basic-logic-sequence-for-the-user-sketches"><i class="fa fa-caret-right"></i> Basic logic sequence for the user sketches<a class="headerlink" href="#basic-logic-sequence-for-the-user-sketches" title="Permanent link">&para;</a></h3>
-<h4 id="1-a-typical-logic-sequence">1. A typical logic sequence<a class="headerlink" href="#1-a-typical-logic-sequence" title="Permanent link">&para;</a></h4>
-<div class="admonition note">
-<ol>
-<li><strong>Include headers,</strong> <code>ESP8266WebServer.h</code>/<code>WebServer.h</code> and <code>AutoConnect.h</code>  </li>
-<li><strong>Declare an ESP8266WebServer variable for ESP8266 or a WebServer variable for ESP32.</strong>  </li>
-<li><strong>Declare an AutoConnect variable.</strong>  </li>
-<li><strong>Implement the URL handlers provided for the </strong><code>on</code><strong> method of ESP8266WebServer/WebServer with the <em>function()</em>.</strong>  </li>
-<li><strong>setup()</strong><br />
-   5.1 <strong>Sets URL handler the <em>function()</em> to ESP8266WebServer/WebServer by</strong><code>ESP8266WebServer::on</code><strong>/</strong><code>WebServer::on</code><strong>.</strong><br />
-   5.2 <strong>Starts </strong><code>AutoConnect::begin()</code><strong>.</strong><br />
-   5.3 <strong>Check WiFi connection status.</strong>  </li>
-<li><strong>loop()</strong><br />
-   6.1 <strong>Do the process for actual sketch.</strong><br />
-   6.2 <strong>Invokes </strong><code>AutoConnect::handleClient()</code><strong>, or invokes </strong><code>ESP8266WebServer::handleClient()</code><strong>/</strong><code>WebServer::handleClient</code><strong> then </strong><code>AutoConnect::handleRequest()</code><strong>.</strong>  </li>
-</ol>
-</div>
-<h4 id="2-declare-autoconnect-object">2. Declare AutoConnect object<a class="headerlink" href="#2-declare-autoconnect-object" title="Permanent link">&para;</a></h4>
-<p><a href="#esp8266webserver-hosted-or-parasitic">Two options</a> are available for <a href="api.html#constructors">AutoConnect constructor</a>.</p>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnect</span> <span style="color: #a6e22e">VARIABLE</span><span style="color: #f8f8f2">(</span><span style="color: #f92672">&amp;</span><span style="color: #f8f8f2">ESP8266WebServer);</span>  <span style="color: #75715e">// For ESP8266</span>
-<span style="color: #f8f8f2">AutoConnect</span> <span style="color: #a6e22e">VARIABLE</span><span style="color: #f8f8f2">(</span><span style="color: #f92672">&amp;</span><span style="color: #f8f8f2">WebServer);</span>         <span style="color: #75715e">// For ESP32</span>
-</pre></div>
-or</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnect</span> <span style="color: #f8f8f2">VARIABLE;</span>
-</pre></div>
-
-<ul>
-<li>
-<p><strong>The parameter with an ESP8266WebServer/WebServer variable:</strong> An ESP8266WebServer/WebServer object variable must be declared. AutoConnect uses its variable to handles the <a href="menu.html">AutoConnect menu</a>.</p>
-</li>
-<li>
-<p><strong>With no parameter:</strong> The sketch does not declare ESP8266WebServer/WebServer object. In this case, AutoConnect allocates an instance of the ESP8266WebServer/WebServer internally. The logic sequence of the sketch is somewhat different as the above. To register a URL handler function by <em>ESP8266WebServer::on</em> or <em>WebServer::on</em> should be performed after <a href="api.html#begin"><em>AutoConnect::begin</em></a>.</p>
-</li>
-</ul>
-<h4 id="3-no-need-wifibegin">3. No need WiFI.begin(...)<a class="headerlink" href="#3-no-need-wifibegin" title="Permanent link">&para;</a></h4>
-<p>AutoConnect internally performs <em>WiFi.begin</em> to establish a WiFi connection. There is no need for a general process to establish a connection using <em>WiFi.begin</em> with a sketch code.</p>
-<h4 id="4-alternate-esp8266webserverbegin-and-webserverbegin">4. Alternate ESP8266WebServer::begin() and WebServer::begin()<a class="headerlink" href="#4-alternate-esp8266webserverbegin-and-webserverbegin" title="Permanent link">&para;</a></h4>
-<p><a href="api.html#begin"><em>AutoConnect::begin</em></a> executes <em>ESP8266WebServer::begin</em>/<em>WebServer::begin</em> internally too and it starts the DNS server to behave as a Captive portal. So it is not needed to call <em>ESP8266WebServer::begin</em>/<em>WebServer::begin</em> in the sketch.</p>
-<div class="admonition info">
-<p class="admonition-title">Why DNS Server starts</p>
-<p>AutoConnect traps the detection of the captive portal and achieves a connection with the WLAN interactively by the AutoConnect menu. It responds SoftAP address to all DNS queries temporarily to trap. Once a WiFi connection establishes, the DNS server contributed by AutoConnect stops.</p>
-</div>
-<h4 id="5-autoconnectbegin-with-ssid-and-password">5. AutoConnect::begin with SSID and Password<a class="headerlink" href="#5-autoconnectbegin-with-ssid-and-password" title="Permanent link">&para;</a></h4>
-<p>SSID and Password can also specify by <a href="api.html#begin"><em>AutoConnect::begin</em></a>. ESP8266/ESP32 uses provided SSID and Password explicitly. If the connection false with specified SSID with Password then a captive portal is activated. SSID and Password are not present, ESP8266 SDK will attempt to connect using the still effectual SSID and password. Usually, it succeeds.</p>
-<h4 id="6-use-esp8266webserveron-and-webserveron-to-handle-url">6. Use ESP8266WebServer::on and WebServer::on to handle URL<a class="headerlink" href="#6-use-esp8266webserveron-and-webserveron-to-handle-url" title="Permanent link">&para;</a></h4>
-<p>AutoConnect is designed to coexist with the process for handling the web pages by user sketches. The page processing function which will send an HTML to the client invoked by the "<em>on::ESP8266WebServer</em>" or the "<em>on::WebServer</em>" function is the same as when using ESP8266WebServer/WebServer natively.</p>
-<h4 id="7-use-either-esp8266webserverhandleclientwebserverhandleclient-or-autoconnecthandleclient">7. Use either ESP8266WebServer::handleClient()/WebServer::handleClient() or AutoConnect::handleClient()<a class="headerlink" href="#7-use-either-esp8266webserverhandleclientwebserverhandleclient-or-autoconnecthandleclient" title="Permanent link">&para;</a></h4>
-<p>Both classes member function name is the same: <em>handleClient</em>, but the behavior is different. Using the AutoConnect embedded along with ESP8266WebServer::handleClient/WebServer::handleClient has limitations. Refer to the below section for details. </p>
-<h3 id="esp8266webserverwebserver-hosted-or-parasitic"><i class="fa fa-caret-right"></i> ESP8266WebServer/WebServer hosted or parasitic<a class="headerlink" href="#esp8266webserverwebserver-hosted-or-parasitic" title="Permanent link">&para;</a></h3>
-<p>The interoperable process with an ESP8266WebServer/WebServer depends on the parameters of the <a href="api.html#constructors">AutoConnect constructor</a>.</p>
-<table>
-<thead>
-<tr>
-<th>Declaration parameter for the constructor</th>
-<th>Use ESP8266WebServer::handleClient or WebServer::handleClient only</th>
-<th>Use AutoConnect::handleClient</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td><a href="api.html#constructors">None</a></td>
-<td>AutoConnect menu not available.<br>To use AutoConnect menu, need <a href="api.html#handlerequest">AutoConnect::handleRequest()</a>.<br>also to use ESP8266WebServer/WebServer natively, need <a href="api.html#host">AutoConnect::host()</a>.</td>
-<td>AutoConnect menu available.<br>To use ESP8266WebServer/WebServer natively, need <a href="api.html#host">AutoConnect::host()</a>.</td>
-</tr>
-<tr>
-<td><a href="api.html#withparameter">Reference to ESP8266WebServer/WebServer</a></td>
-<td>AutoConnect menu not available.<br>To use AutoConnect menu, need <a href="api.html#handlerequest">AutoConnect::handleRequest()</a>.</td>
-<td>AutoConnect menu available.</td>
-</tr>
-</tbody>
-</table>
-<ul>
-<li>
-<p><strong>By declaration for the AutoConnect variable with no parameter</strong>: The ESP8266WebServer/WebServer instance is hosted by AutoConnect automatically then the sketches use <a href="api.html#host"><em>AutoConnect::host</em></a> as API to get it after <a href="api.html#begin"><em>AutoConnect::begin</em></a> performed.</p>
-</li>
-<li>
-<p><strong>By declaration for the AutoConnect variable with the reference of ESP8266WebServer/WebServer</strong>: AutoConnect will use it. The sketch can use it is too.</p>
-</li>
-<li>
-<p><strong>In use ESP8266WebServer::handleClient()/WebServer::handleClient()</strong>: AutoConnect menu can be dispatched but not works normally. It is necessary to call <a href="api.html#void-handlerequest"><em>AutoConnect::handleRequest</em></a> after <em>ESP8255WebServer::handleClient</em>/<em>WebServer::handleClient</em> invoking.</p>
-</li>
-<li>
-<p><strong>In use <a href="api.html#void-handleclient">AutoConnect::handleClient()</a></strong>: The handleClient() process and the AutoConnect menu is available without calling <em>ESP8266WebServer::handleClient</em>.</p>
-</li>
-</ul>
-<div class="admonition info">
-<p class="admonition-title">Why AutoConnect::handleRequest is needed when using ESP8266WebServer::handleClient/WebServer::handleClient</p>
-<p>The AutoConnect menu function may affect WiFi connection state. It follows that the menu process must execute outside <em>ESP8266WebServer::handleClient</em> and <em>WebServer::handleClient</em>.<br />
-<a href="api.html#void-handleclient"><em>AutoConnect::handleClient</em></a> is equivalent <em>ESP8266WebServer::handleClient</em> and <em>WEbServer::handleClient</em> included <a href="api.html#void-handlerequest"><em>AutoConnect::handleRequest</em></a>.</p>
-</div>
-<div class="footnote">
-<hr />
-<ol>
-<li id="fn:1">
-<p>Each <em>VARIABLE</em> conforms to the actual declaration in the sketches.&#160;<a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p>
-</li>
-<li id="fn:2">
-<p>WiFi SSID and Password can be specified AutoConnect::begin() too.&#160;<a class="footnote-backref" href="#fnref:2" rev="footnote" title="Jump back to footnote 2 in the text">&#8617;</a></p>
-</li>
-<li id="fn:3">
-<p>Replacement the <strong>handleClient</strong> method is not indispensable. AutoConnect can still connect with the captive portal as it is ESP8266WebServer::handleClient. But it can <strong>not valid AutoConnect menu</strong>.&#160;<a class="footnote-backref" href="#fnref:3" rev="footnote" title="Jump back to footnote 3 in the text">&#8617;</a></p>
-</li>
-</ol>
-</div></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="menu.html" title="AutoConnect menu" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>AutoConnect menu</span></div></a><a href="advancedusage.html" title="Advanced usage" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>Advanced usage</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/changelog.html b/lib/AutoConnect-master/docs/changelog.html
deleted file mode 100644
index 4e4f1f23e6ad18e87fee9c34a54740b0d50d4d8a..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/changelog.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/changelog.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>Change log - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#0910-june-12-2019" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">Change log</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7"><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">Change log</label><a href="changelog.html" title="Change log" class="md-nav__link md-nav__link--active">Change log</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#0910-june-12-2019" title="[0.9.10] June 12, 2019" class="md-nav__link">[0.9.10] June 12, 2019</a></li><li class="md-nav__item"><a href="#099-may-25-2019" title="[0.9.9] May 25, 2019" class="md-nav__link">[0.9.9] May 25, 2019</a></li><li class="md-nav__item"><a href="#098-may-3-2019" title="[0.9.8] May 3, 2019" class="md-nav__link">[0.9.8] May 3, 2019</a></li><li class="md-nav__item"><a href="#097-jan-25-2019" title="[0.9.7] Jan. 25, 2019" class="md-nav__link">[0.9.7] Jan. 25, 2019</a></li><li class="md-nav__item"><a href="#096-sept27-2018" title="[0.9.6] Sept.27, 2018." class="md-nav__link">[0.9.6] Sept.27, 2018.</a></li><li class="md-nav__item"><a href="#095-aug27-2018" title="[0.9.5] Aug.27, 2018." class="md-nav__link">[0.9.5] Aug.27, 2018.</a></li><li class="md-nav__item"><a href="#094-may-5-2018" title="[0.9.4] May 5, 2018." class="md-nav__link">[0.9.4] May 5, 2018.</a></li><li class="md-nav__item"><a href="#093-march-23-2018" title="[0.9.3] March 23, 2018." class="md-nav__link">[0.9.3] March 23, 2018.</a></li><li class="md-nav__item"><a href="#092-march-19-2018" title="[0.9.2] March 19, 2018." class="md-nav__link">[0.9.2] March 19, 2018.</a></li><li class="md-nav__item"><a href="#091-march-13-2018" title="[0.9.1] March 13, 2018." class="md-nav__link">[0.9.1] March 13, 2018.</a></li></ul></nav></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#0910-june-12-2019" title="[0.9.10] June 12, 2019" class="md-nav__link">[0.9.10] June 12, 2019</a></li><li class="md-nav__item"><a href="#099-may-25-2019" title="[0.9.9] May 25, 2019" class="md-nav__link">[0.9.9] May 25, 2019</a></li><li class="md-nav__item"><a href="#098-may-3-2019" title="[0.9.8] May 3, 2019" class="md-nav__link">[0.9.8] May 3, 2019</a></li><li class="md-nav__item"><a href="#097-jan-25-2019" title="[0.9.7] Jan. 25, 2019" class="md-nav__link">[0.9.7] Jan. 25, 2019</a></li><li class="md-nav__item"><a href="#096-sept27-2018" title="[0.9.6] Sept.27, 2018." class="md-nav__link">[0.9.6] Sept.27, 2018.</a></li><li class="md-nav__item"><a href="#095-aug27-2018" title="[0.9.5] Aug.27, 2018." class="md-nav__link">[0.9.5] Aug.27, 2018.</a></li><li class="md-nav__item"><a href="#094-may-5-2018" title="[0.9.4] May 5, 2018." class="md-nav__link">[0.9.4] May 5, 2018.</a></li><li class="md-nav__item"><a href="#093-march-23-2018" title="[0.9.3] March 23, 2018." class="md-nav__link">[0.9.3] March 23, 2018.</a></li><li class="md-nav__item"><a href="#092-march-19-2018" title="[0.9.2] March 19, 2018." class="md-nav__link">[0.9.2] March 19, 2018.</a></li><li class="md-nav__item"><a href="#091-march-13-2018" title="[0.9.1] March 13, 2018." class="md-nav__link">[0.9.1] March 13, 2018.</a></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>Change log</h1><h4 id="0910-june-12-2019">[0.9.10] June 12, 2019<a class="headerlink" href="#0910-june-12-2019" title="Permanent link">&para;</a></h4>
-<ul>
-<li>Fixed the unable to get AutoConnectElemets values ​​in the sketch with ESP8266 arduino core 2.5.2.</li>
-</ul>
-<h4 id="099-may-25-2019">[0.9.9] May 25, 2019<a class="headerlink" href="#099-may-25-2019" title="Permanent link">&para;</a></h4>
-<ul>
-<li>Supports ESP8266 Arduino core 2.5.2.</li>
-<li>Menu text/background color can be statically customized.</li>
-<li>Added the <a href="achandling.html#enable-autoconnectelements-during-the-sketch-execution">enable</a>  attribute to the AutoConnectElements. This attribute gives dynamically change to the element activation during the sketch executing.</li>
-<li>Added ID attribute to HTML tag generated from AutoConnectText.</li>
-<li>Fixed the input box layout collapsed.</li>
-<li>Fixed that the decoration of AutoConnectButton was disabled.</li>
-<li>Fixed that the value remains even after clearing the option with AutoConnectSelect.</li>
-<li>Fixed that an alignment violation exception occurred when loading AutoConnectAux described by JSON with PROGMEM attribute.</li>
-</ul>
-<h4 id="098-may-3-2019">[0.9.8] May 3, 2019<a class="headerlink" href="#098-may-3-2019" title="Permanent link">&para;</a></h4>
-<ul>
-<li>Supports ArduinoJson 6.9.1 or later.</li>
-<li>Supports allocating JsonDocument buffer to PSRAM on ESP32 with ArduinoJson 6.10.0 or later.</li>
-<li>Supports <a href="apiaux.html#operator"><strong>operator<code>[]</code></strong></a> as a shortcut for AutoConnectAux::getElement function.</li>
-<li>Supports <a href="apielements.html#ast62"><strong>AutoConnectElement::as&lt;T></strong></a> function to easily coding for conversion from an AutoConnectElement to an actual type.</li>
-<li>Supports new element type <a href="acelements.html#autoconnectfile"><strong>AutoConnectFile</strong></a> and built-in file uploader.</li>
-<li>Supports a <a href="acelements.html#format"><strong>format</strong></a> attribute with the AutoConnectText element.</li>
-<li>Supports a <a href="acelements.html#selected"><strong>selected</strong></a> attribute with the AutoConnectSelect element.</li>
-<li>Supports multiple element loading with <a href="apiaux.html#loadelement">AutoConnectAux::loadElement</a>.</li>
-<li>Changed menu labels placement in source files structure.</li>
-<li>Changed API interface of <a href="api.html#where">**AutoConnect::where</a> function.</li>
-<li>Fixed blank page responds with Configure new.</li>
-<li>Fixed loading elements value missing.</li>
-<li>Fixed losing elements in saveElement with ArduinoJson V6.</li>
-<li>Fixed compile error with older than ESP8266 core 2.5.0.</li>
-</ul>
-<h4 id="097-jan-25-2019">[0.9.7] Jan. 25, 2019<a class="headerlink" href="#097-jan-25-2019" title="Permanent link">&para;</a></h4>
-<ul>
-<li>Fixed crash in some environments. Thank you @ageurtse</li>
-<li>Supports AutoConnect menu extension by user sketch with <a href="acintro.html"><strong>AutoConnectAux</strong></a>.</li>
-<li>Supports loading and saving of user-defined parameters with JSON format.</li>
-<li>Improved the WiFi connection sequence at the first WiFi.begin. Even if <a href="apiconfig.html#autoreconnect"><strong>AutoConnectConfig::autoReconnect</strong></a> is disabled when SSID and PSK are not specified, it will use the information of the last established access point. The autoReconnect option will achieve trying the connect after a previous connection failed.</li>
-<li>Supports the <a href="apiconfig.html#immediatestart"><strong>AutoConnectConfig::immediateStart</strong></a> option and immediately starts the portal without first trying WiFi.begin. You can start the captive portal at any time in combination with the <a href="apiconfig.html#autorise"><strong>AutoConnectConfig::autoRise</strong></a> option.</li>
-<li>Improved boot uri after reset. <a href="apiconfig.html#booturi"><strong>AutoConnectConfig::bootUri</strong></a> can be specified either /_ac or HOME path as the uri to be accessed after invoking Reset from AutoConnect menu.</li>
-<li>Improved source code placement of predefined macros. Defined common macros have been moved to <code>AutoConnectDefs.h</code>.</li>
-<li>Supports <a href="apiconfig.html#hostname"><strong>AutoConnectConfig::hostName</strong></a>. It activates <code>WiFi.hostname()</code>/<code>WiFi.setHostName()</code>.</li>
-<li>Supports the captive portal time-out. It can be controlled by <a href="apiconfig.html#portaltimeout"><strong>AutoConnectConfig::portalTimeout</strong></a> and <a href="apiconfig.html#retainportal"><strong>AutoConnectConfig::retainPortal</strong></a>.</li>
-</ul>
-<h4 id="096-sept27-2018">[0.9.6] Sept.27, 2018.<a class="headerlink" href="#096-sept27-2018" title="Permanent link">&para;</a></h4>
-<ul>
-<li>Improvement of RSSI detection for saved SSIDs.</li>
-<li>Fixed disconnection SoftAP completely at the first connection phase of the <a href="api.html#begin"><strong>AutoConnect::begin</strong></a>.</li>
-</ul>
-<h4 id="095-aug27-2018">[0.9.5] Aug.27, 2018.<a class="headerlink" href="#095-aug27-2018" title="Permanent link">&para;</a></h4>
-<ul>
-<li>Supports ESP32.</li>
-<li>Fixed that crash may occur if the number of stored credentials in the EEPROM is smaller than the number of found WiFi networks.</li>
-</ul>
-<h4 id="094-may-5-2018">[0.9.4] May 5, 2018.<a class="headerlink" href="#094-may-5-2018" title="Permanent link">&para;</a></h4>
-<ul>
-<li>Automatically focus passphrase after selecting SSID with Configure New AP.</li>
-<li>Supports <a href="apiconfig.html#autoreconnect"><strong>AutoConnectConfig::autoReconnect</strong></a> option, it will scan the WLAN when it can not connect to the default SSID, apply the applicable credentials if it is saved, and try reconnecting.</li>
-</ul>
-<h4 id="093-march-23-2018">[0.9.3] March 23, 2018.<a class="headerlink" href="#093-march-23-2018" title="Permanent link">&para;</a></h4>
-<ul>
-<li>Supports a static IP address assignment.</li>
-</ul>
-<h4 id="092-march-19-2018">[0.9.2] March 19, 2018.<a class="headerlink" href="#092-march-19-2018" title="Permanent link">&para;</a></h4>
-<ul>
-<li>Improvement of string literal declaration with the examples, no library change.</li>
-</ul>
-<h4 id="091-march-13-2018">[0.9.1] March 13, 2018.<a class="headerlink" href="#091-march-13-2018" title="Permanent link">&para;</a></h4>
-<ul>
-<li>A release of the stable.</li>
-</ul></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="faq.html" title="FAQ" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>FAQ</span></div></a><a href="license.html" title="License" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>License</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/colorized.html b/lib/AutoConnect-master/docs/colorized.html
deleted file mode 100644
index 7f3342d8d63e376847a10317d4e702263974b1df..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/colorized.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/colorized.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>Custom colorized - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#autoconnect-menu-colorizing" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">Custom colorized</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7"><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--active md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9" checked><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">Custom colorized</label><a href="colorized.html" title="Custom colorized" class="md-nav__link md-nav__link--active">Custom colorized</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#autoconnect-menu-colorizing" title="AutoConnect menu colorizing" class="md-nav__link">AutoConnect menu colorizing</a></li><li class="md-nav__item"><a href="#typical-color-schemes" title="Typical color schemes" class="md-nav__link">Typical color schemes</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#indigo" title=" Indigo" class="md-nav__link"> Indigo</a></li><li class="md-nav__item"><a href="#dim-gray" title=" Dim-gray" class="md-nav__link"> Dim-gray</a></li><li class="md-nav__item"><a href="#brown" title=" Brown" class="md-nav__link"> Brown</a></li></ul></nav></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#autoconnect-menu-colorizing" title="AutoConnect menu colorizing" class="md-nav__link">AutoConnect menu colorizing</a></li><li class="md-nav__item"><a href="#typical-color-schemes" title="Typical color schemes" class="md-nav__link">Typical color schemes</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#indigo" title=" Indigo" class="md-nav__link"> Indigo</a></li><li class="md-nav__item"><a href="#dim-gray" title=" Dim-gray" class="md-nav__link"> Dim-gray</a></li><li class="md-nav__item"><a href="#brown" title=" Brown" class="md-nav__link"> Brown</a></li></ul></nav></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>Custom colorized</h1><h2 id="autoconnect-menu-colorizing">AutoConnect menu colorizing<a class="headerlink" href="#autoconnect-menu-colorizing" title="Permanent link">&para;</a></h2>
-<p>You can easily change the color of the AutoConnect menu. Menu colors can be changed statically by the AutoConnect menu color definition determined at compile time. You cannot change the color while the sketch is running.</p>
-<p>The menu color scheme has been separated to <code>AutoConnectLabels.h</code> placed the AutoConnect library folder.<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup> You can change the color scheme of the menu with the following three color codes. The color code also accepts CSS standard color names.<sup id="fnref:2"><a class="footnote-ref" href="#fn:2" rel="footnote">2</a></sup></p>
-<p>In <code>AutoConnectLabels.h</code> you can find three definition macros for menu colors:</p>
-<ul>
-<li>
-<p>#define <b>AUTOCONNECT_MENUCOLOR_TEXT</b><br />
-Defines the menu text color.</p>
-</li>
-<li>
-<p>#define <b>AUTOCONNECT_MENUCOLOR_BACKGROUND</b><br />
-Defines the menu background color.</p>
-</li>
-<li>
-<p>#define <b>AUTOCONNECT_MENUCOLOR_ACTIVE</b><br />
-Defines the active menu item background color.</p>
-</li>
-</ul>
-<h2 id="typical-color-schemes">Typical color schemes<a class="headerlink" href="#typical-color-schemes" title="Permanent link">&para;</a></h2>
-<p>Here are some color schemes picked up.</p>
-<h3 id="indigo"><i class="fas fa-palette"></i> Indigo<a class="headerlink" href="#indigo" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#define AUTOCONNECT_MENUCOLOR_TEXT        &quot;#ffa500&quot;</span>
-<span style="color: #75715e">#define AUTOCONNECT_MENUCOLOR_BACKGROUND  &quot;#1a237e&quot;</span>
-<span style="color: #75715e">#define AUTOCONNECT_MENUCOLOR_ACTIVE      &quot;#283593&quot;</span>
-</pre></div>
-
-<p><img src="images/ACMenu_indigo.png"></p>
-<h3 id="dim-gray"><i class="fas fa-palette"></i> Dim-gray<a class="headerlink" href="#dim-gray" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#define AUTOCONNECT_MENUCOLOR_TEXT        &quot;#fffacd&quot;</span>
-<span style="color: #75715e">#define AUTOCONNECT_MENUCOLOR_BACKGROUND  &quot;#696969&quot;</span>
-<span style="color: #75715e">#define AUTOCONNECT_MENUCOLOR_ACTIVE      &quot;#808080&quot;</span>
-</pre></div>
-
-<p><img src="images/ACMenu_dimgray.png"></p>
-<h3 id="brown"><i class="fas fa-palette"></i> Brown<a class="headerlink" href="#brown" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#define AUTOCONNECT_MENUCOLOR_TEXT        &quot;#e6e6fa&quot;</span>
-<span style="color: #75715e">#define AUTOCONNECT_MENUCOLOR_BACKGROUND  &quot;#3e2723&quot;</span>
-<span style="color: #75715e">#define AUTOCONNECT_MENUCOLOR_ACTIVE      &quot;#4e342e&quot;</span>
-</pre></div>
-
-<p><img src="images/ACMenu_brown.png"></p>
-<div class="footnote">
-<hr />
-<ol>
-<li id="fn:1">
-<p>Usually, it will locate to the Arduino/libraries/AutoConnect/src folder of user documents.&#160;<a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p>
-</li>
-<li id="fn:2">
-<p>The W3C HTML and CSS standards have listed only 16 valid color names: aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, and yellow. Major browsers can accept more color names, but they are not web safe in typically.&#160;<a class="footnote-backref" href="#fnref:2" rev="footnote" title="Jump back to footnote 2 in the text">&#8617;</a></p>
-</li>
-</ol>
-</div></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="acupload.html" title="File upload handler" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>File upload handler</span></div></a><a href="faq.html" title="FAQ" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>FAQ</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/credit.html b/lib/AutoConnect-master/docs/credit.html
deleted file mode 100644
index f518ce59e0bf5c427931a3cb7d19c14393a3644e..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/credit.html
+++ /dev/null
@@ -1,175 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/credit.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>Saved credentail access - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#saved-credential-in-eeprom" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">Saved credentail access</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7"><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--active md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9" checked><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">Saved credentail access</label><a href="credit.html" title="Saved credentail access" class="md-nav__link md-nav__link--active">Saved credentail access</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#saved-credential-in-eeprom" title="Saved credential in EEPROM" class="md-nav__link">Saved credential in EEPROM</a></li><li class="md-nav__item"><a href="#autoconnectcredential" title="AutoConnectCredential" class="md-nav__link">AutoConnectCredential</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#include-header" title=" Include header" class="md-nav__link"> Include header</a></li><li class="md-nav__item"><a href="#constructors" title=" Constructors" class="md-nav__link"> Constructors</a></li><li class="md-nav__item"><a href="#public-member-functions" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#entries" title=" entries" class="md-nav__link"> entries</a></li><li class="md-nav__item"><a href="#load" title=" load" class="md-nav__link"> load</a></li><li class="md-nav__item"><a href="#load_1" title=" load" class="md-nav__link"> load</a></li><li class="md-nav__item"><a href="#save" title=" save" class="md-nav__link"> save</a></li><li class="md-nav__item"><a href="#del" title=" del" class="md-nav__link"> del</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="#the-data-structures" title="The data structures" class="md-nav__link">The data structures</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#station_config" title="  station_config" class="md-nav__link">  station_config</a></li><li class="md-nav__item"><a href="#the-credential-entry" title="  The credential entry" class="md-nav__link">  The credential entry</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#saved-credential-in-eeprom" title="Saved credential in EEPROM" class="md-nav__link">Saved credential in EEPROM</a></li><li class="md-nav__item"><a href="#autoconnectcredential" title="AutoConnectCredential" class="md-nav__link">AutoConnectCredential</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#include-header" title=" Include header" class="md-nav__link"> Include header</a></li><li class="md-nav__item"><a href="#constructors" title=" Constructors" class="md-nav__link"> Constructors</a></li><li class="md-nav__item"><a href="#public-member-functions" title=" Public member functions" class="md-nav__link"> Public member functions</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#entries" title=" entries" class="md-nav__link"> entries</a></li><li class="md-nav__item"><a href="#load" title=" load" class="md-nav__link"> load</a></li><li class="md-nav__item"><a href="#load_1" title=" load" class="md-nav__link"> load</a></li><li class="md-nav__item"><a href="#save" title=" save" class="md-nav__link"> save</a></li><li class="md-nav__item"><a href="#del" title=" del" class="md-nav__link"> del</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="#the-data-structures" title="The data structures" class="md-nav__link">The data structures</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#station_config" title="  station_config" class="md-nav__link">  station_config</a></li><li class="md-nav__item"><a href="#the-credential-entry" title="  The credential entry" class="md-nav__link">  The credential entry</a></li></ul></nav></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>Saved credentail access</h1><h2 id="saved-credential-in-eeprom">Saved credential in EEPROM<a class="headerlink" href="#saved-credential-in-eeprom" title="Permanent link">&para;</a></h2>
-<p>AutoConnect stores the established WiFi connection in the EEPROM of the ESP8266/ESP32 module and equips the class to access it from the sketch. You can read, write or erase the credentials using this class individually. It's <a href="#autoconnectcredential"><strong>AutoConnectCredential</strong></a> class which provides the access method to the saved credentials in EEPROM.<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup></p>
-<h2 id="autoconnectcredential">AutoConnectCredential<a class="headerlink" href="#autoconnectcredential" title="Permanent link">&para;</a></h2>
-<h3 id="include-header"><i class="fa fa-code"></i> Include header<a class="headerlink" href="#include-header" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;AutoConnectCredential.h&gt;</span>
-</pre></div>
-
-<h3 id="constructors"><i class="fa fa-code"></i> Constructors<a class="headerlink" href="#constructors" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectCredential();</span>
-</pre></div>
-
-<p>AutoConnectCredential default constructor. The default offset value is 0. If the offset value is 0, the credential area starts from the top of the EEPROM. AutoConnect sometimes overwrites data when using this area with user sketch.</p>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectCredential(</span><span style="color: #66d9ef">uint16_t</span> <span style="color: #f8f8f2">offset);</span>
-</pre></div>
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">offset</span><span class="apidesc">Species offset from the top of the EEPROM for the credential area together. The offset value is from 0 to the flash sector size.</span></dd>
-</dl></p>
-<h3 id="public-member-functions"><i class="fa fa-code"></i> Public member functions<a class="headerlink" href="#public-member-functions" title="Permanent link">&para;</a></h3>
-<h4 id="entries"><i class="fa fa-caret-right"></i> entries<a class="headerlink" href="#entries" title="Permanent link">&para;</a></h4>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">uint8_t</span> <span style="color: #f8f8f2">entries(</span><span style="color: #66d9ef">void</span><span style="color: #f8f8f2">)</span>
-</pre></div>
-
-<p>Returns number of entries as contained credentials.
-<dl class="apidl">
-    <dt><strong>Return value</strong></dt>
-    <dd>Number of entries as contained credentials.</dd>
-</dl></p>
-<h4 id="load"><i class="fa fa-caret-right"></i> load<a class="headerlink" href="#load" title="Permanent link">&para;</a></h4>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">int8_t</span> <span style="color: #f8f8f2">load(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">ssid,</span> <span style="color: #66d9ef">struct</span> <span style="color: #f8f8f2">station_config</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">config)</span>
-</pre></div>
-
-<p>Load a credential entry and store to <strong>config</strong>.
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">ssid</span><span class="apidesc">SSID to be loaded.</span></dd>
-    <dd><span class="apidef">config</span><span class="apidesc">station_config</span></dd>
-    <dt><strong>Return value</strong></dt>
-    <dd>Save the specified SSID's credential entry to station_config pointed to by the parameter as <strong>config</strong>. -1 is returned if the SSID is not saved. </dd>
-</dl></p>
-<h4 id="load_1"><i class="fa fa-caret-right"></i> load<a class="headerlink" href="#load_1" title="Permanent link">&para;</a></h4>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">load(</span><span style="color: #66d9ef">int8_t</span> <span style="color: #f8f8f2">entry,</span> <span style="color: #66d9ef">struct</span> <span style="color: #f8f8f2">station_config</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">config)</span>
-</pre></div>
-
-<p>Load a credential entry and store to <strong>config</strong>.
-<dl class="apidl">
-    <dt><strong>Parameters</strong></dt>
-    <dd><span class="apidef">entry</span><span class="apidesc">Specifies the index number based 0 to be loaded.</span></dd>
-    <dd><span class="apidef">config</span><span class="apidesc">station_config</span></dd>
-    <dt><strong>Return value</strong></dt>
-    <dd>Save the specified credential entry to station_config pointed to by the parameter as <strong>config</strong>. -1 is returned if specified number is not saved. </dd>
-</dl></p>
-<h4 id="save"><i class="fa fa-caret-right"></i> save<a class="headerlink" href="#save" title="Permanent link">&para;</a></h4>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">save(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">struct</span> <span style="color: #f8f8f2">station_config</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">config)</span>
-</pre></div>
-
-<p>Save a credentail entry.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">config</span><span class="apidesc">station_config to be saved.</span></dd>
-    <dt><strong>Return value</strong></dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Successfully saved.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">Failed to save.</span></dd>
-</dl></p>
-<h4 id="del"><i class="fa fa-caret-right"></i> del<a class="headerlink" href="#del" title="Permanent link">&para;</a></h4>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">bool</span> <span style="color: #f8f8f2">del(</span><span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span><span style="color: #f92672">*</span> <span style="color: #f8f8f2">ssid)</span>
-</pre></div>
-
-<p>Delete a credential the specified SSID.
-<dl class="apidl">
-    <dt><strong>Parameter</strong></dt>
-    <dd><span class="apidef">ssid</span><span class="apidesc">SSID to be deleted.</span></dd>
-    <dt><strong>Return value</strong></dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Successfully deleted.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">Failed to delete.</span></dd>
-</dl></p>
-<h2 id="the-data-structures">The data structures<a class="headerlink" href="#the-data-structures" title="Permanent link">&para;</a></h2>
-<h3 id="station_config"><i class="fa fa-code"></i>  station_config<a class="headerlink" href="#station_config" title="Permanent link">&para;</a></h3>
-<p>A structure is included in the ESP8266 SDK. You can use it in the sketch like as follows:</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">extern</span> <span style="color: #e6db74">&quot;C&quot;</span> <span style="color: #f8f8f2">{</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;user_interface.h&gt;</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">struct</span> <span style="color: #f8f8f2">station_config</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">uint8</span> <span style="color: #f8f8f2">ssid[</span><span style="color: #ae81ff">32</span><span style="color: #f8f8f2">];</span>
-  <span style="color: #f8f8f2">uint8</span> <span style="color: #f8f8f2">password[</span><span style="color: #ae81ff">64</span><span style="color: #f8f8f2">];</span>
-  <span style="color: #f8f8f2">uint8</span> <span style="color: #f8f8f2">bssid_set;</span>
-  <span style="color: #f8f8f2">uint8</span> <span style="color: #f8f8f2">bssid[</span><span style="color: #ae81ff">6</span><span style="color: #f8f8f2">];</span>
-<span style="color: #f8f8f2">};</span>
-</pre></div>
-
-<h3 id="the-credential-entry"><i class="fa fa-code"></i>  The credential entry<a class="headerlink" href="#the-credential-entry" title="Permanent link">&para;</a></h3>
-<p>A data structure of the credential saving area in EEPROM as the below. <sup id="fnref:2"><a class="footnote-ref" href="#fn:2" rel="footnote">2</a></sup></p>
-<table>
-<thead>
-<tr>
-<th>Byte offset</th>
-<th>Length</th>
-<th>Value</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>0</td>
-<td>8</td>
-<td>AC_CREDT</td>
-</tr>
-<tr>
-<td>8</td>
-<td>1</td>
-<td>Number of contained entries (uint8_t)</td>
-</tr>
-<tr>
-<td>9</td>
-<td>2</td>
-<td>Container size, excluding size of AC_CREDT and size of the number of entries(width for uint16_t type).</td>
-</tr>
-<tr>
-<td>11</td>
-<td>variable</td>
-<td>SSID terminated by 0x00. Max length is 32 bytes.</td>
-</tr>
-<tr>
-<td>variable</td>
-<td>variable</td>
-<td>Password plain text terminated by 0x00. Max length is 64 bytes.</td>
-</tr>
-<tr>
-<td>variable</td>
-<td>6</td>
-<td>BSSID</td>
-</tr>
-<tr>
-<td>variable</td>
-<td></td>
-<td>Contained the next entries. (Continuation SSID+Password+BSSID)</td>
-</tr>
-<tr>
-<td>variable</td>
-<td>1</td>
-<td>0x00. End of container.</td>
-</tr>
-</tbody>
-</table>
-<div class="footnote">
-<hr />
-<ol>
-<li id="fn:1">
-<p>An example using AutoConnectCredential is provided as <a href="https://github.com/Hieromon/AutoConnect/blob/master/examples/Credential/Credential.ino">an example</a> of a library sketch to delete saved credentials.&#160;<a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p>
-</li>
-<li id="fn:2">
-<p>There may be 0xff as an invalid data in the credential saving area. The 0xff area would be reused.&#160;<a class="footnote-backref" href="#fnref:2" rev="footnote" title="Jump back to footnote 2 in the text">&#8617;</a></p>
-</li>
-</ol>
-</div></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>Inside AutoConnect::begin</span></div></a><a href="acupload.html" title="File upload handler" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>File upload handler</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/css/extra.css b/lib/AutoConnect-master/docs/css/extra.css
deleted file mode 100644
index 1a9c3d666dbb1afb4daf1f3ac067897c7a26b222..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/css/extra.css
+++ /dev/null
@@ -1,9 +0,0 @@
-pre { color: white !important; }
-
-.md-clipboard:before {
-    color: rgb(100, 100, 100);
-}
-
-.codehilite:hover .md-clipboard:before,.md-typeset .highlight:hover .md-clipboard:before,pre:hover .md-clipboard:before {
-    color: rgba(255, 255, 255, 0.54) !important
-}




diff --git a/lib/AutoConnect-master/docs/css/paragraph.css b/lib/AutoConnect-master/docs/css/paragraph.css
deleted file mode 100644
index 7fe9434bbea53900e8621109b0ef8a657a32d815..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/css/paragraph.css
+++ /dev/null
@@ -1,67 +0,0 @@
-.lead {
-	color: gray;
-	font-size: 15px;
-}
-
-.md-typeset h2 {
-	border-bottom: solid 1px #d3d3d3;
-	padding-bottom: 5px;
-}
-
-.md-typeset pre {
-  font-size: 12px;
-}
-
-.md-typeset .codehilitetable {
-  margin-left:-20px;
-  margin-right: -20px;
-  border-radius: 0;
-}
-
-.md-typeset .codehilitetable .linenodiv {
-  background-color: #222 !important;
-}
-
-.md-typeset .codehilitetable .linenodiv pre {
-  background-color: #222 !important;
-  color: #aaa;
-  margin: 0;
-}
-
-.md-typeset .codehilitetable .md-clipboard:before {
-  color: rgba(240,240,240,.8);
-}
-.md-typeset .codehilitetable .md-clipboard:hover:before {
-  color: rgba(102,217,224,1);
-}
-
-.apidl {
-  margin-left: 20px;
-}
-
-.apidef {
-  display: block;
-  float: left;
-  width: 100px;
-}
-
-.apidesc {
-  display: inline-block;
-  width: calc(100% - 100px);
-}
-
-.ulsty-edit > li:before {
-  font-family: 'FontAwesome';
-  content: '\f044';
-  margin:0 0.8em 0 -1.8em;
-}
-
-.horizontal-list {
-  list-style-type: none;
-  overflow: hidden;
-}
-
-.horizontal-list > li {
-  float: left;
-  display: block;
-}
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/datatips.html b/lib/AutoConnect-master/docs/datatips.html
deleted file mode 100644
index 80b1d4ef183a503addb0b926791eac5816f07fe4..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/datatips.html
+++ /dev/null
@@ -1,179 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/datatips.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>Tips for data conversion - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#convert-autoconnectelements-value-to-actual-data-type" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">Tips for data conversion</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7"><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--active md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8" checked><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">Tips for data conversion</label><a href="datatips.html" title="Tips for data conversion" class="md-nav__link md-nav__link--active">Tips for data conversion</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#convert-autoconnectelements-value-to-actual-data-type" title="Convert AutoConnectElements value to actual data type" class="md-nav__link">Convert AutoConnectElements value to actual data type</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#integer" title=" Integer" class="md-nav__link"> Integer</a></li><li class="md-nav__item"><a href="#float" title=" Float" class="md-nav__link"> Float</a></li><li class="md-nav__item"><a href="#date-time" title=" Date &amp; Time" class="md-nav__link"> Date &amp; Time</a></li><li class="md-nav__item"><a href="#ip-address" title=" IP address" class="md-nav__link"> IP address</a></li></ul></nav></li><li class="md-nav__item"><a href="#validation-for-the-value" title="Validation for the value" class="md-nav__link">Validation for the value</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#url" title=" URL" class="md-nav__link"> URL</a></li><li class="md-nav__item"><a href="#dns-hostname" title=" DNS hostname" class="md-nav__link"> DNS hostname</a></li><li class="md-nav__item"><a href="#email-address-2" title=" email address 2" class="md-nav__link"> email address 2</a></li><li class="md-nav__item"><a href="#ip-address_1" title=" IP Address" class="md-nav__link"> IP Address</a></li><li class="md-nav__item"><a href="#date-as-mmddyyyy-3" title=" Date as MM/DD/YYYY 3" class="md-nav__link"> Date as MM/DD/YYYY 3</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#convert-autoconnectelements-value-to-actual-data-type" title="Convert AutoConnectElements value to actual data type" class="md-nav__link">Convert AutoConnectElements value to actual data type</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#integer" title=" Integer" class="md-nav__link"> Integer</a></li><li class="md-nav__item"><a href="#float" title=" Float" class="md-nav__link"> Float</a></li><li class="md-nav__item"><a href="#date-time" title=" Date &amp; Time" class="md-nav__link"> Date &amp; Time</a></li><li class="md-nav__item"><a href="#ip-address" title=" IP address" class="md-nav__link"> IP address</a></li></ul></nav></li><li class="md-nav__item"><a href="#validation-for-the-value" title="Validation for the value" class="md-nav__link">Validation for the value</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#url" title=" URL" class="md-nav__link"> URL</a></li><li class="md-nav__item"><a href="#dns-hostname" title=" DNS hostname" class="md-nav__link"> DNS hostname</a></li><li class="md-nav__item"><a href="#email-address-2" title=" email address 2" class="md-nav__link"> email address 2</a></li><li class="md-nav__item"><a href="#ip-address_1" title=" IP Address" class="md-nav__link"> IP Address</a></li><li class="md-nav__item"><a href="#date-as-mmddyyyy-3" title=" Date as MM/DD/YYYY 3" class="md-nav__link"> Date as MM/DD/YYYY 3</a></li></ul></nav></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>Tips for data conversion</h1><h2 id="convert-autoconnectelements-value-to-actual-data-type">Convert AutoConnectElements value to actual data type<a class="headerlink" href="#convert-autoconnectelements-value-to-actual-data-type" title="Permanent link">&para;</a></h2>
-<p>The values in the AutoConnectElements field of the custom Web page are all typed as String. A sketch needs to be converted to an actual data type if the data type required for sketch processing is not a String type.</p>
-<p>The AutoConnect library does not provide the data conversion utility, and its function depends on Arduino language functions or functions of the type class. However, commonly used data conversion methods are generally similar.</p>
-<p>Here, represent examples the typical method for the data type conversion for the AutoConnectElements value of custom Web pages.</p>
-<h3 id="integer"><i class="fa fa-exchange"></i> Integer<a class="headerlink" href="#integer" title="Permanent link">&para;</a></h3>
-<p>Use <a href="https://www.arduino.cc/reference/en/language/variables/conversion/intcast/">int()</a> or <a href="https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/toint/">toInt() of String</a>.</p>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectInput</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">input</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">aux.getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectInput</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;INPUT&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #66d9ef">int</span> <span style="color: #f8f8f2">value</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">input.value.toInt();</span>
-</pre></div>
-You can shorten it and write as like:
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">int</span> <span style="color: #f8f8f2">value</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">aux[</span><span style="color: #e6db74">&quot;INPUT&quot;</span><span style="color: #f8f8f2">].value.toInt();</span>
-</pre></div></p>
-<h3 id="float"><i class="fa fa-exchange"></i> Float<a class="headerlink" href="#float" title="Permanent link">&para;</a></h3>
-<p>Use <a href="https://www.arduino.cc/reference/en/language/variables/conversion/floatcast/">float()</a> or <a href="https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/tofloat/">toFloat() of String</a>.</p>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnectInput</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">input</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">aux.getElement</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectInput</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;INPUT&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #66d9ef">float</span> <span style="color: #f8f8f2">value</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">input.value.toFloat();</span>
-</pre></div>
-You can shorten it and write as like:
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #66d9ef">float</span> <span style="color: #f8f8f2">value</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">aux[</span><span style="color: #e6db74">&quot;INPUT&quot;</span><span style="color: #f8f8f2">].value.toFloat();</span>
-</pre></div></p>
-<h3 id="date-time"><i class="fa fa-exchange"></i> Date &amp; Time<a class="headerlink" href="#date-time" title="Permanent link">&para;</a></h3>
-<p>The easiest way is to use the <a href="https://www.pjrc.com/teensy/td_libs_Time.html">Arduino Time Library</a>. Sketches must accommodate differences in date and time formats depending on the time zone. You can absorb the difference in DateTime format by using <code>sscanf</code> function.<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup></p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;TimeLib.h&gt;</span>
-
-<span style="color: #66d9ef">time_t</span> <span style="color: #f8f8f2">tm;</span>
-<span style="color: #66d9ef">int</span> <span style="color: #f8f8f2">Year,</span> <span style="color: #f8f8f2">Month,</span> <span style="color: #f8f8f2">Day,</span> <span style="color: #f8f8f2">Hour,</span> <span style="color: #f8f8f2">Minute,</span> <span style="color: #f8f8f2">Second;</span>
-
-<span style="color: #f8f8f2">AutoConnectInput</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">input</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">aux.[</span><span style="color: #e6db74">&quot;INPUT&quot;</span><span style="color: #f8f8f2">].as</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectInput</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">();</span>
-<span style="color: #f8f8f2">sscanf(input.value.c_str(),</span> <span style="color: #e6db74">&quot;%d-%d-%d %d:%d:%d&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f92672">&amp;</span><span style="color: #f8f8f2">Year,</span> <span style="color: #f92672">&amp;</span><span style="color: #f8f8f2">Month,</span> <span style="color: #f92672">&amp;</span><span style="color: #f8f8f2">Day,</span> <span style="color: #f92672">&amp;</span><span style="color: #f8f8f2">Hour,</span> <span style="color: #f92672">&amp;</span><span style="color: #f8f8f2">Minute,</span> <span style="color: #f92672">&amp;</span><span style="color: #f8f8f2">Second);</span>
-<span style="color: #f8f8f2">tm.Year</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">CalendarYrToTm(Year);</span>
-<span style="color: #f8f8f2">tm.Month</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">Month;</span>
-<span style="color: #f8f8f2">tm.Day</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">Day;</span>
-<span style="color: #f8f8f2">tm.Hour</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">Hour;</span>
-<span style="color: #f8f8f2">tm.Minute</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">Minute;</span>
-<span style="color: #f8f8f2">tm.Second</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">Second;</span>
-</pre></div>
-
-<h3 id="ip-address"><i class="fa fa-exchange"></i> IP address<a class="headerlink" href="#ip-address" title="Permanent link">&para;</a></h3>
-<p>To convert a String to an IP address, use <strong>IPAddress::fromString</strong>. To stringize an instance of an IP address, use <strong>IPAddress::toString</strong>.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">IPAddress</span> <span style="color: #f8f8f2">ip;</span>
-<span style="color: #f8f8f2">AutoConnectInput</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">input</span> <span style="color: #f8f8f2">aux[</span><span style="color: #e6db74">&quot;INPUT&quot;</span><span style="color: #f8f8f2">].as</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectInput</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">();</span>
-<span style="color: #f8f8f2">ip.fromString(input.value);</span>
-<span style="color: #f8f8f2">input.value</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">ip.toString();</span>
-</pre></div>
-
-<h2 id="validation-for-the-value">Validation for the value<a class="headerlink" href="#validation-for-the-value" title="Permanent link">&para;</a></h2>
-<p>To convert input data correctly from the string, it must match its format. The validation implementation with sketches depends on various perspectives. Usually, the tiny devices have no enough power for the lexical analysis completely. But you can reduce the burden for data verification using the <a href="achandling.html#check-data-against-on-submission"><strong>pattern</strong></a> of AutoConnectInput.</p>
-<p>By giving a <a href="acelements.html#pattern">pattern</a> to <a href="apielements.html#pattern">AutoConnectInput</a>, you can find errors in data format while typing in custom Web pages. Specifying the input data rule as a <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions">regular expression</a> will validate the type match during input. If there is an error in the format during input, the background color of the field will change to pink. Refer to section <a href="achandling.html#check-data-against-on-submission"><em>Handling the custom Web pages</em></a>.</p>
-<p>However, input data will be transmitted even if the value does not match the pattern. Sketches require the validation of the received data. You can use the <a href="apielements.html#isvalid">AutoConnectInput::isValid</a> function to validate it. The isValid function validates whether the value member variable matches a pattern and returns true or false.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WiFi.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WebServer.h&gt;</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;AutoConnect.h&gt;</span>
-
-<span style="color: #66d9ef">static</span> <span style="color: #66d9ef">const</span> <span style="color: #66d9ef">char</span> <span style="color: #f8f8f2">input_page[]</span> <span style="color: #f8f8f2">PROGMEM</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">R&quot;raw(</span>
-<span style="color: #e6db74">[</span>
-<span style="color: #e6db74">  {</span>
-<span style="color: #e6db74">    &quot;title&quot;: &quot;IP Address&quot;,</span>
-<span style="color: #e6db74">    &quot;uri&quot;: &quot;/&quot;,</span>
-<span style="color: #e6db74">    &quot;menu&quot;: true,</span>
-<span style="color: #e6db74">    &quot;element&quot;: [</span>
-<span style="color: #e6db74">      {</span>
-<span style="color: #e6db74">        &quot;name&quot;: &quot;ipaddress&quot;,</span>
-<span style="color: #e6db74">        &quot;type&quot;: &quot;ACInput&quot;,</span>
-<span style="color: #e6db74">        &quot;label&quot;: &quot;IP Address&quot;,</span>
-<span style="background-color: #49483e"><span style="color: #e6db74">        &quot;pattern&quot;: &quot;^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$&quot;</span>
-</span><span style="color: #e6db74">      },</span>
-<span style="color: #e6db74">      {</span>
-<span style="color: #e6db74">        &quot;name&quot;: &quot;send&quot;,</span>
-<span style="color: #e6db74">        &quot;type&quot;: &quot;ACSubmit&quot;,</span>
-<span style="color: #e6db74">        &quot;value&quot;: &quot;SEND&quot;,</span>
-<span style="color: #e6db74">        &quot;uri&quot;: &quot;/check&quot;</span>
-<span style="color: #e6db74">      }</span>
-<span style="color: #e6db74">    ]</span>
-<span style="color: #e6db74">  },</span>
-<span style="color: #e6db74">  {</span>
-<span style="color: #e6db74">    &quot;title&quot;: &quot;IP Address&quot;,</span>
-<span style="color: #e6db74">    &quot;uri&quot;: &quot;/check&quot;,</span>
-<span style="color: #e6db74">    &quot;menu&quot;: false,</span>
-<span style="color: #e6db74">    &quot;element&quot;: [</span>
-<span style="color: #e6db74">      {</span>
-<span style="color: #e6db74">        &quot;name&quot;: &quot;result&quot;,</span>
-<span style="color: #e6db74">        &quot;type&quot;: &quot;ACText&quot;</span>
-<span style="color: #e6db74">      }</span>
-<span style="color: #e6db74">    ]</span>
-<span style="color: #e6db74">  }</span>
-<span style="color: #e6db74">]</span>
-<span style="color: #e6db74">)raw&quot;</span><span style="color: #f8f8f2">;</span>
-
-<span style="color: #f8f8f2">AutoConnect</span> <span style="color: #f8f8f2">portal;</span>
-
-<span style="color: #f8f8f2">String</span> <span style="color: #a6e22e">checkIPAddress</span><span style="color: #f8f8f2">(AutoConnectAux</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">aux,</span> <span style="color: #f8f8f2">PageArgument</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">args)</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">AutoConnectAux</span><span style="color: #f92672">&amp;</span>   <span style="color: #f8f8f2">input_page</span> <span style="color: #f92672">=</span> <span style="color: #f92672">*</span><span style="color: #f8f8f2">portal.aux(</span><span style="color: #e6db74">&quot;/&quot;</span><span style="color: #f8f8f2">);</span>
-  <span style="color: #f8f8f2">AutoConnectInput</span><span style="color: #f92672">&amp;</span> <span style="color: #f8f8f2">ipaddress</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">input_page[</span><span style="color: #e6db74">&quot;ipaddress&quot;</span><span style="color: #f8f8f2">].as</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectInput</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">();</span>
-  <span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&amp;</span>  <span style="color: #f8f8f2">result</span> <span style="color: #f92672">=</span> <span style="color: #f8f8f2">aux[</span><span style="color: #e6db74">&quot;result&quot;</span><span style="color: #f8f8f2">].as</span><span style="color: #f92672">&lt;</span><span style="color: #f8f8f2">AutoConnectText</span><span style="color: #f92672">&gt;</span><span style="color: #f8f8f2">();</span>
-
-<span style="background-color: #49483e">  <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(ipaddress.isValid())</span> <span style="color: #f8f8f2">{</span>
-</span>    <span style="color: #f8f8f2">result.value</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;IP Address &quot;</span> <span style="color: #f92672">+</span> <span style="color: #f8f8f2">ipaddress.value</span> <span style="color: #f92672">+</span> <span style="color: #e6db74">&quot; is OK.&quot;</span><span style="color: #f8f8f2">;</span>
-    <span style="color: #f8f8f2">result.style</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">;</span>
-  <span style="color: #f8f8f2">}</span>
-  <span style="color: #66d9ef">else</span> <span style="color: #f8f8f2">{</span>
-    <span style="color: #f8f8f2">result.value</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;IP Address &quot;</span> <span style="color: #f92672">+</span> <span style="color: #f8f8f2">ipaddress.value</span> <span style="color: #f92672">+</span> <span style="color: #e6db74">&quot; error.&quot;</span><span style="color: #f8f8f2">;</span>
-    <span style="color: #f8f8f2">result.style</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;color:red;&quot;</span><span style="color: #f8f8f2">;</span>
-  <span style="color: #f8f8f2">}</span>
-  <span style="color: #66d9ef">return</span> <span style="color: #f8f8f2">String(</span><span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">portal.load(input_page);</span>
-  <span style="color: #f8f8f2">portal.on(</span><span style="color: #e6db74">&quot;/check&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">checkIPAddress);</span>
-  <span style="color: #f8f8f2">portal.begin();</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">portal.handleClient();</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<div class="admonition caution">
-<p class="admonition-title">Regular Expressions for JavaScript</p>
-<p>Regular expressions specified in the AutoConnectInput pattern conforms to the <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions">JavaScript specification</a>.</p>
-</div>
-<p>Here, represent examples the typical regular expression for the input validation.</p>
-<h3 id="url"><img src="images/regexp.png" align="top"> URL<a class="headerlink" href="#url" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span>^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
-</pre></div>
-
-<h3 id="dns-hostname"><img src="images/regexp.png" align="top"> DNS hostname<a class="headerlink" href="#dns-hostname" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span>^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$
-</pre></div>
-
-<h3 id="email-address-2"><img src="images/regexp.png" align="top"> email address <sup id="fnref:2"><a class="footnote-ref" href="#fn:2" rel="footnote">2</a></sup><a class="headerlink" href="#email-address-2" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span>^[a-zA-Z0-9.!#$%&amp;&#39;*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$
-</pre></div>
-
-<h3 id="ip-address_1"><img src="images/regexp.png" align="top"> IP Address<a class="headerlink" href="#ip-address_1" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span>^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
-</pre></div>
-
-<h3 id="date-as-mmddyyyy-3"><img src="images/regexp.png" align="top"> Date as MM/DD/YYYY <sup id="fnref:3"><a class="footnote-ref" href="#fn:3" rel="footnote">3</a></sup><a class="headerlink" href="#date-as-mmddyyyy-3" title="Permanent link">&para;</a></h3>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span>^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](19|20)\d\d$
-</pre></div>
-
-<div class="admonition caution">
-<p class="admonition-title">Contain with backquote</p>
-<p>If that regular expression contains a backquote it must be escaped by backquote duplication.</p>
-</div>
-<div class="footnote">
-<hr />
-<ol>
-<li id="fn:1">
-<p>The ssanf library function cannot be used with the old Arduino core.&#160;<a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p>
-</li>
-<li id="fn:2">
-<p>This regular expression does not fully support the format of the e-mail address requested in <a href="https://tools.ietf.org/html/rfc5322">RFC5322</a>.&#160;<a class="footnote-backref" href="#fnref:2" rev="footnote" title="Jump back to footnote 2 in the text">&#8617;</a></p>
-</li>
-<li id="fn:3">
-<p>This regular expression does not consider semantic constraints. It is not possible to detect errors that do not exist as actual dates.&#160;<a class="footnote-backref" href="#fnref:3" rev="footnote" title="Jump back to footnote 3 in the text">&#8617;</a></p>
-</li>
-</ol>
-</div></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="howtoembed.html" title="How to embed" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>How to embed</span></div></a><a href="menuize.html" title="Attach the menu" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>Attach the menu</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/faq.html b/lib/AutoConnect-master/docs/faq.html
deleted file mode 100644
index 7ac0ad602a05210a703e6adf121f21c0e1b2969d..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/faq.html
+++ /dev/null
@@ -1,188 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/faq.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>FAQ - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#after-connected-autoconnect-menu-performs-but-no-happens" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">FAQ</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7"><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">FAQ</label><a href="faq.html" title="FAQ" class="md-nav__link md-nav__link--active">FAQ</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#after-connected-autoconnect-menu-performs-but-no-happens" title=" After connected, AutoConnect menu performs but no happens." class="md-nav__link"> After connected, AutoConnect menu performs but no happens.</a></li><li class="md-nav__item"><a href="#an-esp8266ap-as-softap-was-connected-but-captive-portal-does-not-start" title=" An esp8266ap as SoftAP was connected but Captive portal does not start." class="md-nav__link"> An esp8266ap as SoftAP was connected but Captive portal does not start.</a></li><li class="md-nav__item"><a href="#connection-lost-immediately-after-establishment-with-ap" title=" Connection lost immediately after establishment with AP" class="md-nav__link"> Connection lost immediately after establishment with AP</a></li><li class="md-nav__item"><a href="#does-not-appear-esp8266ap-in-smartphone" title=" Does not appear esp8266ap in smartphone." class="md-nav__link"> Does not appear esp8266ap in smartphone.</a></li><li class="md-nav__item"><a href="#does-not-response-from-95ac" title=" Does not response from /_ac." class="md-nav__link"> Does not response from /_ac.</a></li><li class="md-nav__item"><a href="#how-change-esp8266ap-for-ssid-name-in-captive-portal" title=" How change esp8266ap for SSID name in Captive portal?" class="md-nav__link"> How change esp8266ap for SSID name in Captive portal?</a></li><li class="md-nav__item"><a href="#how-change-http-port" title=" How change HTTP port?" class="md-nav__link"> How change HTTP port?</a></li><li class="md-nav__item"><a href="#hang-up-after-reset" title=" Hang up after Reset?" class="md-nav__link"> Hang up after Reset?</a></li><li class="md-nav__item"><a href="#how-erase-the-credentials-saved-in-eeprom" title=" How erase the credentials saved in EEPROM?" class="md-nav__link"> How erase the credentials saved in EEPROM?</a></li><li class="md-nav__item"><a href="#how-locate-the-link-button-to-the-autoconnect-menu" title=" How locate the link button to the  AutoConnect menu?" class="md-nav__link"> How locate the link button to the  AutoConnect menu?</a></li><li class="md-nav__item"><a href="#how-much-memory-does-autoconnect-consume" title=" How much memory does AutoConnect consume?" class="md-nav__link"> How much memory does AutoConnect consume?</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#sketch-size" title="Sketch size" class="md-nav__link">Sketch size</a></li><li class="md-nav__item"><a href="#heap-size" title="Heap size" class="md-nav__link">Heap size</a></li></ul></nav></li><li class="md-nav__item"><a href="#i-cannot-complete-to-wi-fi-login-from-smartphone" title=" I cannot complete to Wi-Fi login from smartphone." class="md-nav__link"> I cannot complete to Wi-Fi login from smartphone.</a></li><li class="md-nav__item"><a href="#i-cannot-see-the-custom-web-page" title=" I cannot see the custom Web page." class="md-nav__link"> I cannot see the custom Web page.</a></li><li class="md-nav__item"><a href="#submit-element-in-a-custom-web-page-does-not-react" title=" Submit element in a custom Web page does not react." class="md-nav__link"> Submit element in a custom Web page does not react.</a></li><li class="md-nav__item"><a href="#still-not-stable-with-my-sketch" title=" Still, not stable with my sketch." class="md-nav__link"> Still, not stable with my sketch.</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#1-change-wifi-channel" title="1. Change WiFi channel" class="md-nav__link">1. Change WiFi channel</a></li><li class="md-nav__item"><a href="#2-change-the-arduino-core-version" title="2. Change the arduino core version" class="md-nav__link">2. Change the arduino core version</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#with-esp8266-arduino-core" title="with ESP8266 arduino core" class="md-nav__link">with ESP8266 arduino core</a></li><li class="md-nav__item"><a href="#with-esp32-arduino-core" title="with ESP32 arduino core" class="md-nav__link">with ESP32 arduino core</a></li></ul></nav></li><li class="md-nav__item"><a href="#3-turn-on-the-debug-log-options" title="3. Turn on the debug log options" class="md-nav__link">3. Turn on the debug log options</a></li><li class="md-nav__item"><a href="#4-reports-the-issue-to-autoconnect-github-repository" title="4. Reports the issue to AutoConnect Github repository" class="md-nav__link">4. Reports the issue to AutoConnect Github repository</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#after-connected-autoconnect-menu-performs-but-no-happens" title=" After connected, AutoConnect menu performs but no happens." class="md-nav__link"> After connected, AutoConnect menu performs but no happens.</a></li><li class="md-nav__item"><a href="#an-esp8266ap-as-softap-was-connected-but-captive-portal-does-not-start" title=" An esp8266ap as SoftAP was connected but Captive portal does not start." class="md-nav__link"> An esp8266ap as SoftAP was connected but Captive portal does not start.</a></li><li class="md-nav__item"><a href="#connection-lost-immediately-after-establishment-with-ap" title=" Connection lost immediately after establishment with AP" class="md-nav__link"> Connection lost immediately after establishment with AP</a></li><li class="md-nav__item"><a href="#does-not-appear-esp8266ap-in-smartphone" title=" Does not appear esp8266ap in smartphone." class="md-nav__link"> Does not appear esp8266ap in smartphone.</a></li><li class="md-nav__item"><a href="#does-not-response-from-95ac" title=" Does not response from /_ac." class="md-nav__link"> Does not response from /_ac.</a></li><li class="md-nav__item"><a href="#how-change-esp8266ap-for-ssid-name-in-captive-portal" title=" How change esp8266ap for SSID name in Captive portal?" class="md-nav__link"> How change esp8266ap for SSID name in Captive portal?</a></li><li class="md-nav__item"><a href="#how-change-http-port" title=" How change HTTP port?" class="md-nav__link"> How change HTTP port?</a></li><li class="md-nav__item"><a href="#hang-up-after-reset" title=" Hang up after Reset?" class="md-nav__link"> Hang up after Reset?</a></li><li class="md-nav__item"><a href="#how-erase-the-credentials-saved-in-eeprom" title=" How erase the credentials saved in EEPROM?" class="md-nav__link"> How erase the credentials saved in EEPROM?</a></li><li class="md-nav__item"><a href="#how-locate-the-link-button-to-the-autoconnect-menu" title=" How locate the link button to the  AutoConnect menu?" class="md-nav__link"> How locate the link button to the  AutoConnect menu?</a></li><li class="md-nav__item"><a href="#how-much-memory-does-autoconnect-consume" title=" How much memory does AutoConnect consume?" class="md-nav__link"> How much memory does AutoConnect consume?</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#sketch-size" title="Sketch size" class="md-nav__link">Sketch size</a></li><li class="md-nav__item"><a href="#heap-size" title="Heap size" class="md-nav__link">Heap size</a></li></ul></nav></li><li class="md-nav__item"><a href="#i-cannot-complete-to-wi-fi-login-from-smartphone" title=" I cannot complete to Wi-Fi login from smartphone." class="md-nav__link"> I cannot complete to Wi-Fi login from smartphone.</a></li><li class="md-nav__item"><a href="#i-cannot-see-the-custom-web-page" title=" I cannot see the custom Web page." class="md-nav__link"> I cannot see the custom Web page.</a></li><li class="md-nav__item"><a href="#submit-element-in-a-custom-web-page-does-not-react" title=" Submit element in a custom Web page does not react." class="md-nav__link"> Submit element in a custom Web page does not react.</a></li><li class="md-nav__item"><a href="#still-not-stable-with-my-sketch" title=" Still, not stable with my sketch." class="md-nav__link"> Still, not stable with my sketch.</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#1-change-wifi-channel" title="1. Change WiFi channel" class="md-nav__link">1. Change WiFi channel</a></li><li class="md-nav__item"><a href="#2-change-the-arduino-core-version" title="2. Change the arduino core version" class="md-nav__link">2. Change the arduino core version</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#with-esp8266-arduino-core" title="with ESP8266 arduino core" class="md-nav__link">with ESP8266 arduino core</a></li><li class="md-nav__item"><a href="#with-esp32-arduino-core" title="with ESP32 arduino core" class="md-nav__link">with ESP32 arduino core</a></li></ul></nav></li><li class="md-nav__item"><a href="#3-turn-on-the-debug-log-options" title="3. Turn on the debug log options" class="md-nav__link">3. Turn on the debug log options</a></li><li class="md-nav__item"><a href="#4-reports-the-issue-to-autoconnect-github-repository" title="4. Reports the issue to AutoConnect Github repository" class="md-nav__link">4. Reports the issue to AutoConnect Github repository</a></li></ul></nav></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>FAQ</h1><h2 id="after-connected-autoconnect-menu-performs-but-no-happens"><i class="fa fa-question-circle"></i> After connected, AutoConnect menu performs but no happens.<a class="headerlink" href="#after-connected-autoconnect-menu-performs-but-no-happens" title="Permanent link">&para;</a></h2>
-<p>If you can access the <strong>AutoConnect root path</strong> as http://ESP8266IPADDRESS/_ac from browser, probably the sketch uses <em>ESP8266WebServer::handleClient()</em> without <a href="api.html#handlerequest"><em>AutoConnect::handleRequest()</em></a>.<br />
-For AutoConnect menus to work properly, call <a href="api.html#handlerequest"><em>AutoConnect::handleRequest()</em></a> after <em>ESP8266WebServer::handleClient()</em> invoked, or use <a href="api.html#handleclient"><em>AutoConnect::handleClient()</em></a>. <a href="api.html#handleclient"><em>AutoConnect::handleClient()</em></a> is equivalent <em>ESP8266WebServer::handleClient</em> combined <a href="api.html#handlerequest"><em>AutoConnect::handleRequest()</em></a>.</p>
-<p>See also the explanation <a href="basicusage.html#esp8266webserver-hosted-or-parasitic">here</a>.</p>
-<h2 id="an-esp8266ap-as-softap-was-connected-but-captive-portal-does-not-start"><i class="fa fa-question-circle"></i> An esp8266ap as SoftAP was connected but Captive portal does not start.<a class="headerlink" href="#an-esp8266ap-as-softap-was-connected-but-captive-portal-does-not-start" title="Permanent link">&para;</a></h2>
-<p>Captive portal detection could not be trapped. It is necessary to disconnect and reset ESP8266 to clear memorized connection data in ESP8266. Also, It may be displayed on the smartphone if the connection information of esp8266ap is wrong. In that case, delete the connection information of esp8266ap memorized by the smartphone once.</p>
-<h2 id="connection-lost-immediately-after-establishment-with-ap"><i class="fa fa-question-circle"></i> Connection lost immediately after establishment with AP<a class="headerlink" href="#connection-lost-immediately-after-establishment-with-ap" title="Permanent link">&para;</a></h2>
-<p>A captive portal is disconnected immediately after the connection establishes with the new AP. This is a known problem of ESP32, and it may occur when the following conditions are satisfied at the same time.</p>
-<ul>
-<li>SoftAP channel on ESP32 and the connecting AP channel you specified are different. (The default channel of SoftAP is 1.)</li>
-<li>NVS had erased by erase_flash causes the connection data lost. The NVS partition has been moved. Never connected to the AP in the past.</li>
-<li>There are receivable multiple WiFi signals which are the same SSID with different channels using the WiFi repeater etc. (This condition is loose, it may occur even if there is no WiFi repeater.)</li>
-<li>Or the using channel of the AP which established a connection is congested with the radio signal on the same band. (If the channel crowd, connections to known APs may also fail.)</li>
-</ul>
-<div class="admonition info">
-<p class="admonition-title">Other possibilities</p>
-<p>The above conditions are not absolute. It results from my investigation, and other conditions may exist.</p>
-</div>
-<p>To avoid this problem, try <a href="#1-change-wifi-channel">changing the channel</a>.</p>
-<p>ESP32 hardware equips only one RF circuitry for WiFi signal. At the AP_STA mode, ESP32 as an AP attempts connect to another AP on another channel while keeping the connection with the station then the channel switching will occur causes the station may be disconnected. But it may not be just a matter of channel switching causes ESP8266 has the same constraints too. It may be a problem with AutoConnect or the arduino core or SDK issue. This problem will persist until a specific solution.</p>
-<h2 id="does-not-appear-esp8266ap-in-smartphone"><i class="fa fa-question-circle"></i> Does not appear esp8266ap in smartphone.<a class="headerlink" href="#does-not-appear-esp8266ap-in-smartphone" title="Permanent link">&para;</a></h2>
-<p>Maybe it is successfully connected at the <a href="lsbegin.html#autoconnectbegin-logic-sequence"><strong>first WiFi.begin</strong></a>. ESP8266 remembers the last SSID successfully connected and will use at the next. It means SoftAP will only start up when the first <em>WiFi.begin()</em> fails.</p>
-<p>The saved SSID would be cleared by  <em>WiFi.disconnect()</em> with WIFI_STA mode. If you do not want automatic reconnection, you can erase the memorized SSID with the following simple sketch.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WiFi.h&gt;</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">delay(</span><span style="color: #ae81ff">1000</span><span style="color: #f8f8f2">);</span>
-  <span style="color: #f8f8f2">Serial.begin(</span><span style="color: #ae81ff">115200</span><span style="color: #f8f8f2">);</span>
-  <span style="color: #f8f8f2">WiFi.mode(WIFI_STA);</span>
-  <span style="color: #f8f8f2">delay(</span><span style="color: #ae81ff">100</span><span style="color: #f8f8f2">);</span>
-  <span style="color: #f8f8f2">WiFi.begin();</span>
-  <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(WiFi.waitForConnectResult()</span> <span style="color: #f92672">==</span> <span style="color: #f8f8f2">WL_CONNECTED)</span> <span style="color: #f8f8f2">{</span>
-    <span style="color: #f8f8f2">WiFi.disconnect();</span>
-    <span style="color: #66d9ef">while</span> <span style="color: #f8f8f2">(WiFi.status()</span> <span style="color: #f92672">==</span> <span style="color: #f8f8f2">WL_CONNECTED)</span>
-      <span style="color: #f8f8f2">delay(</span><span style="color: #ae81ff">100</span><span style="color: #f8f8f2">);</span>
-  <span style="color: #f8f8f2">}</span>
-  <span style="color: #f8f8f2">Serial.println(</span><span style="color: #e6db74">&quot;WiFi disconnected.&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">delay(</span><span style="color: #ae81ff">1000</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<details class="hint"><summary>You can interactively check the WiFi state of ESP8266.</summary><p>Please try <a href="https://github.com/Hieromon/ESPShaker"><strong>ESPShaker</strong></a>. It is ESP8266 interactive serial command processor.</p>
-<p><img src="images/espshaker.gif" /></p>
-</details>
-<h2 id="does-not-response-from-95ac"><i class="fa fa-question-circle"></i> Does not response from /_ac.<a class="headerlink" href="#does-not-response-from-95ac" title="Permanent link">&para;</a></h2>
-<p>Probably <strong>WiFi.begin</strong> failed with the specified SSID. Activating the <a href="advancedusage.html#debug-print">debug printing</a> will help you to track down the cause.</p>
-<h2 id="how-change-esp8266ap-for-ssid-name-in-captive-portal"><i class="fa fa-question-circle"></i> How change esp8266ap for SSID name in Captive portal?<a class="headerlink" href="#how-change-esp8266ap-for-ssid-name-in-captive-portal" title="Permanent link">&para;</a></h2>
-<p>You can change both by using <a href="apiconfig.html#apid">AutoConnectConfig::apid</a> and <a href="apiconfig.html#psk">AutoConnectConfig::psk</a>. Refer to section <a href="advancedusage.html#change-ssid-and-password-for-softap">Change SSID and Password for SoftAP</a> in <a href="advancedusage.html">Advanced usage</a>.</p>
-<h2 id="how-change-http-port"><i class="fa fa-question-circle"></i> How change HTTP port?<a class="headerlink" href="#how-change-http-port" title="Permanent link">&para;</a></h2>
-<p>HTTP port number is defined as a macro in <a href="https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h#L112">AutoConnectDefs.h</a> header file. You can change it directly with several editors and must re-compile.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#define AUTOCONNECT_HTTPPORT    80</span>
-</pre></div>
-
-<h2 id="hang-up-after-reset"><i class="fa fa-question-circle"></i> Hang up after Reset?<a class="headerlink" href="#hang-up-after-reset" title="Permanent link">&para;</a></h2>
-<p>If ESP8266 hang up after reset by AutoConnect menu, perhaps manual reset is not yet. Especially if it is not manual reset yet after uploading the sketch, the boot mode will stay 'Uart Download'. There is some discussion about this on the Github's ESP8266 core: <a href="https://github.com/esp8266/Arduino/issues/1017">https://github.com/esp8266/Arduino/issues/1017</a></p>
-<p>If you received the following message, the boot mode is still sketch uploaded. It needs to the manual reset once.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span>ets Jan  8 2013,rst cause:2, boot mode:(1,6) or (1,7)
-ets Jan  8 2013,rst cause:4, boot mode:(1,6) or (1,7)
-wdt reset
-</pre></div>
-
-<p>The correct boot mode for starting the sketch is <strong>(3, x)</strong>.</p>
-<div class="admonition info">
-<p class="admonition-title">ESP8266 Boot Messages</p>
-<p>It is described by <a href="view-source:https://www.espressif.com/en/products/hardware/esp8266ex/resources">ESP8266 Non-OS SDK API Reference</a>, section A.5.</p>
-<table>
-<thead>
-<tr>
-<th>Messages</th>
-<th>Description</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>rst cause</td>
-<td>1: power on<br>2: external reset<br>4: hardware watchdog reset</td>
-</tr>
-<tr>
-<td>boot mode<br>(the first parameter)</td>
-<td>1: ESP8266 is in UART-down mode (and downloads firmware into flash).<br>3: ESP8266 is in Flash-boot mode (and boots up from flash).</td>
-</tr>
-</tbody>
-</table>
-</div>
-<h2 id="how-erase-the-credentials-saved-in-eeprom"><i class="fa fa-question-circle"></i> How erase the credentials saved in EEPROM?<a class="headerlink" href="#how-erase-the-credentials-saved-in-eeprom" title="Permanent link">&para;</a></h2>
-<p>Make some sketches for erasing the EEPROM area, or some erasing utility is needed. You can prepare the sketch to erase the saved credential with <em>AutoConnectCredential</em>. The <em>AutoConnectCrendential</em> class provides the access method to the saved credential in EEPROM and library source file is including it. Refer to '<a href="credit.html#saved-credential-in-eeprom">Saved credential access</a>' on section <a href="credit.html">Appendix</a> for details.</p>
-<div class="admonition hint">
-<p class="admonition-title">Hint</p>
-<p>With the <a href="https://github.com/Hieromon/ESPShaker"><strong>ESPShaker</strong></a>, you can access EEPROM interactively from the serial monitor, and of course you can erase saved credentials.</p>
-</div>
-<h2 id="how-locate-the-link-button-to-the-autoconnect-menu"><i class="fa fa-question-circle"></i> How locate the link button to the  AutoConnect menu?<a class="headerlink" href="#how-locate-the-link-button-to-the-autoconnect-menu" title="Permanent link">&para;</a></h2>
-<p>Link button to AutoConnect menu can be embedded into Sketch's web page. The root path of the menu is <strong>/_ac</strong> by default and embed the following <code>&lt;a&gt;&lt;/a&gt;</code> tag in the generating HTML.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">a</span> <span style="color: #a6e22e">style</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;background-color:SteelBlue; display:inline-block; padding:7px 13px; text-decoration:none;&quot;</span> <span style="color: #a6e22e">href</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;/_ac&quot;</span><span style="color: #f8f8f2">&gt;</span>MENU<span style="color: #f8f8f2">&lt;/</span><span style="color: #f92672">a</span><span style="color: #f8f8f2">&gt;</span>
-</pre></div>
-
-<h2 id="how-much-memory-does-autoconnect-consume"><i class="fa fa-question-circle"></i> How much memory does AutoConnect consume?<a class="headerlink" href="#how-much-memory-does-autoconnect-consume" title="Permanent link">&para;</a></h2>
-<h3 id="sketch-size">Sketch size<a class="headerlink" href="#sketch-size" title="Permanent link">&para;</a></h3>
-<p>It increases about 53K bytes compared to the case without AutoConnect. A sketch size of the most simple example introduced in the Getting started is about 330K bytes. (270K byte without AutoConnect)</p>
-<h3 id="heap-size">Heap size<a class="headerlink" href="#heap-size" title="Permanent link">&para;</a></h3>
-<p>It consumes about 2K bytes in the static and about 12K bytes are consumed at the moment when menu executed.</p>
-<h2 id="i-cannot-complete-to-wi-fi-login-from-smartphone"><i class="fa fa-question-circle"></i> I cannot complete to Wi-Fi login from smartphone.<a class="headerlink" href="#i-cannot-complete-to-wi-fi-login-from-smartphone" title="Permanent link">&para;</a></h2>
-<p>Because AutoConnect does not send a login success response to the captive portal requests from the smartphone. The login success response varies iOS, Android and Windows. By analyzing the request URL of different login success inquiries for each OS, the correct behavior can be implemented, but not yet. Please resets ESP8266 from the AutoConnect menu.</p>
-<h2 id="i-cannot-see-the-custom-web-page"><i class="fa fa-question-circle"></i> I cannot see the custom Web page.<a class="headerlink" href="#i-cannot-see-the-custom-web-page" title="Permanent link">&para;</a></h2>
-<p>If the sketch is correct, a JSON syntax error may have occurred. In this case, activate the <a href="faq.html#3-turn-on-the-debug-log-options">AC_DEBUG</a> and rerun. If you take the message of JSON syntax error, the <a href="https://arduinojson.org/v5/assistant/">Json Assistant</a> helps syntax checking. This online tool is provided by the author of ArduinoJson and is most consistent for the AutoConnect. </p>
-<h2 id="submit-element-in-a-custom-web-page-does-not-react"><i class="fa fa-question-circle"></i> Submit element in a custom Web page does not react.<a class="headerlink" href="#submit-element-in-a-custom-web-page-does-not-react" title="Permanent link">&para;</a></h2>
-<p>Is there the AutoConnectElements element named <strong>SUBMIT</strong> in the custom Web page? (case sensitive ignored) AutoConnect does not rely on the <code>input type=submit</code> element for the form submission and uses <a href="https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit">HTML form element submit</a> function instead. So, the submit function will fail if there is an element named 'submit' in the form. You can not use <strong>SUBMIT</strong> as the element name of AutoConnectElements in a custom Web page that declares the AutoConnectSubmit element.</p>
-<h2 id="still-not-stable-with-my-sketch"><i class="fa fa-question-circle"></i> Still, not stable with my sketch.<a class="headerlink" href="#still-not-stable-with-my-sketch" title="Permanent link">&para;</a></h2>
-<p>If AutoConnect behavior is not stable with your sketch, you can try the following measures.</p>
-<h3 id="1-change-wifi-channel">1. Change WiFi channel<a class="headerlink" href="#1-change-wifi-channel" title="Permanent link">&para;</a></h3>
-<p>Both ESP8266 and ESP32 can only work on one channel at any given moment. This will cause your station to lose connectivity on the channel hosting the captive portal. If the channel of the AP which you want to connect is different from the SoftAP channel, the operation of the captive portal will not respond with the screen of the AutoConnect connection attempt remains displayed. In such a case, please try to configure the <a href="apiconfig.html#channel">channel</a> with <a href="apiconfig.html#autoconnectconfig">AutoConnectConfig</a> to match the access point.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">AutoConnect</span> <span style="color: #f8f8f2">portal;</span>
-<span style="color: #f8f8f2">AutoConnectConfig</span> <span style="color: #f8f8f2">config;</span>
-
-<span style="color: #f8f8f2">config.channel</span> <span style="color: #f92672">=</span> <span style="color: #ae81ff">3</span><span style="color: #f8f8f2">;</span>     <span style="color: #75715e">// Specifies a channel number that matches the AP</span>
-<span style="color: #f8f8f2">portal.config(config);</span>  <span style="color: #75715e">// Apply channel configurration</span>
-<span style="color: #f8f8f2">portal.begin();</span>         <span style="color: #75715e">// Start the portal</span>
-</pre></div>
-
-<div class="admonition info">
-<p class="admonition-title">Channel selection guide</p>
-<p>Espressif Systems has released a <a href="https://www.espressif.com/sites/default/files/esp8266_wi-fi_channel_selection_guidelines.pdf">channel selection guide</a>.</p>
-</div>
-<h3 id="2-change-the-arduino-core-version">2. Change the arduino core version<a class="headerlink" href="#2-change-the-arduino-core-version" title="Permanent link">&para;</a></h3>
-<p>I recommend change installed an arduino core version to the upstream when your sketch is not stable with AutoConnect on each board.</p>
-<h4 id="with-esp8266-arduino-core">with ESP8266 arduino core<a class="headerlink" href="#with-esp8266-arduino-core" title="Permanent link">&para;</a></h4>
-<p>You can select the <a href="http://lwip.wikia.com/wiki/LwIP_Wiki">lwIP</a> variant to contribute for the stable behavior. The <strong>lwIP v2 Lower memory</strong> option of Arduino IDE for core version 2.4.2 is based on the lwIP-v2. On the other hand, the core version 2.5.0 upstream is based on the lwIP-2.1.2 stable release.</p>
-<p>You can select the option from Arduino IDE as <strong>Tool</strong> menu, if you are using ESP8266 core 2.5.0. It can be select <code>lwIP v2 Lower Memory</code> option. (not <code>lwIP v2 Lower Memory (no features)</code>) It is expected to improve response performance and stability.</p>
-<h4 id="with-esp32-arduino-core">with ESP32 arduino core<a class="headerlink" href="#with-esp32-arduino-core" title="Permanent link">&para;</a></h4>
-<p>The <a href="https://github.com/espressif/arduino-esp32">arduino-esp32</a> is still under development. It is necessary to judge whether the problem cause of the core or AutoConnect. Trace the log with the esp32 core and the AutoConnect debug option enabled for problem diagnosis and please you check the <a href="https://github.com/espressif/arduino-esp32/issues">issue of arduino-esp32</a>. The problem that your sketch possesses may already have been solved.</p>
-<h3 id="3-turn-on-the-debug-log-options">3. Turn on the debug log options<a class="headerlink" href="#3-turn-on-the-debug-log-options" title="Permanent link">&para;</a></h3>
-<p>To fully enable for the AutoConnect debug logging options, change the following two files.</p>
-<p><i class="fas fa-angle-right"></i> AutoConnectDefs.h</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#define AC_DEBUG</span>
-</pre></div>
-
-<p><i class="fas fa-angle-right"></i> PageBuilder.h <sup id="fnref:2"><a class="footnote-ref" href="#fn:2" rel="footnote">1</a></sup></p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#define PB_DEBUG</span>
-</pre></div>
-
-<h3 id="4-reports-the-issue-to-autoconnect-github-repository">4. Reports the issue to AutoConnect Github repository<a class="headerlink" href="#4-reports-the-issue-to-autoconnect-github-repository" title="Permanent link">&para;</a></h3>
-<p>If you can not solve AutoConnect problems please report to <a href="https://github.com/Hieromon/AutoConnect/issues">Issues</a>. And please make your question comprehensively, not a statement. Include all relevant information to start the problem diagnostics as follows:<sup id="fnref:3"><a class="footnote-ref" href="#fn:3" rel="footnote">2</a></sup></p>
-<ul class="task-list">
-<li class="task-list-item"><input type="checkbox" disabled/> Hardware module</li>
-<li class="task-list-item"><input type="checkbox" disabled/> Arduino core version Including the upstream commit ID if necessary</li>
-<li class="task-list-item"><input type="checkbox" disabled/> Operating System which you use</li>
-<li class="task-list-item"><input type="checkbox" disabled/> Your smartphone OS and version (Especially for Android)</li>
-<li class="task-list-item"><input type="checkbox" disabled/> Your AP information (IP, channel) if related</li>
-<li class="task-list-item"><input type="checkbox" disabled/> lwIP variant</li>
-<li class="task-list-item"><input type="checkbox" disabled/> Problem description</li>
-<li class="task-list-item"><input type="checkbox" disabled/> If you have a STACK DUMP decoded result with formatted by the code block tag</li>
-<li class="task-list-item"><input type="checkbox" disabled/> The sketch code with formatted by the code block tag (Reduce to the reproducible minimum code for the problem)</li>
-<li class="task-list-item"><input type="checkbox" disabled/> Debug messages output (Including arduino core)</li>
-</ul>
-<p>I will make efforts to solve as quickly as possible. But I would like you to know that it is not always possible.</p>
-<p>Thank you.</p>
-<div class="footnote">
-<hr />
-<ol>
-<li id="fn:2">
-<p><code>PageBuilder.h</code> exists in the <code>libraries/PageBuilder/src</code> directory under your sketch folder.&#160;<a class="footnote-backref" href="#fnref:2" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p>
-</li>
-<li id="fn:3">
-<p>Without this information, the reproducibility of the problem is reduced, making diagnosis and analysis difficult.&#160;<a class="footnote-backref" href="#fnref:3" rev="footnote" title="Jump back to footnote 2 in the text">&#8617;</a></p>
-</li>
-</ol>
-</div></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="colorized.html" title="Custom colorized" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>Custom colorized</span></div></a><a href="changelog.html" title="Change log" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>Change log</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/gettingstarted.html b/lib/AutoConnect-master/docs/gettingstarted.html
deleted file mode 100644
index a735ff921a5421948c43b346c94a4bf1c2e74767..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/gettingstarted.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/gettingstarted.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>Getting started - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#lets-do-the-most-simple-sketch" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">Getting started</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">Getting started</label><a href="gettingstarted.html" title="Getting started" class="md-nav__link md-nav__link--active">Getting started</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#lets-do-the-most-simple-sketch" title="Let's do the most simple sketch" class="md-nav__link">Let's do the most simple sketch</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#run-at-first" title=" Run at first" class="md-nav__link"> Run at first</a></li><li class="md-nav__item"><a href="#join-to-the-new-access-point" title=" Join to the new access point" class="md-nav__link"> Join to the new access point</a></li><li class="md-nav__item"><a href="#connection-establishment" title=" Connection establishment" class="md-nav__link"> Connection establishment</a></li><li class="md-nav__item"><a href="#run-for-usually" title=" Run for usually" class="md-nav__link"> Run for usually</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7"><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#lets-do-the-most-simple-sketch" title="Let's do the most simple sketch" class="md-nav__link">Let's do the most simple sketch</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#run-at-first" title=" Run at first" class="md-nav__link"> Run at first</a></li><li class="md-nav__item"><a href="#join-to-the-new-access-point" title=" Join to the new access point" class="md-nav__link"> Join to the new access point</a></li><li class="md-nav__item"><a href="#connection-establishment" title=" Connection establishment" class="md-nav__link"> Connection establishment</a></li><li class="md-nav__item"><a href="#run-for-usually" title=" Run for usually" class="md-nav__link"> Run for usually</a></li></ul></nav></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>Getting started</h1><h2 id="lets-do-the-most-simple-sketch">Let's do the most simple sketch<a class="headerlink" href="#lets-do-the-most-simple-sketch" title="Permanent link">&para;</a></h2>
-<p>Open the Arduino IDE, write the following sketch and upload it. The feature of this sketch is that the SSID and Password are not coded.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WiFi.h&gt;          // Replace with WiFi.h for ESP32</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;ESP8266WebServer.h&gt;     // Replace with WebServer.h for ESP32</span>
-<span style="color: #75715e">#include</span> <span style="color: #75715e">&lt;AutoConnect.h&gt;</span>
-
-<span style="color: #f8f8f2">ESP8266WebServer</span> <span style="color: #f8f8f2">Server;</span>          <span style="color: #75715e">// Replace with WebServer for ESP32</span>
-<span style="color: #f8f8f2">AutoConnect</span>      <span style="color: #a6e22e">Portal</span><span style="color: #f8f8f2">(Server);</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">rootPage</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #66d9ef">char</span> <span style="color: #f8f8f2">content[]</span> <span style="color: #f92672">=</span> <span style="color: #e6db74">&quot;Hello, world&quot;</span><span style="color: #f8f8f2">;</span>
-  <span style="color: #f8f8f2">Server.send(</span><span style="color: #ae81ff">200</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;text/plain&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">content);</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">setup</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">delay(</span><span style="color: #ae81ff">1000</span><span style="color: #f8f8f2">);</span>
-  <span style="color: #f8f8f2">Serial.begin(</span><span style="color: #ae81ff">115200</span><span style="color: #f8f8f2">);</span>
-  <span style="color: #f8f8f2">Serial.println();</span>
-
-  <span style="color: #f8f8f2">Server.on(</span><span style="color: #e6db74">&quot;/&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">rootPage);</span>
-  <span style="color: #66d9ef">if</span> <span style="color: #f8f8f2">(Portal.begin())</span> <span style="color: #f8f8f2">{</span>
-    <span style="color: #f8f8f2">Serial.println(</span><span style="color: #e6db74">&quot;WiFi connected: &quot;</span> <span style="color: #f92672">+</span> <span style="color: #f8f8f2">WiFi.localIP().toString());</span>
-  <span style="color: #f8f8f2">}</span>
-<span style="color: #f8f8f2">}</span>
-
-<span style="color: #66d9ef">void</span> <span style="color: #a6e22e">loop</span><span style="color: #f8f8f2">()</span> <span style="color: #f8f8f2">{</span>
-    <span style="color: #f8f8f2">Portal.handleClient();</span>
-<span style="color: #f8f8f2">}</span>
-</pre></div>
-
-<div class="admonition note">
-<p>The above code can be applied to ESP8266. To apply to ESP32, replace <code>ESP8266WebServer</code> class with <code>WebServer</code> and include <code>WiFi.h</code> and <code>WebServer.h</code> of arduino-esp32 appropriately.</p>
-</div>
-<h3 id="run-at-first"><i class="fa fa-play-circle"></i> Run at first<a class="headerlink" href="#run-at-first" title="Permanent link">&para;</a></h3>
-<p>After about 30 seconds, if the ESP8266 cannot connect to nearby Wi-Fi spot, you pull out your smartphone and open <em>Wi-Fi settings</em> from the <em>Settings</em> Apps. You can see the <strong>esp8266ap</strong> <sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup> in the list of <em>"CHOOSE A NETWORK..."</em>. Then tap the esp8266ap and enter password <strong>12345678</strong>, a something screen pops up automatically as shown below.</p>
-<p><span style="display:inline-block;width:282px;height:501px;border:1px solid lightgrey;"><img data-gifffer="images/login_ani.gif" data-gifffer-width="280" style="width:280px;" /></span><img src="images/arrow_right.svg" style="vertical-align:top;padding-top:120px;width:48px;margin-left:30px;margin-right:30px;" /><img src="images/stat.png" style="border:1px solid lightgrey;width:280px;" /></span></p>
-<p>This is the AutoConnect statistics screen. This screen displays the current status of the established connection, WiFi mode, IP address, free memory size, and etc. Also, the <strong>hamburger icon</strong> is the control menu of AutoConnect seems at the upper right. By tap the hamburger icon, the control menu appears as the below.</p>
-<h3 id="join-to-the-new-access-point"><i class="fa fa-cog"></i> Join to the new access point<a class="headerlink" href="#join-to-the-new-access-point" title="Permanent link">&para;</a></h3>
-<p>Here, tap <em>"Configure new AP"</em> to connect the new access point then the SSID configuration screen would be shown. Enter the <strong>SSID</strong> and <strong>Passphrase</strong> and tap <strong>apply</strong> to start connecting the access point.</p>
-<p><img src="images/menu_login.png" style="border:1px solid lightgrey;width:280px;" /><img src="images/arrow_right.svg" style="vertical-align:top;padding-top:120px;width:48px;margin-left:30px;margin-right:30px;" /><img src="images/config_ssid.png" style="border:1px solid lightgrey;width:280px;" /></p>
-<h3 id="connection-establishment"><i class="fa fa-rss"></i> Connection establishment<a class="headerlink" href="#connection-establishment" title="Permanent link">&para;</a></h3>
-<p>After connection established, the current status screen will appear. It is already connected to WLAN with WiFi mode as WIFI_AP_STA and the IP connection status is displayed there including the SSID. Then at this screen, you have two options for the next step.</p>
-<p>For one, continues execution of the sketch while keeping this connection. You can access ESP8266 via browser through the established IP address after cancel to "<strong>Log in</strong>" by upper right on the screen.<br />
-Or, "<strong>RESET</strong>" can be selected. The ESP8266 resets and reboots. After that, immediately before the connection will be restored automatically with WIFI_STA mode.</p>
-<p><img src="images/established.png" style="border:1px solid lightgrey;width:280px;" /><img src="images/arrow_right.svg" style="vertical-align:top;padding-top:120px;width:48px;margin-left:30px;margin-right:30px;" /><img src="images/reset.png" style="border:1px solid lightgrey;width:280px;" /></p>
-<h3 id="run-for-usually"><i class="fa fa-play-circle"></i> Run for usually<a class="headerlink" href="#run-for-usually" title="Permanent link">&para;</a></h3>
-<p>The IP address of ESP8266 would be displayed on the serial monitor after connection restored. Please access its address from the browser. The "Hello, world" page will respond. It's the page that was handled by in the sketch with "<strong>on</strong>" function of <em>ESP8266WebServer</em>.</p>
-<p><img src="images/serial.png" style="vertical-align:top;" /><img src="images/arrow_right.svg" style="vertical-align:top;padding-top:60px;width:48px;margin-left:45px;margin-right:30px;" /><img src="images/hello_world.png" style="border:1px solid lightgrey;width:280px;" /></p>
-<script>
-  window.onload = function() {
-    Gifffer();
-  };
-</script>
-
-<div class="footnote">
-<hr />
-<ol>
-<li id="fn:1">
-<p>When applied to ESP32, SSID will appear as <strong>esp32ap</strong>.&#160;<a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p>
-</li>
-</ol>
-</div></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="index.html" title="Overview" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>Overview</span></div></a><a href="menu.html" title="AutoConnect menu" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>AutoConnect menu</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/howtoembed.html b/lib/AutoConnect-master/docs/howtoembed.html
deleted file mode 100644
index 366d42772a295cbd623afbb3daf5bbe308ed5a14..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/howtoembed.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/howtoembed.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>How to embed - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#embed-the-autoconnect-to-the-sketch" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">How to embed</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7"><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--active md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8" checked><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">How to embed</label><a href="howtoembed.html" title="How to embed" class="md-nav__link md-nav__link--active">How to embed</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#embed-the-autoconnect-to-the-sketch" title="Embed the AutoConnect to the sketch" class="md-nav__link">Embed the AutoConnect to the sketch</a></li><li class="md-nav__item"><a href="#what-does-this-example-do" title="What does this example do?" class="md-nav__link">What does this example do?</a></li><li class="md-nav__item"><a href="#embed-autoconnect" title="Embed AutoConnect" class="md-nav__link">Embed AutoConnect</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#pattern-a" title=" Pattern A." class="md-nav__link"> Pattern A.</a></li><li class="md-nav__item"><a href="#pattern-b" title=" Pattern B." class="md-nav__link"> Pattern B.</a></li></ul></nav></li><li class="md-nav__item"><a href="#used-with-mqtt-as-a-client-application" title="Used with MQTT as a client application" class="md-nav__link">Used with MQTT as a client application</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#advance-procedures" title="Advance procedures" class="md-nav__link">Advance procedures</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#create-a-channel-on-thingspeak" title="Create a channel on ThingSpeak" class="md-nav__link">Create a channel on ThingSpeak</a></li><li class="md-nav__item"><a href="#get-channel-id-and-api-keys" title="Get Channel ID and API Keys" class="md-nav__link">Get Channel ID and API Keys</a></li></ul></nav></li><li class="md-nav__item"><a href="#the-sketch-publishes-messages" title="The sketch, Publishes messages" class="md-nav__link">The sketch, Publishes messages</a></li><li class="md-nav__item"><a href="#publish-messages" title="Publish messages" class="md-nav__link">Publish messages</a></li><li class="md-nav__item"><a href="#how-embed-to-your-sketches" title="How embed to your sketches" class="md-nav__link">How embed to your sketches</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#embed-the-autoconnect-to-the-sketch" title="Embed the AutoConnect to the sketch" class="md-nav__link">Embed the AutoConnect to the sketch</a></li><li class="md-nav__item"><a href="#what-does-this-example-do" title="What does this example do?" class="md-nav__link">What does this example do?</a></li><li class="md-nav__item"><a href="#embed-autoconnect" title="Embed AutoConnect" class="md-nav__link">Embed AutoConnect</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#pattern-a" title=" Pattern A." class="md-nav__link"> Pattern A.</a></li><li class="md-nav__item"><a href="#pattern-b" title=" Pattern B." class="md-nav__link"> Pattern B.</a></li></ul></nav></li><li class="md-nav__item"><a href="#used-with-mqtt-as-a-client-application" title="Used with MQTT as a client application" class="md-nav__link">Used with MQTT as a client application</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#advance-procedures" title="Advance procedures" class="md-nav__link">Advance procedures</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#create-a-channel-on-thingspeak" title="Create a channel on ThingSpeak" class="md-nav__link">Create a channel on ThingSpeak</a></li><li class="md-nav__item"><a href="#get-channel-id-and-api-keys" title="Get Channel ID and API Keys" class="md-nav__link">Get Channel ID and API Keys</a></li></ul></nav></li><li class="md-nav__item"><a href="#the-sketch-publishes-messages" title="The sketch, Publishes messages" class="md-nav__link">The sketch, Publishes messages</a></li><li class="md-nav__item"><a href="#publish-messages" title="Publish messages" class="md-nav__link">Publish messages</a></li><li class="md-nav__item"><a href="#how-embed-to-your-sketches" title="How embed to your sketches" class="md-nav__link">How embed to your sketches</a></li></ul></nav></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>How to embed</h1><h2 id="embed-the-autoconnect-to-the-sketch">Embed the AutoConnect to the sketch<a class="headerlink" href="#embed-the-autoconnect-to-the-sketch" title="Permanent link">&para;</a></h2>
-<p>Here hold two case examples. Both examples perform the same function. Only how to incorporate the <strong>AutoConnect</strong> into the sketch differs. Also included in the sample folder, HandlePortal.ino also shows how to use the <a href="https://github.com/Hieromon/PageBuilder">PageBuilder</a> library for HTML assemblies.</p>
-<h2 id="what-does-this-example-do">What does this example do?<a class="headerlink" href="#what-does-this-example-do" title="Permanent link">&para;</a></h2>
-<p>Uses the web interface to light the LED connected to the D0 (sometimes called <em>BUILTIN_LED</em>) port of the <strong><a href="https://github.com/nodemcu/nodemcu-devkit-v1.0">NodeMCU</a></strong> module like the following animation.</p>
-<p>Access to the ESP8266 module connected WiFi from the browser then the page contains the current value of the D0 port would be displayed. The page has the buttons to switch the port value. The LED will blink according to the value with clicked by the button. This example is a typical sketch of manipulating ESP8266's GPIO via WLAN.</p>
-<p><img data-gifffer="images/ac2.gif" /></p>
-<p>Embed AutoConnect library into this sketch. There are few places to be changed. And you can use AutoConnect's captive portal function to establish a connection freely to other WiFi spots.</p>
-<h2 id="embed-autoconnect">Embed AutoConnect<a class="headerlink" href="#embed-autoconnect" title="Permanent link">&para;</a></h2>
-<h3 id="pattern-a"><i class="fa fa-code" aria-hidden="true"></i> Pattern A.<a class="headerlink" href="#pattern-a" title="Permanent link">&para;</a></h3>
-<p>Bind to ESP8266WebServer, performs handleClient with handleRequest.</p>
-<p><img src="images/handleClient.svg" /></p>
-<div class="admonition hint">
-<p class="admonition-title">In what situations should the handleRequest be used.</p>
-<p>It is something needs to be done immediately after the handle client. It is better to call only AutoConnect::handleClient whenever possible.</p>
-</div>
-<h3 id="pattern-b"><i class="fa fa-code" aria-hidden="true"></i> Pattern B.<a class="headerlink" href="#pattern-b" title="Permanent link">&para;</a></h3>
-<p>Declare only AutoConnect, performs handleClient.</p>
-<p><img src="images/handlePortal.svg" /></p>
-<h2 id="used-with-mqtt-as-a-client-application">Used with MQTT as a client application<a class="headerlink" href="#used-with-mqtt-as-a-client-application" title="Permanent link">&para;</a></h2>
-<p>The effect of AutoConnect is not only for ESP8266/ESP32 as the web server. It has advantages for something WiFi client as well. For example, AutoConnect is also convenient for publishing MQTT messages from various measurement points. Even if the SSID is different for each measurement point, it is not necessary to modify the sketch.</p>
-<p>This example tries to publish the WiFi signal strength of ESP8266 with MQTT. It uses the <a href="https://thingspeak.com/">ThingSpeak</a> for MQTT broker. ESP8266 publishes the RSSI value to the channel created on ThingSpeak as <a href="https://github.com/knolleary/pubsubclient">MQTT client</a>. This example is well suited to demonstrate the usefulness of AutoConnect, as RSSI values are measured at each access point usually. Just adding a few lines of code makes it unnecessary to upload sketches with the different SSIDs rewrite for each access point.</p>
-<p><img src="images/ChannelStatus.png" width="70%"/></p>
-<h3 id="advance-procedures">Advance procedures<a class="headerlink" href="#advance-procedures" title="Permanent link">&para;</a></h3>
-<ul>
-<li>Arduino Client for MQTT - It's the <a href="https://github.com/knolleary/pubsubclient">PubSubClient</a>, install it to Arduino IDE. If you have the latest version already, this step does not need.</li>
-<li>Create a channel on ThingSpeak.</li>
-<li>Get the Channel API Keys from ThingSpeak, put its keys to the sketch.</li>
-</ul>
-<p>The ThingSpeak is the open IoT platform. It is capable of sending data privately to the cloud and analyzing, visualizing its data. If you do not have an account of ThingSpeak, you need that account to proceed further. ThingSpeak has the free plan for the account which uses within the scope of this example.<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup> You can sign up with the <a href="https://thingspeak.com/users/sign_up">ThingSpeak sign-up page</a>.</p>
-<div class="admonition warning">
-<p class="admonition-title">Whether you should do sign-up or not.</p>
-<p>You are entrusted with the final judgment of account creation for ThingSpeak. Create an account at your own risk.</p>
-</div>
-<h4 id="create-a-channel-on-thingspeak">Create a channel on ThingSpeak<a class="headerlink" href="#create-a-channel-on-thingspeak" title="Permanent link">&para;</a></h4>
-<p>Sign in ThingSpeak. Select <strong>Channels</strong> to show the <strong>My Channels</strong>, then click <strong>New Channel</strong>.</p>
-<p>At the <strong>New Channel</strong> screen, enter each field as a below. And click <strong>Save Channel</strong> at the bottom of the screen to save.</p>
-<ul>
-<li>Name: <code>ESP8266 Signal Strength</code></li>
-<li>Description: <code>ESP8266 RSSI publish</code></li>
-<li>Field1: <code>RSSI</code></li>
-</ul>
-<p><img src="images/CreateChannel.png" width="70%"/></p>
-<h4 id="get-channel-id-and-api-keys">Get Channel ID and API Keys<a class="headerlink" href="#get-channel-id-and-api-keys" title="Permanent link">&para;</a></h4>
-<p>The channel successfully created, you can see the channel status screen as a below. <strong>Channel ID</strong> is displayed there.<sup id="fnref:2"><a class="footnote-ref" href="#fn:2" rel="footnote">2</a></sup></p>
-<p><img src="images/ChannelID.png" width="70%"/></p>
-<p>Here, switch the channel status tab to <strong>API Keys</strong>. The API key required to publish the message is the <strong>Write API Key</strong>.</p>
-<p><img src="images/APIKeys.png" width="70%"/></p>
-<p>The last key you need is the <strong>User API Key</strong> and can be confirmed it in the user profile. Pull down <strong>Account</strong> from the top menu, select <strong>My profile</strong>. Then you can see the ThingSpeak settings and the <strong>User API Key</strong> is displayed middle of this screen.</p>
-<p><img src="images/USERKey.png" width="70%"/></p>
-<h3 id="the-sketch-publishes-messages">The sketch, Publishes messages<a class="headerlink" href="#the-sketch-publishes-messages" title="Permanent link">&para;</a></h3>
-<p>The complete code of the sketch is <a href="https://github.com/Hieromon/AutoConnect/blob/master/examples/mqttRSSI/mqttRSSI.ino">mqttRSSI.ino</a> in the <a href="https://github.com/Hieromon/AutoConnect">AutoConnect repository</a>. Replace the following #define in a sketch with <strong>User API Key</strong>, <strong>Write API Key</strong> and <strong>Channel ID</strong>. After Keys updated, compile the sketch and upload it.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#define MQTT_USER_KEY        &quot;****************&quot;  // Replace to User API Key.</span>
-<span style="color: #75715e">#define CHANNEL_ID           &quot;******&quot;            // Replace to Channel ID.</span>
-<span style="color: #75715e">#define CHANNEL_API_KEY_WR   &quot;****************&quot;  // Replace to the write API Key.</span>
-</pre></div>
-
-<h3 id="publish-messages">Publish messages<a class="headerlink" href="#publish-messages" title="Permanent link">&para;</a></h3>
-<p>After upload and reboot complete, the message publishing will start via the access point now set. The message carries RSSI as the current WiFi signal strength. The signal strength variations in RSSI are displayed on ThingSpeak's Channel status screen.</p>
-<h3 id="how-embed-to-your-sketches">How embed to your sketches<a class="headerlink" href="#how-embed-to-your-sketches" title="Permanent link">&para;</a></h3>
-<p>For the client sketches, the code required to connect to WiFi is the following four parts only.</p>
-<ol>
-<li>
-<p>#include directive<sup id="fnref:3"><a class="footnote-ref" href="#fn:3" rel="footnote">3</a></sup></p>
-<p>Include <code>AutoConnect.h</code> header file behind the include of <code>ESP8266WiFi.h</code>.</p>
-<p><img src="images/include.png" width="55%"/></p>
-</li>
-<li>
-<p>Declare AutoConnect</p>
-<p>The declaration of the <a href="api.html#autoconnect"><strong>AutoConnect variable</strong></a> is not accompanied by ESP8266WebServer.</p>
-<p><img src="images/declare.png" width="55%"/></p>
-</li>
-<li>
-<p>Invokes "begin()"</p>
-<p>Call <a href="api.html#begin"><strong>AutoConnect::begin</strong></a>. If you need to assign a static IP address, executes <a href="apiconfig.html">AutoConnectConfig</a> before that. </p>
-<p><img src="images/begin.png" width="55%"/></p>
-</li>
-<li>
-<p>Performs "handleClent()" in "loop()"</p>
-<p>Invokes <a href="api.html#handleclient"><strong>AutoConnect::handleClient()</strong></a> at inside <code>loop()</code> to enable the AutoConnect menu.</p>
-<p><img src="images/handleClient.png" width="55%"/></p>
-</li>
-</ol>
-<script>
-  window.onload = function() {
-    Gifffer();
-  };
-</script>
-
-<div class="footnote">
-<hr />
-<ol>
-<li id="fn:1">
-<p>As of March 21, 2018.&#160;<a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p>
-</li>
-<li id="fn:2">
-<p>'454951' in the example above, but your channel ID should be different.&#160;<a class="footnote-backref" href="#fnref:2" rev="footnote" title="Jump back to footnote 2 in the text">&#8617;</a></p>
-</li>
-<li id="fn:3">
-<p><code>#include &lt;ESP8266WebServer.h&gt;</code> does not necessary for uses only client.&#160;<a class="footnote-backref" href="#fnref:3" rev="footnote" title="Jump back to footnote 3 in the text">&#8617;</a></p>
-</li>
-</ol>
-</div></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="apiextra.html" title="Something extra" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>Something extra</span></div></a><a href="datatips.html" title="Tips for data conversion" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>Tips for data conversion</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/images/ACMenu_brown.png b/lib/AutoConnect-master/docs/images/ACMenu_brown.png
deleted file mode 100644
index e6e7ffbaa7b1bdf7aa0e0ac5d1d5b3f4670a8528..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/ACMenu_brown.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/ACMenu_dimgray.png b/lib/AutoConnect-master/docs/images/ACMenu_dimgray.png
deleted file mode 100644
index 53f1f7190ed03a09c8472b6cd8b7d0bb29eeb805..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/ACMenu_dimgray.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/ACMenu_indigo.png b/lib/AutoConnect-master/docs/images/ACMenu_indigo.png
deleted file mode 100644
index 78b2afb48df09684ed5c4a3ce5c25863c6a8841c..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/ACMenu_indigo.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/APIKeys.png b/lib/AutoConnect-master/docs/images/APIKeys.png
deleted file mode 100644
index 0f1832baa39dbebb70fb4d6f141e811cb88ae964..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/APIKeys.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/AutoConnectAux.gif b/lib/AutoConnect-master/docs/images/AutoConnectAux.gif
deleted file mode 100644
index 3538872c5431ecca0cd7a1727cd90a4d6e8890ee..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/AutoConnectAux.gif and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/BeforeAfter.svg b/lib/AutoConnect-master/docs/images/BeforeAfter.svg
deleted file mode 100644
index 95a183833f4662240940d8149deb2e1d3b3e258c..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/images/BeforeAfter.svg
+++ /dev/null
@@ -1,639 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   id="svg8"
-   version="1.1"
-   viewBox="0 0 196.63957 182.99508"
-   height="182.99507mm"
-   width="196.63957mm">
-  <defs
-     id="defs2">
-    <marker
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Lend"
-       style="overflow:visible">
-      <path
-         id="path6600"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
-    </marker>
-    <marker
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Lend"
-       style="overflow:visible">
-      <path
-         id="path6582"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
-    </marker>
-    <marker
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Tail"
-       style="overflow:visible">
-      <g
-         id="g6627"
-         transform="scale(-1.2)"
-         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1">
-        <path
-           id="path6615"
-           d="M -3.8048674,-3.9585227 0.54352094,0"
-           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1" />
-        <path
-           id="path6617"
-           d="M -1.2866832,-3.9585227 3.0617053,0"
-           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1" />
-        <path
-           id="path6619"
-           d="M 1.3053582,-3.9585227 5.6537466,0"
-           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1" />
-        <path
-           id="path6621"
-           d="M -3.8048674,4.1775838 0.54352094,0.21974226"
-           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1" />
-        <path
-           id="path6623"
-           d="M -1.2866832,4.1775838 3.0617053,0.21974226"
-           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1" />
-        <path
-           id="path6625"
-           d="M 1.3053582,4.1775838 5.6537466,0.21974226"
-           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1" />
-      </g>
-    </marker>
-    <linearGradient
-       id="linearGradient6499"
-       osb:paint="solid">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop6497" />
-    </linearGradient>
-    <marker
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Lend-9"
-       style="overflow:visible">
-      <path
-         id="path6600-6"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
-    </marker>
-  </defs>
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     transform="translate(39.78823,-45.773269)"
-     id="layer1">
-    <g
-       transform="translate(147.66531,3.5499426)"
-       id="layer1-8">
-      <path
-         id="path2315-6"
-         style="fill:none;stroke:#000000;stroke-width:0.026;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.49803922"
-         d="M -80.290968,53.521296 V 220.21829 m 5.29167,-166.696994 V 220.21829 m 5.29167,-166.696994 V 220.21829 m 5.29166,-166.696994 V 220.21829 m 5.29167,-166.696994 V 220.21829 m 5.29166,-166.696994 V 220.21829 m 5.29167,-166.696994 V 220.21829 m 5.29167,-166.696994 V 220.21829 m 5.29166,-166.696994 V 220.21829 m 5.29167,-166.696994 V 220.21829 M -27.374294,53.521296 V 220.21829 m 5.29166,-166.696994 V 220.21829 m 5.29167,-166.696994 V 220.21829 m 5.29167,-166.696994 V 220.21829 M -6.2076337,53.521296 V 220.21829 M -0.91596368,53.521296 V 220.21829 M -80.290968,53.521296 H 4.1860363 M -80.290968,58.812963 H 4.1860363 M -80.290968,64.104628 H 4.1860363 M -80.290968,69.396301 H 4.1860363 m -84.4770043,5.29166 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29166 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 M -80.290968,101.1463 H 4.1860363 m -84.4770043,5.29166 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 M -80.290968,117.0213 H 4.1860363 m -84.4770043,5.29165 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29166 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29166 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29166 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29166 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29166 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29166 H 4.1860363" />
-      <path
-         id="path2315"
-         style="fill:none;stroke:#000000;stroke-width:0.026;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.49803922"
-         d="M -182.44054,53.5214 V 220.21839 M -177.14887,53.5214 V 220.21839 M -171.8572,53.5214 v 166.69699 m 5.29166,-166.69699 v 166.69699 m 5.29167,-166.69699 v 166.69699 m 5.29166,-166.69699 v 166.69699 m 5.29167,-166.69699 v 166.69699 m 5.29167,-166.69699 v 166.69699 m 5.29166,-166.69699 v 166.69699 m 5.29167,-166.69699 v 166.69699 m 5.29167,-166.69699 v 166.69699 m 5.29166,-166.69699 v 166.69699 m 5.29167,-166.69699 v 166.69699 m 5.29167,-166.69699 v 166.69699 m 5.29166,-166.69699 v 166.69699 m 5.29167,-166.69699 v 166.69699 m -79.375,-166.69699 h 84.476996 m -84.476996,5.291666 h 84.476996 m -84.476996,5.291666 h 84.476996 m -84.476996,5.291667 h 84.476996 m -84.476996,5.291666 h 84.476996 m -84.476996,5.291666 h 84.476996 m -84.476996,5.291667 h 84.476996 m -84.476996,5.291666 h 84.476996 m -84.476996,5.291667 h 84.476996 m -84.476996,5.291669 h 84.476996 m -84.476996,5.29166 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29166 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29166 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29166 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29166 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29166 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29166 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29166 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29166 h 84.476996" />
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:1.25;font-family:monospace;-inkscape-font-specification:'monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="-179.95392"
-         y="58.437435"
-         id="text817"><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="58.437435"
-           x="-179.95392"
-           id="tspan2030"><tspan
-   id="tspan2338"
-   style="fill:#669900">#include</tspan> &lt;<tspan
-   id="tspan2332"
-   style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'">ESP8266WiFi</tspan>.h&gt;</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="63.729103"
-           x="-179.95392"
-           id="tspan2032"><tspan
-   id="tspan2336"
-   style="fill:#669900">#include</tspan> &lt;<tspan
-   id="tspan2334"
-   style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'">ESP8266WebServer</tspan>.h&gt;</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="69.020767"
-           x="-179.95392"
-           id="tspan2034" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="74.312431"
-           x="-179.95392"
-           id="tspan2036" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="79.604103"
-           x="-179.95392"
-           id="tspan2038"><tspan
-   id="tspan2340"
-   style="fill:#ff6600">ESP8266WebServer</tspan> Server;</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="84.895767"
-           x="-179.95392"
-           id="tspan2040" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="90.187431"
-           x="-179.95392"
-           id="tspan2042" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="95.479103"
-           x="-179.95392"
-           id="tspan2044"><tspan
-   id="tspan2344"
-   style="fill:#3366cc">void</tspan> rootPage() {</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="100.77077"
-           x="-179.95392"
-           id="tspan2046">  <tspan
-   id="tspan2350"
-   style="fill:#3366cc">char</tspan> content[] = <tspan
-   id="tspan2346"
-   style="fill:#003399">&quot;Hello, world&quot;</tspan>;</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="106.06243"
-           x="-179.95392"
-           id="tspan2048">  Server.<tspan
-   id="tspan2352"
-   style="fill:#ff6600">send</tspan>(200, <tspan
-   id="tspan2348"
-   style="fill:#003399">&quot;text/plain&quot;</tspan>, content);</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="111.3541"
-           x="-179.95392"
-           id="tspan2050">}</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="116.64577"
-           x="-179.95392"
-           id="tspan2052" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="121.93743"
-           x="-179.95392"
-           id="tspan2054"><tspan
-   id="tspan2354"
-   style="fill:#3366cc">void</tspan> <tspan
-   id="tspan2356"
-   style="fill:#808080">setup</tspan>() {</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="127.2291"
-           x="-179.95392"
-           id="tspan2056">  <tspan
-   id="tspan2358"
-   style="fill:#ff6600">delay</tspan>(1000);</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="132.52077"
-           x="-179.95392"
-           id="tspan2058">  <tspan
-   id="tspan2360"
-   style="fill:#ff6600">Serial</tspan>.<tspan
-   id="tspan2362"
-   style="fill:#ff6600">begin</tspan>(115200);</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="137.81242"
-           x="-179.95392"
-           id="tspan2060">  <tspan
-   id="tspan2366"
-   style="fill:#ff6600">Serial</tspan>.<tspan
-   id="tspan2364"
-   style="fill:#ff6600">println</tspan>();</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="143.1041"
-           x="-179.95392"
-           id="tspan2062" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="148.39577"
-           x="-179.95392"
-           id="tspan2064">  <tspan
-   id="tspan2368"
-   style="fill:#ff6600">WiFi</tspan>.<tspan
-   id="tspan2370"
-   style="fill:#ff6600">begin</tspan>(<tspan
-   id="tspan2372"
-   style="fill:#003399">&quot;ssid&quot;</tspan>, <tspan
-   id="tspan2374"
-   style="fill:#003399">&quot;pass&quot;</tspan>);</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="153.68742"
-           x="-179.95392"
-           id="tspan2066">  <tspan
-   id="tspan2378"
-   style="fill:#808080">while</tspan> (<tspan
-   id="tspan2376"
-   style="fill:#ff6600">WiFi</tspan>.status() != WL_CONNECTED) {</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="158.9791"
-           x="-179.95392"
-           id="tspan2068">    <tspan
-   id="tspan2380"
-   style="fill:#ff6600">delay</tspan>(100);</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="164.27077"
-           x="-179.95392"
-           id="tspan2070">  }</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="169.56242"
-           x="-179.95392"
-           id="tspan2072" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="174.8541"
-           x="-179.95392"
-           id="tspan2074">  Server.<tspan
-   id="tspan2382"
-   style="fill:#ff6600">on</tspan>(<tspan
-   id="tspan2384"
-   style="fill:#003399">&quot;/&quot;</tspan>, rootPage);</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="180.14577"
-           x="-179.95392"
-           id="tspan2076">  Server.<tspan
-   id="tspan2386"
-   style="fill:#ff6600">begin</tspan>();</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="185.43742"
-           x="-179.95392"
-           id="tspan2078">  <tspan
-   id="tspan2388"
-   style="fill:#ff6600">Serial</tspan>.<tspan
-   id="tspan2390"
-   style="fill:#ff6600">println</tspan>(<tspan
-   id="tspan2392"
-   style="fill:#003399">&quot;Web server started:&quot;</tspan> +</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="190.7291"
-           x="-179.95392"
-           id="tspan2080">              <tspan
-   id="tspan2394"
-   style="fill:#ff6600">WiFi</tspan>.localIP().toString());</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="196.02077"
-           x="-179.95392"
-           id="tspan2082">}</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="201.31242"
-           x="-179.95392"
-           id="tspan2084" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="206.6041"
-           x="-179.95392"
-           id="tspan2090"><tspan
-   id="tspan2434"
-   style="fill:#3366cc">void</tspan> <tspan
-   id="tspan2436"
-   style="fill:#808080">loop</tspan>() {</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="211.89577"
-           x="-179.95392"
-           id="tspan2092">  Server.<tspan
-   id="tspan2438"
-   style="fill:#ff6600">handleClient</tspan>();</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="217.18742"
-           x="-179.95392"
-           id="tspan2094">}</tspan></text>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:1.25;font-family:monospace;-inkscape-font-specification:'monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="-77.797623"
-         y="58.444054"
-         id="text817-4"><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="58.444054"
-           x="-77.797623"
-           id="tspan1964"><tspan
-   id="tspan2440"
-   style="fill:#669900">#include</tspan> &lt;<tspan
-   id="tspan2460"
-   style="-inkscape-font-specification:'monospace Italic';font-family:monospace;font-weight:normal;font-style:italic;font-stretch:normal;font-variant:normal">ESP8266WiFi</tspan>.h&gt;</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="63.735722"
-           x="-77.797623"
-           id="tspan1966"><tspan
-   id="tspan2442"
-   style="fill:#669900">#include</tspan> &lt;<tspan
-   id="tspan2464"
-   style="-inkscape-font-specification:'monospace Italic';font-family:monospace;font-weight:normal;font-style:italic;font-stretch:normal;font-variant:normal">ESP8266WebServer</tspan>.h&gt;</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="69.02739"
-           x="-77.797623"
-           id="tspan1968"><tspan
-   id="tspan2444"
-   style="fill:#669900">#include</tspan> &lt;<tspan
-   id="tspan2466"
-   style="-inkscape-font-specification:'monospace Italic';font-family:monospace;font-weight:normal;font-style:italic;font-stretch:normal;font-variant:normal">AutoConnect</tspan>.h&gt;</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="74.319054"
-           x="-77.797623"
-           id="tspan1970" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="79.610718"
-           x="-77.797623"
-           id="tspan1972"><tspan
-   id="tspan2446"
-   style="fill:#ff6600">ESP8266WebServer</tspan> Server;</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="84.902382"
-           x="-77.797623"
-           id="tspan1974"><tspan
-   id="tspan2448"
-   style="fill:#ff6600">AutoConnect</tspan>      Portal(Server);</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="90.194054"
-           x="-77.797623"
-           id="tspan1976" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="95.485718"
-           x="-77.797623"
-           id="tspan1978"><tspan
-   id="tspan2450"
-   style="fill:#3366cc">void</tspan> rootPage() {</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="100.77738"
-           x="-77.797623"
-           id="tspan1980">  <tspan
-   id="tspan2452"
-   style="fill:#3366cc">char</tspan> content[] = <tspan
-   id="tspan2456"
-   style="fill:#003399">&quot;Hello, world&quot;</tspan>;</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="106.06905"
-           x="-77.797623"
-           id="tspan1982">  Server.<tspan
-   id="tspan2454"
-   style="fill:#ff6600">send</tspan>(200, <tspan
-   id="tspan2458"
-   style="fill:#003399">&quot;text/plain&quot;</tspan>, content);</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="111.36072"
-           x="-77.797623"
-           id="tspan1984">}</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="116.65238"
-           x="-77.797623"
-           id="tspan1986" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="121.94405"
-           x="-77.797623"
-           id="tspan1988"><tspan
-   id="tspan2414"
-   style="fill:#3366cc">void</tspan> <tspan
-   id="tspan2416"
-   style="fill:#808080">setup</tspan>() {</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="127.23572"
-           x="-77.797623"
-           id="tspan1990">  <tspan
-   id="tspan2418"
-   style="fill:#ff6600">delay</tspan>(1000);</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="132.52739"
-           x="-77.797623"
-           id="tspan1992">  <tspan
-   id="tspan2420"
-   style="fill:#ff6600">Serial</tspan>.<tspan
-   id="tspan2424"
-   style="fill:#ff6600">begin</tspan>(115200);</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="137.81905"
-           x="-77.797623"
-           id="tspan1994">  <tspan
-   id="tspan2422"
-   style="fill:#ff6600">Serial</tspan>.<tspan
-   id="tspan2426"
-   style="fill:#ff6600">println</tspan>();</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="143.11072"
-           x="-77.797623"
-           id="tspan1996" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="148.40239"
-           x="-77.797623"
-           id="tspan1998" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="153.69405"
-           x="-77.797623"
-           id="tspan2000" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="158.98572"
-           x="-77.797623"
-           id="tspan2002" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="164.27737"
-           x="-77.797623"
-           id="tspan2004" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="169.56905"
-           x="-77.797623"
-           id="tspan2006" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="174.86072"
-           x="-77.797623"
-           id="tspan2008">  Server.<tspan
-   id="tspan2406"
-   style="fill:#ff6600">on</tspan>(<tspan
-   id="tspan2408"
-   style="fill:#003399">&quot;/&quot;</tspan>, rootPage);</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="180.15237"
-           x="-77.797623"
-           id="tspan2010">  Portal.<tspan
-   id="tspan2410"
-   style="fill:#ff6600">begin</tspan>();</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="185.44405"
-           x="-77.797623"
-           id="tspan2014">  <tspan
-   id="tspan2400"
-   style="fill:#ff6600">Serial</tspan>.<tspan
-   id="tspan2398"
-   style="fill:#ff6600">println</tspan>(<tspan
-   id="tspan2396"
-   style="fill:#003399">&quot;Web server started:&quot;</tspan> + </tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="190.73572"
-           x="-77.797623"
-           id="tspan2018">               <tspan
-   id="tspan2412"
-   style="fill:#ff6600">WiFi</tspan>.localIP().toString());</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="196.02737"
-           x="-77.797623"
-           id="tspan2020">}</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="201.31905"
-           x="-77.797623"
-           id="tspan2022" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="206.61072"
-           x="-77.797623"
-           id="tspan2024"><tspan
-   id="tspan2428"
-   style="fill:#3366cc">void</tspan> <tspan
-   id="tspan2430"
-   style="fill:#808080">loop</tspan>() {</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="211.90237"
-           x="-77.797623"
-           id="tspan2026">  Portal.<tspan
-   id="tspan2432"
-   style="fill:#ff6600">handleClient</tspan>();</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="217.19405"
-           x="-77.797623"
-           id="tspan2028">}</tspan></text>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:6.3499999px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="-145.07974"
-         y="50.99984"
-         id="text8720"><tspan
-           id="tspan8718"
-           x="-145.07974"
-           y="50.99984"
-           style="font-size:4.93888903px;stroke-width:0.26458332">Before</tspan></text>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.3499999px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#003399;fill-opacity:0.5884476;stroke:none;stroke-width:0.26458332;"
-         x="-104.55894"
-         y="69.372025"
-         id="text4947"><tspan
-           id="tspan4945"
-           x="-104.55894"
-           y="69.372025"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#003399;fill-opacity:0.5884476;stroke-width:0.26458332;">Insert</tspan></text>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.3499999px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#003399;fill-opacity:0.5884476;stroke:none;stroke-width:0.26458332;"
-         x="-104.55894"
-         y="85.179016"
-         id="text4947-7"><tspan
-           id="tspan4945-8"
-           x="-104.55894"
-           y="85.179016"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#003399;fill-opacity:0.5884476;stroke-width:0.26458332;">Insert</tspan></text>
-      <path
-         style="display:inline;opacity:1;fill:#003399;fill-opacity:0.5884476;stroke:#000000;stroke-width:0.03373705;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;paint-order:markers stroke fill"
-         id="path8601"
-         d="m -80.856438,83.447853 -5.300459,3.260004 V 80.18785 Z" />
-      <path
-         style="display:inline;opacity:1;fill:#003399;fill-opacity:0.5884476;stroke:#000000;stroke-width:0.03373705;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;paint-order:markers stroke fill"
-         id="path8601-8"
-         d="m -80.856438,67.640873 -5.300459,3.260004 V 64.38087 Z" />
-      <path
-         style="display:inline;fill:none;stroke:#003399;stroke-width:0.88;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.76,0.88;stroke-dashoffset:0;stroke-opacity:0.58823529"
-         d="m -77.507201,70.059294 h 45.903536"
-         id="path8701" />
-      <path
-         style="display:inline;fill:none;stroke:#003399;stroke-width:0.88;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.76,0.88;stroke-dashoffset:0;stroke-opacity:0.58823529"
-         d="m -77.866451,85.834446 h 60.63188"
-         id="path8701-6" />
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.3499999px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#003399;fill-opacity:0.58823529;stroke:none;stroke-width:0.26458332;"
-         x="-90.962158"
-         y="156.75723"
-         id="text4947-7-7"><tspan
-           id="tspan4945-8-3"
-           x="-90.962158"
-           y="156.75723"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#003399;fill-opacity:0.58823529;stroke-width:0.26458332;">Remove</tspan></text>
-      <path
-         style="display:inline;opacity:1;fill:#003399;fill-opacity:0.58823529;stroke:none;stroke-width:0.034;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;paint-order:markers stroke fill"
-         id="path8601-2"
-         d="m -92.128228,154.97999 -5.300459,3.26001 v -6.52001 z" />
-      <path
-         style="display:inline;fill:none;stroke:#003399;stroke-width:0.91645706;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.83291411, 1.83291411;stroke-dashoffset:0;stroke-opacity:0.58823529"
-         d="m -178.99241,143.23968 v 24.27983 h 79.594422 V 143.4604 Z"
-         id="path8699" />
-      <path
-         style="display:inline;opacity:1;fill:none;stroke:#003399;stroke-width:0.88;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.58823529"
-         d="M -86.136974,179.15988 H -141.12544"
-         id="path8682" />
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.3499999px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#003399;fill-opacity:0.58823529;stroke:none;stroke-width:0.26458332;"
-         x="-108.76884"
-         y="177.24081"
-         id="text4947-7-7-1"><tspan
-           id="tspan4945-8-3-2"
-           x="-108.76884"
-           y="177.24081"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#003399;fill-opacity:0.58823529;stroke-width:0.26458332;">Replace</tspan></text>
-      <path
-         style="display:inline;opacity:1;fill:#003399;fill-opacity:0.58823529;stroke:none;stroke-width:0.03373705;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;paint-order:markers stroke fill"
-         id="path8601-2-1-2"
-         d="m -80.856438,179.17113 -5.300459,3.26001 v -6.52001 z" />
-      <path
-         style="display:inline;fill:none;stroke:#003399;stroke-width:0.88;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.76,0.88;stroke-dashoffset:0;stroke-opacity:0.58823529"
-         d="m -175.9977,181.00311 h 11.62328"
-         id="path8701-6-3" />
-      <path
-         style="display:inline;fill:none;stroke:#003399;stroke-width:0.88;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.76,0.88;stroke-dashoffset:0;stroke-opacity:0.58823529"
-         d="M -74.015893,181.05546 H -62.07686"
-         id="path8701-6-3-0" />
-      <path
-         style="display:inline;fill:none;stroke:#003399;stroke-width:0.88;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.58823529"
-         d="M -86.152364,210.80953 H -128.31409"
-         id="path8682-0" />
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.3499999px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#003399;fill-opacity:0.58823529;stroke:none;stroke-width:0.26458332;"
-         x="-108.76881"
-         y="208.89076"
-         id="text4947-7-7-1-1"><tspan
-           id="tspan4945-8-3-2-6"
-           x="-108.76881"
-           y="208.89076"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#003399;fill-opacity:0.58823529;stroke-width:0.26458332;">Replace</tspan></text>
-      <path
-         style="display:inline;opacity:1;fill:#003399;fill-opacity:0.58823529;stroke:none;stroke-width:0.03373705;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;paint-order:markers stroke fill"
-         id="path8601-2-1-2-6"
-         d="m -80.856438,210.82078 -5.300459,3.26001 v -6.52001 z" />
-      <path
-         style="display:inline;fill:none;stroke:#003399;stroke-width:0.88;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.76, 0.88000000000000000;stroke-dashoffset:0;stroke-opacity:0.58823529"
-         d="m -175.95631,212.87316 h 13.88168"
-         id="path8701-6-3-3" />
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:6.3499999px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="-43.61565"
-         y="51.013618"
-         id="text8720-4"><tspan
-           id="tspan8718-5"
-           x="-43.61565"
-           y="51.013618"
-           style="font-size:4.93888903px;stroke-width:0.26458332">After</tspan></text>
-      <path
-         style="display:inline;opacity:1;fill:none;stroke:#003399;stroke-width:0.88;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.76, 0.88000000000000000;stroke-dashoffset:0;stroke-opacity:0.58823529"
-         d="m -73.445331,212.91466 h 12.468034"
-         id="path8701-6-3-0-1" />
-    </g>
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/docs/images/ChannelID.png b/lib/AutoConnect-master/docs/images/ChannelID.png
deleted file mode 100644
index f975ce3bc5d9962b48c3394bc8afc27ac2a73a95..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/ChannelID.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/ChannelStatus.png b/lib/AutoConnect-master/docs/images/ChannelStatus.png
deleted file mode 100644
index 3172fe0af5e293adc4935ac8a614cd93a8ef1fdc..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/ChannelStatus.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/CreateChannel.png b/lib/AutoConnect-master/docs/images/CreateChannel.png
deleted file mode 100644
index 1c34982028dfe90ffecb37b0850e3689b0f01258..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/CreateChannel.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/PageBuilder.png b/lib/AutoConnect-master/docs/images/PageBuilder.png
deleted file mode 100644
index 0ac01ef4fcfc14940880247688db2132eccf0850..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/PageBuilder.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/USERKey.png b/lib/AutoConnect-master/docs/images/USERKey.png
deleted file mode 100644
index 132ce2453ef7d23489ff20ad9829b0fba14cf56f..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/USERKey.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/ac.png b/lib/AutoConnect-master/docs/images/ac.png
deleted file mode 100644
index 72f7bb5872eca7d2b2c7aa1cdf6173c8ef7a76d8..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/ac.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/ac2.gif b/lib/AutoConnect-master/docs/images/ac2.gif
deleted file mode 100644
index a61ae8b98d20dd7a5965451b5fc9cf667913740f..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/ac2.gif and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/ac_auxjoin_multi.svg b/lib/AutoConnect-master/docs/images/ac_auxjoin_multi.svg
deleted file mode 100644
index e444ab7b6e028db35fb0827bc862fd455ac1fd8c..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/images/ac_auxjoin_multi.svg
+++ /dev/null
@@ -1,233 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="162.49986mm"
-   height="50.781212mm"
-   viewBox="0 0 162.49986 50.781212"
-   version="1.1"
-   id="svg6816"
-   inkscape:version="0.92.1 r15371"
-   sodipodi:docname="ac_auxjoin_multi.svg">
-  <defs
-     id="defs6810" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4"
-     inkscape:cx="292.19207"
-     inkscape:cy="131.80979"
-     inkscape:document-units="mm"
-     inkscape:current-layer="layer5"
-     showgrid="false"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     inkscape:window-width="1495"
-     inkscape:window-height="756"
-     inkscape:window-x="2593"
-     inkscape:window-y="280"
-     inkscape:window-maximized="0" />
-  <metadata
-     id="metadata6813">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="grid"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-11.759858,-8.8834486)"
-     sodipodi:insensitive="true">
-    <path
-       d="M 11.75987,8.8834486 V 59.664658 M 14.405703,8.8834486 V 59.664658 M 17.051536,8.8834486 V 59.664658 M 19.697369,8.8834486 V 59.664658 M 22.343203,8.8834486 V 59.664658 M 24.989036,8.8834486 V 59.664658 M 27.634869,8.8834486 V 59.664658 M 30.280702,8.8834486 V 59.664658 M 32.926536,8.8834486 V 59.664658 M 35.572369,8.8834486 V 59.664658 M 38.218202,8.8834486 V 59.664658 M 40.864035,8.8834486 V 59.664658 M 43.509868,8.8834486 V 59.664658 M 46.155702,8.8834486 V 59.664658 M 48.801535,8.8834486 V 59.664658 M 51.447368,8.8834486 V 59.664658 M 54.093201,8.8834486 V 59.664658 M 56.739034,8.8834486 V 59.664658 M 59.384868,8.8834486 V 59.664658 M 62.030701,8.8834486 V 59.664658 M 64.676534,8.8834486 V 59.664658 M 67.322367,8.8834486 V 59.664658 M 69.9682,8.8834486 V 59.664658 M 72.614034,8.8834486 V 59.664658 M 75.259867,8.8834486 V 59.664658 M 77.9057,8.8834486 V 59.664658 M 80.551533,8.8834486 V 59.664658 M 83.197366,8.8834486 V 59.664658 M 85.8432,8.8834486 V 59.664658 M 88.489033,8.8834486 V 59.664658 M 91.134866,8.8834486 V 59.664658 M 93.780699,8.8834486 V 59.664658 M 96.426532,8.8834486 V 59.664658 M 99.072366,8.8834486 V 59.664658 M 101.7182,8.8834486 V 59.664658 M 104.36403,8.8834486 V 59.664658 M 107.00986,8.8834486 V 59.664658 M 109.6557,8.8834486 V 59.664658 M 112.30153,8.8834486 V 59.664658 M 114.94736,8.8834486 V 59.664658 M 117.5932,8.8834486 V 59.664658 M 120.23903,8.8834486 V 59.664658 M 122.88486,8.8834486 V 59.664658 M 125.5307,8.8834486 V 59.664658 M 128.17653,8.8834486 V 59.664658 M 130.82236,8.8834486 V 59.664658 M 133.4682,8.8834486 V 59.664658 M 136.11403,8.8834486 V 59.664658 M 138.75986,8.8834486 V 59.664658 M 141.4057,8.8834486 V 59.664658 M 144.05153,8.8834486 V 59.664658 M 146.69736,8.8834486 V 59.664658 M 149.3432,8.8834486 V 59.664658 M 151.98903,8.8834486 V 59.664658 M 154.63486,8.8834486 V 59.664658 M 157.2807,8.8834486 V 59.664658 M 159.92653,8.8834486 V 59.664658 M 162.57236,8.8834486 V 59.664658 M 165.2182,8.8834486 V 59.664658 M 167.86403,8.8834486 V 59.664658 M 170.50986,8.8834486 V 59.664658 M 173.1557,8.8834486 V 59.664658 M 11.75987,8.8834486 H 174.25972 M 11.75987,11.529282 H 174.25972 M 11.75987,14.175115 H 174.25972 M 11.75987,16.820948 H 174.25972 M 11.75987,19.466782 H 174.25972 M 11.75987,22.112615 H 174.25972 M 11.75987,24.758448 H 174.25972 M 11.75987,27.404281 H 174.25972 M 11.75987,30.050115 H 174.25972 M 11.75987,32.695948 H 174.25972 M 11.75987,35.341781 H 174.25972 M 11.75987,37.987614 H 174.25972 M 11.75987,40.633447 H 174.25972 M 11.75987,43.279281 H 174.25972 M 11.75987,45.925114 H 174.25972 M 11.75987,48.570947 H 174.25972 M 11.75987,51.21678 H 174.25972 M 11.75987,53.862613 H 174.25972 M 11.75987,56.508447 H 174.25972 M 11.75987,59.15428 h 162.49985"
-       style="fill:none;stroke:#000000;stroke-width:0.0264583px"
-       id="path7619"
-       inkscape:connector-curvature="0" />
-  </g>
-  <g
-     inkscape:groupmode="layer"
-     id="layer4"
-     inkscape:label="code"
-     transform="translate(-11.759858,-8.8834486)"
-     sodipodi:insensitive="true"
-     style="display:inline">
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458338"
-       x="16.588673"
-       y="17.167612"
-       id="text4512"><tspan
-         sodipodi:role="line"
-         id="tspan7470"
-         style="line-height:8.81856251px"
-         x="16.588673"
-         y="17.167612"><tspan
-   style="fill:#ff6600"
-   id="tspan7488">AutoConnect</tspan>    portal;</tspan><tspan
-         sodipodi:role="line"
-         id="tspan7472"
-         style="line-height:8.81856251px"
-         x="16.588673"
-         y="25.986176"><tspan
-   style="fill:#ff6600"
-   id="tspan7490">AutoConnectAux</tspan> aux1<tspan
-   style="fill:#ff0000"
-   id="tspan7637">(</tspan><tspan
-   style="fill:#216778"
-   id="tspan7498">&quot;/mqtt_setting&quot;</tspan>, <tspan
-   style="fill:#216778"
-   id="tspan7500">&quot;MQTT Setting&quot;</tspan><tspan
-   style="fill:#ff0000"
-   id="tspan7643">)</tspan>;</tspan><tspan
-         sodipodi:role="line"
-         id="tspan7474"
-         style="line-height:8.81856251px"
-         x="16.588673"
-         y="34.804737"><tspan
-   style="fill:#ff6600"
-   id="tspan7492">AutoConnectAux</tspan> aux2<tspan
-   style="fill:#ff0000"
-   id="tspan7639">(</tspan><tspan
-   style="fill:#216778"
-   id="tspan7506">&quot;/mqtt_save&quot;, &quot;MQTT Setting&quot;</tspan>, <tspan
-   style="fill:#37abc8"
-   id="tspan7514">false</tspan><tspan
-   style="fill:#ff0000"
-   id="tspan7645">)</tspan>;</tspan><tspan
-         sodipodi:role="line"
-         id="tspan7476"
-         style="line-height:8.81856251px"
-         x="16.588673"
-         y="43.623299"><tspan
-   style="fill:#ff6600"
-   id="tspan7494">AutoConnectAux</tspan> aux3<tspan
-   style="fill:#ff0000"
-   id="tspan7647">(</tspan><tspan
-   style="fill:#216778"
-   id="tspan7512">&quot;/mqtt_start&quot;, &quot;MQTT Start&quot;</tspan><tspan
-   style="fill:#ff0000"
-   id="tspan7641">)</tspan>;</tspan><tspan
-         sodipodi:role="line"
-         id="tspan7478"
-         style="line-height:8.81856251px"
-         x="16.588673"
-         y="52.441864">portal.<tspan
-   style="fill:#ff6600"
-   id="tspan7496">join</tspan><tspan
-   style="fill:#ff0000"
-   id="tspan7625">(</tspan><tspan
-   id="tspan7633"
-   style="fill:#0000ff">{</tspan> aux1, aux2, aux3 <tspan
-   style="fill:#ff0000"
-   id="tspan7623"><tspan
-   style="fill:#0000ff"
-   id="tspan7635">}</tspan>)</tspan>;</tspan></text>
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot7480"
-       style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
-       transform="scale(0.26458333)"><flowRegion
-         id="flowRegion7482"><rect
-           id="rect7484"
-           width="222.23357"
-           height="51.51778"
-           x="221.2234"
-           y="103.27576" /></flowRegion><flowPara
-         id="flowPara7486"></flowPara></flowRoot>  </g>
-  <g
-     inkscape:groupmode="layer"
-     id="layer5"
-     inkscape:label="view"
-     transform="translate(-11.759858,-8.8834486)"
-     sodipodi:insensitive="true">
-    <rect
-       style="opacity:0.38699999;fill:#37abc8;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:0.52916666, 0.52916666;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect7539"
-       width="16.395168"
-       height="8.6281242"
-       x="150.52138"
-       y="28.977301"
-       ry="2.1733632" />
-    <path
-       style="fill:none;stroke:#ff6600;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 35.246169,53.951772 H 46.738758"
-       id="path7543"
-       inkscape:connector-curvature="0" />
-    <rect
-       style="opacity:0.38699999;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:0.52916667, 0.52916667;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect7539-7"
-       width="14.410792"
-       height="7.2107134"
-       x="85.975174"
-       y="47.568375"
-       ry="1.8163275" />
-    <rect
-       style="opacity:0.38699999;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:0.52916667, 0.52916667;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect7539-7-6"
-       width="14.410792"
-       height="7.2107134"
-       x="69.485977"
-       y="47.332142"
-       ry="1.8163275" />
-    <rect
-       style="opacity:0.38699999;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:0.52916667, 0.52916667;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect7539-7-4"
-       width="14.410792"
-       height="7.2107134"
-       x="52.958519"
-       y="47.332138"
-       ry="1.8163275" />
-    <rect
-       style="opacity:0.38699999;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:0.52916668, 0.52916668;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect7539-7-4-4"
-       width="13.229617"
-       height="7.2107134"
-       x="55.538654"
-       y="21.157295"
-       ry="1.8163275" />
-    <rect
-       style="opacity:0.38699999;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:0.52916667, 0.52916667;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect7539-7-4-4-5"
-       width="13.324111"
-       height="7.2107134"
-       x="55.538654"
-       y="29.955509"
-       ry="1.8163275" />
-    <rect
-       style="opacity:0.38699999;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:0.52916667, 0.52916667;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect7539-7-4-4-9"
-       width="13.276864"
-       height="7.2107134"
-       x="55.538658"
-       y="38.753723"
-       ry="1.8163275" />
-    <rect
-       style="opacity:0.38699999;fill:none;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect7617"
-       width="162.49986"
-       height="50.781212"
-       x="11.759858"
-       y="8.8834486"
-       ry="0" />
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/docs/images/ac_auxmenu.png b/lib/AutoConnect-master/docs/images/ac_auxmenu.png
deleted file mode 100644
index e1e7edc5deebad570198f9352cf7a118fe8d7a90..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/ac_auxmenu.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/ac_auxmenu_multi.png b/lib/AutoConnect-master/docs/images/ac_auxmenu_multi.png
deleted file mode 100644
index a845549252c611cc74c00d650ed6e595124cc3f7..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/ac_auxmenu_multi.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/ac_declaration.svg b/lib/AutoConnect-master/docs/images/ac_declaration.svg
deleted file mode 100644
index 1bf2f2e3adfe8faa48a14c84b10f38d819cab6a6..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/images/ac_declaration.svg
+++ /dev/null
@@ -1,384 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="281.83228mm"
-   height="92.538231mm"
-   viewBox="0 0 281.83228 92.538231"
-   version="1.1"
-   id="svg8"
-   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
-   sodipodi:docname="ac_declaration.svg">
-  <defs
-     id="defs2">
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker1034"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1032"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:isstock="true"
-       style="overflow:visible"
-       id="TriangleOutM"
-       refX="0"
-       refY="0"
-       orient="auto"
-       inkscape:stockid="TriangleOutM">
-      <path
-         inkscape:connector-curvature="0"
-         transform="scale(0.4)"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         id="path4735" />
-    </marker>
-    <marker
-       inkscape:isstock="true"
-       style="overflow:visible"
-       id="Arrow1Send"
-       refX="0"
-       refY="0"
-       orient="auto"
-       inkscape:stockid="Arrow1Send">
-      <path
-         inkscape:connector-curvature="0"
-         transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         id="path4605" />
-    </marker>
-    <marker
-       inkscape:isstock="true"
-       style="overflow:visible"
-       id="TriangleOutM-4"
-       refX="0"
-       refY="0"
-       orient="auto"
-       inkscape:stockid="TriangleOutM">
-      <path
-         transform="scale(0.4)"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         id="path4735-7"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:isstock="true"
-       style="overflow:visible"
-       id="TriangleOutM-4-7"
-       refX="0"
-       refY="0"
-       orient="auto"
-       inkscape:stockid="TriangleOutM"
-       inkscape:collect="always">
-      <path
-         transform="scale(0.4)"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         id="path4735-7-4"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker1034-8"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1032-4"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker1034-8-1"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1032-4-7"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#800000;fill-opacity:1;fill-rule:evenodd;stroke:#800000;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.3293607"
-     inkscape:cx="327.68411"
-     inkscape:cy="226.67409"
-     inkscape:document-units="mm"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:snap-global="false"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     inkscape:window-width="1440"
-     inkscape:window-height="810"
-     inkscape:window-x="1424"
-     inkscape:window-y="144"
-     inkscape:window-maximized="0" />
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="レイヤー 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(224.0709,-23.945169)">
-    <g
-       inkscape:label="grid"
-       id="layer1-7"
-       transform="translate(-220.3157,-58.591603)"
-       style="display:inline">
-      <path
-         d="M -3.7041667,82.550001 V 174.88958 M -1.0583334,82.550001 V 174.88958 M 1.5875,82.550001 V 174.88958 M 4.2333333,82.550001 V 174.88958 M 6.8791663,82.550001 V 174.88958 M 9.5250003,82.550001 V 174.88958 M 12.170833,82.550001 V 174.88958 M 14.816666,82.550001 V 174.88958 M 17.4625,82.550001 V 174.88958 M 20.108333,82.550001 V 174.88958 M 22.754166,82.550001 V 174.88958 M 25.4,82.550001 V 174.88958 M 28.045833,82.550001 V 174.88958 M 30.691666,82.550001 V 174.88958 M 33.3375,82.550001 V 174.88958 M 35.983333,82.550001 V 174.88958 M 38.629166,82.550001 V 174.88958 M 41.275,82.550001 V 174.88958 M 43.920833,82.550001 V 174.88958 M 46.566666,82.550001 V 174.88958 M 49.2125,82.550001 V 174.88958 M 51.858333,82.550001 V 174.88958 M 54.504166,82.550001 V 174.88958 M 57.15,82.550001 V 174.88958 M 59.795833,82.550001 V 174.88958 M 62.441666,82.550001 V 174.88958 M 65.0875,82.550001 V 174.88958 M 67.733333,82.550001 V 174.88958 M 70.379166,82.550001 V 174.88958 M 73.025,82.550001 V 174.88958 M 75.670833,82.550001 V 174.88958 M 78.316666,82.550001 V 174.88958 M 80.9625,82.550001 V 174.88958 M 83.608333,82.550001 V 174.88958 M 86.254166,82.550001 V 174.88958 M 88.9,82.550001 v 92.339579 m 2.645833,-92.339579 v 92.339579 m 2.645833,-92.339579 v 92.339579 m 2.645837,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M 102.12916,82.550001 V 174.88958 M 104.775,82.550001 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64584,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M 120.65,82.550001 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64584,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M 136.525,82.550001 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64584,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M 152.4,82.550001 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64584,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M 168.275,82.550001 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64584,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M 184.15,82.550001 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64584,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M 200.025,82.550001 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64584,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M 215.9,82.550001 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64584,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M 231.775,82.550001 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64584,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M 247.65,82.550001 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64584,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M 263.525,82.550001 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64584,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M -3.7041667,82.550001 H 278.07708 M -3.7041667,85.195834 H 278.07708 M -3.7041667,87.841667 H 278.07708 M -3.7041667,90.487501 H 278.07708 M -3.7041667,93.133334 H 278.07708 M -3.7041667,95.779168 H 278.07708 M -3.7041667,98.425001 H 278.07708 M -3.7041667,101.07083 H 278.07708 M -3.7041667,103.71667 H 278.07708 M -3.7041667,106.3625 H 278.07708 M -3.7041667,109.00833 H 278.07708 M -3.7041667,111.65417 H 278.07708 M -3.7041667,114.3 H 278.07708 M -3.7041667,116.94583 H 278.07708 M -3.7041667,119.59167 H 278.07708 M -3.7041667,122.2375 H 278.07708 M -3.7041667,124.88333 H 278.07708 M -3.7041667,127.52917 H 278.07708 M -3.7041667,130.175 H 278.07708 M -3.7041667,132.82083 H 278.07708 M -3.7041667,135.46667 H 278.07708 M -3.7041667,138.1125 H 278.07708 M -3.7041667,140.75833 H 278.07708 M -3.7041667,143.40417 H 278.07708 M -3.7041667,146.05 H 278.07708 M -3.7041667,148.69583 H 278.07708 M -3.7041667,151.34167 H 278.07708 M -3.7041667,153.9875 H 278.07708 M -3.7041667,156.63333 H 278.07708 M -3.7041667,159.27917 H 278.07708 M -3.7041667,161.925 H 278.07708 M -3.7041667,164.57083 H 278.07708 M -3.7041667,167.21667 H 278.07708 M -3.7041667,169.8625 H 278.07708 M -3.7041667,172.50833 H 278.07708"
-         style="fill:none;stroke:#000000;stroke-width:0.0264583px"
-         id="path6231"
-         inkscape:connector-curvature="0" />
-    </g>
-    <path
-       style="opacity:0.63899997;fill:none;stroke:#800000;stroke-width:0.50218612;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.50218609, 0.50218609;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1034-8-1)"
-       d="m -174.79736,44.887278 -27.9336,32.521806"
-       id="path943-6-2"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="opacity:0.63899997;fill:none;stroke:#000080;stroke-width:0.50218612;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.50218608, 0.50218608;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1034)"
-       d="m -191.18295,53.880903 11.39872,22.253419"
-       id="path943"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <g
-       id="layer2"
-       inkscape:label="view"
-       style="display:inline"
-       transform="translate(-224.86465,23.416002)">
-      <image
-         y="25.031691"
-         x="152.64569"
-         id="image4500"
-         xlink:href="data:image/png;base64,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 AABJRU5ErkJggg== "
-         preserveAspectRatio="none"
-         height="59.266666"
-         width="124.08958" />
-      <rect
-         style="opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         id="rect4584"
-         width="281.78125"
-         height="92.339584"
-         x="0.79375017"
-         y="0.72781485" />
-      <path
-         style="fill:none;stroke:#000080;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.52916667, 0.52916667;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#TriangleOutM)"
-         d="M 6.3169273,29.302814 H 112.84479 l 58.30755,25.135417"
-         id="path4586"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="ccc" />
-      <path
-         style="display:inline;fill:none;stroke:#000080;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.52916667, 0.52916667;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#TriangleOutM-4)"
-         d="M 6.3212163,38.64276 H 112.84908 l 44.8138,27.384375"
-         id="path4586-4"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="ccc" />
-      <path
-         style="display:inline;fill:none;stroke:#000080;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.52916667, 0.52916667;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#TriangleOutM-4-7)"
-         d="M 6.4518573,20.602493 H 144.68958 l 5.90768,3.525536"
-         id="path4586-4-4"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="ccc" />
-    </g>
-    <text
-       id="text4512"
-       y="33.215248"
-       x="-218.43906"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458335"
-       xml:space="preserve"><tspan
-         id="tspan4514"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:8.81856251px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458335"
-         y="33.215248"
-         x="-218.43906"
-         sodipodi:role="line"><tspan
-   dy="0"
-   id="tspan4548"
-   style="line-height:8.81856251px;fill:#ff6600">AutoConnect</tspan>     portal;</tspan><tspan
-         id="tspan4540"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:8.81856251px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458335"
-         y="42.03381"
-         x="-218.43906"
-         sodipodi:role="line"><tspan
-   id="tspan4550"
-   style="line-height:8.81856251px;fill:#ff6600">AutoConnectAux</tspan>  aux(<tspan
-   id="tspan4554"
-   style="line-height:8.81856251px;fill:#0088aa">&quot;/mqtt_setting&quot;</tspan>, <tspan
-   id="tspan4556"
-   style="line-height:8.81856251px;fill:#0088aa">&quot;MQTT Setting&quot;</tspan>);</tspan><tspan
-         id="tspan4516"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:8.81856251px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458335"
-         y="50.852375"
-         x="-218.43906"
-         sodipodi:role="line"><tspan
-   id="tspan4570"
-   style="line-height:8.81856251px;fill:#ff6600">ACText</tspan>(header, <tspan
-   id="tspan4564"
-   style="line-height:8.81856251px;fill:#0088aa">&quot;MQTT broker settings&quot;</tspan>);</tspan><tspan
-         id="tspan4518"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:8.81856251px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458335"
-         y="59.670937"
-         x="-218.43906"
-         sodipodi:role="line"><tspan
-   id="tspan4568"
-   style="line-height:8.81856251px;fill:#ff6600">ACText</tspan>(caption, <tspan
-   id="tspan4566"
-   style="line-height:8.81856251px;fill:#0088aa">&quot;Publishing the WiFi...&quot;</tspan>);</tspan><tspan
-         id="tspan4520"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:8.81856251px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458335"
-         y="67.167023"
-         x="-218.43906"
-         sodipodi:role="line" /><tspan
-         id="tspan4522"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:8.81856251px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458335"
-         y="74.663109"
-         x="-218.43906"
-         sodipodi:role="line"><tspan
-   id="tspan4574"
-   style="line-height:8.81856251px;fill:#00aad4">void</tspan><tspan
-   id="tspan4576"
-   style="line-height:8.81856251px;fill:#666666">setup</tspan>() {</tspan><tspan
-         id="tspan4530"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:8.81856251px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458335"
-         y="83.481674"
-         x="-218.43906"
-         sodipodi:role="line">  aux.<tspan
-   id="tspan4578"
-   style="line-height:8.81856251px;fill:#ff6600">add</tspan>({ header, caption });</tspan><tspan
-         id="tspan4532"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:8.81856251px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458335"
-         y="92.300232"
-         x="-218.43906"
-         sodipodi:role="line">  portal.<tspan
-   id="tspan4580"
-   style="line-height:8.81856251px;fill:#ff6600">join</tspan>(aux);</tspan><tspan
-         id="tspan4534"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:8.81856251px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458335"
-         y="101.1188"
-         x="-218.43906"
-         sodipodi:role="line">  portal.<tspan
-   id="tspan4582"
-   style="line-height:8.81856251px;fill:#ff6600">begin</tspan>();</tspan><tspan
-         id="tspan4536"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:8.81856251px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458335"
-         y="109.93736"
-         x="-218.43906"
-         sodipodi:role="line">}</tspan></text>
-    <rect
-       ry="4.1159506"
-       y="45.466137"
-       x="-202.09026"
-       height="8.2319012"
-       width="21.702286"
-       id="rect6136"
-       style="opacity:0.34100001;fill:#000080;fill-opacity:1;stroke:none;stroke-width:0.5291667;stroke-miterlimit:4;stroke-dasharray:0.52916668, 0.52916668;stroke-dashoffset:0;stroke-opacity:1"
-       rx="4.1159506" />
-    <rect
-       ry="4.1159506"
-       y="54.352848"
-       x="-202.09026"
-       height="8.2319012"
-       width="24.929565"
-       id="rect6136-3"
-       style="display:inline;opacity:0.34100001;fill:#000080;fill-opacity:1;stroke:none;stroke-width:0.5291667;stroke-miterlimit:4;stroke-dasharray:0.52916668, 0.52916668;stroke-dashoffset:0;stroke-opacity:1"
-       rx="4.1159506" />
-    <rect
-       ry="4.1159506"
-       y="77.785698"
-       x="-187.68443"
-       height="8.2319012"
-       width="21.702286"
-       id="rect6136-4"
-       style="display:inline;opacity:0.34100001;fill:#000080;fill-opacity:1;stroke:none;stroke-width:0.5291667;stroke-miterlimit:4;stroke-dasharray:0.52916668, 0.52916668;stroke-dashoffset:0;stroke-opacity:1"
-       rx="4.1159506" />
-    <rect
-       ry="4.1159506"
-       y="77.785698"
-       x="-164.85962"
-       height="8.2319012"
-       width="21.702286"
-       id="rect6136-4-0"
-       style="display:inline;opacity:0.34100001;fill:#000080;fill-opacity:1;stroke:none;stroke-width:0.5291667;stroke-miterlimit:4;stroke-dasharray:0.52916668, 0.52916668;stroke-dashoffset:0;stroke-opacity:1"
-       rx="4.1159506" />
-    <rect
-       ry="4.1159506"
-       y="77.785698"
-       x="-214.53166"
-       height="8.2319012"
-       width="12.113992"
-       id="rect6136-4-0-2"
-       style="display:inline;opacity:0.34100001;fill:#800000;fill-opacity:1;stroke:none;stroke-width:0.5291667;stroke-miterlimit:4;stroke-dasharray:0.52916668, 0.52916668;stroke-dashoffset:0;stroke-opacity:1"
-       rx="4.1159506" />
-    <rect
-       ry="4.1159506"
-       y="86.953049"
-       x="-182.37579"
-       height="8.2319012"
-       width="12.113992"
-       id="rect6136-4-0-2-8"
-       style="display:inline;opacity:0.34100001;fill:#800000;fill-opacity:1;stroke:none;stroke-width:0.5291667;stroke-miterlimit:4;stroke-dasharray:0.52916668, 0.52916668;stroke-dashoffset:0;stroke-opacity:1"
-       rx="4.1159506" />
-    <path
-       style="opacity:0.63899997;fill:none;stroke:#000080;stroke-width:0.50218612;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.50218609, 0.50218609;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1034-8)"
-       d="m -179.7291,62.978581 14.86948,14.807117"
-       id="path943-6"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <rect
-       rx="4.1159506"
-       ry="4.1159506"
-       y="36.532768"
-       x="-176.62614"
-       height="8.2319012"
-       width="12.113993"
-       id="rect6136-4-0-2-1"
-       style="display:inline;opacity:0.34100001;fill:#800000;fill-opacity:1;stroke:none;stroke-width:0.52916676;stroke-miterlimit:4;stroke-dasharray:0.52916669, 0.52916669;stroke-dashoffset:0;stroke-opacity:1" />
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/docs/images/ac_json.png b/lib/AutoConnect-master/docs/images/ac_json.png
deleted file mode 100644
index 96c5660a36865a06e56ea72df84eb05deb7f1900..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/ac_json.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/ac_load_save.svg b/lib/AutoConnect-master/docs/images/ac_load_save.svg
deleted file mode 100644
index bf73a2f4fadd8add9094151705c342e86b239d4f..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/images/ac_load_save.svg
+++ /dev/null
@@ -1,822 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="135.15846mm"
-   height="81.855286mm"
-   viewBox="0 0 135.15846 81.855286"
-   version="1.1"
-   id="svg8"
-   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
-   sodipodi:docname="ac_load_save.svg">
-  <defs
-     id="defs2">
-    <marker
-       inkscape:stockid="Arrow1Lstart"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker5279"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5277"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt"
-         transform="matrix(0.8,0,0,0.8,10,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Lend"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5014"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt"
-         transform="matrix(-0.8,0,0,-0.8,-10,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lstart"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Lstart"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5011"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt"
-         transform="matrix(0.8,0,0,0.8,10,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4142136"
-     inkscape:cx="305.95467"
-     inkscape:cy="192.81283"
-     inkscape:document-units="mm"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:snap-global="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1001"
-     inkscape:window-x="2551"
-     inkscape:window-y="-9"
-     inkscape:window-maximized="1"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0" />
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="レイヤー 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-53.740477,-29.775057)">
-    <g
-       id="g888"
-       transform="matrix(0.05665416,0,0,0.05665416,112.41059,91.432461)"
-       style="stroke-width:4.67014837">
-      <g
-         id="g827"
-         style="stroke-width:4.67014837">
-        <g
-           id="g825"
-           style="stroke-width:4.67014837">
-          <g
-             id="g823"
-             style="stroke-width:4.67014837">
-            <path
-               id="path815"
-               d="M 236.936,0 H 91.465 C 87.459,0 83.693,1.56 80.86,4.392 80.859,4.393 80.859,4.393 80.859,4.393 L 33.647,51.604 c -2.833,2.833 -4.393,6.6 -4.393,10.606 v 203.98 c 0,8.271 6.728,15 15,15 7.091,0 185.609,0 192.682,0 8.271,0 15,-6.729 15,-15 V 15 c 0,-8.271 -6.729,-15 -15,-15 z m -25,271.19 H 69.254 v -82.595 c 0,-2.757 2.243,-5 5,-5 h 132.682 c 2.757,0 5,2.243 5,5 z m 25,0 h -15 v -82.595 c 0,-8.271 -6.729,-15 -15,-15 H 74.254 c -8.271,0 -15,6.729 -15,15 v 82.595 h -15 c -2.757,0 -5,-2.243 -5,-5 V 62.211 c 0,-1.335 0.52,-2.591 1.464,-3.536 l 47.21,-47.21 C 88.873,10.521 90.13,10 91.465,10 h 145.471 c 2.757,0 5,2.243 5,5 v 251.19 0 c 0,2.757 -2.243,5 -5,5 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path817"
-               d="m 129.96,29.929 h -25.524 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.524 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 109.436 V 39.929 h 15.524 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path819"
-               d="m 173.448,29.929 h -25.524 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.524 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 152.924 V 39.929 h 15.524 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path821"
-               d="m 216.936,29.929 h -25.525 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.525 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 196.411 V 39.929 h 15.525 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-          </g>
-        </g>
-      </g>
-      <g
-         id="g829"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g831"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g833"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g835"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g837"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g839"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g841"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g843"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g845"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g847"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g849"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g851"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g853"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g855"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g857"
-         style="stroke-width:4.67014837" />
-    </g>
-    <g
-       id="g898"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g900"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g902"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g904"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g906"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g908"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g910"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g912"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g914"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g916"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g918"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g920"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g922"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g924"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g926"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect1093"
-       width="1.699528"
-       height="2.319947"
-       x="119.41328"
-       y="91.30558"
-       rx="0.053364325"
-       ry="0.46776518" />
-    <g
-       id="g1153"
-       transform="matrix(0.06571814,0,0,0.052736,100.33233,54.752494)">
-      <g
-         id="g1097">
-        <path
-           id="path1095"
-           d="M 578.766,51.487 V 50.592 H 575.77 35.93 32.934 v 0.895 C 15.272,52.701 2.095,66.753 0,83.808 v 3.002 355.724 c 0,6.898 1.795,12.712 4.791,17.949 6.893,12.137 17.068,18.269 31.14,18.269 h 197.012 v 49.695 h -37.425 c -9.281,0 -16.467,7.218 -16.467,16.48 0,9.262 7.186,16.479 16.467,16.479 h 220.666 c 9.281,0 16.768,-7.218 16.768,-16.479 0,-9.263 -7.486,-16.48 -16.768,-16.48 H 378.759 V 478.752 H 575.77 c 14.078,0 24.343,-6.132 31.14,-18.269 3.085,-5.493 5.091,-11.37 5.091,-17.949 V 86.811 83.809 C 609.905,66.753 595.833,52.701 578.766,51.487 Z m 0,35.324 v 355.724 c 0,2.108 -0.895,3.002 -2.996,3.002 H 35.93 c -2.095,0 -2.996,-0.894 -2.996,-3.002 V 86.811 83.809 h 545.831 v 3.002 z"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         id="g1099" />
-      <g
-         id="g1101" />
-      <g
-         id="g1103" />
-      <g
-         id="g1105" />
-      <g
-         id="g1107" />
-      <g
-         id="g1109" />
-      <g
-         id="g1111" />
-      <g
-         id="g1113" />
-      <g
-         id="g1115" />
-      <g
-         id="g1117" />
-      <g
-         id="g1119" />
-      <g
-         id="g1121" />
-      <g
-         id="g1123" />
-      <g
-         id="g1125" />
-      <g
-         id="g1127" />
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="111.507"
-       y="64.232811"
-       id="text949"><tspan
-         sodipodi:role="line"
-         id="tspan947"
-         x="111.507"
-         y="64.232811"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">Hello,world</tspan></text>
-    <g
-       id="g987"
-       transform="translate(-11.478634,-67.005729)">
-      <text
-         id="text949-6"
-         y="136.25891"
-         x="119.62345"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-           y="136.25891"
-           x="119.62345"
-           id="tspan947-1"
-           sodipodi:role="line">Input</tspan></text>
-      <rect
-         ry="0.67219442"
-         rx="0.75240988"
-         y="133.58672"
-         x="128.76941"
-         height="3.4395833"
-         width="15.478125"
-         id="rect971"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-    </g>
-    <g
-       id="g982"
-       transform="translate(-11.221166,-68.130209)">
-      <rect
-         ry="0.67219514"
-         rx="0.75240886"
-         y="140.03593"
-         x="128.28984"
-         height="4.2002602"
-         width="6.7468748"
-         id="rect977"
-         style="opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text975"
-         y="143.27707"
-         x="129.01744"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#f4f4f4;fill-opacity:1;stroke-width:0.26458332"
-           y="143.27707"
-           x="129.01744"
-           id="tspan973"
-           sodipodi:role="line">OK</tspan></text>
-    </g>
-    <g
-       id="g888-9"
-       transform="matrix(0.05665416,0,0,0.05665416,83.006567,60.646215)"
-       style="stroke-width:4.67014837">
-      <g
-         id="g827-6"
-         style="stroke-width:4.67014837">
-        <g
-           id="g825-6"
-           style="stroke-width:4.67014837">
-          <g
-             id="g823-0"
-             style="stroke-width:4.67014837">
-            <path
-               id="path815-0"
-               d="M 236.936,0 H 91.465 C 87.459,0 83.693,1.56 80.86,4.392 80.859,4.393 80.859,4.393 80.859,4.393 L 33.647,51.604 c -2.833,2.833 -4.393,6.6 -4.393,10.606 v 203.98 c 0,8.271 6.728,15 15,15 7.091,0 185.609,0 192.682,0 8.271,0 15,-6.729 15,-15 V 15 c 0,-8.271 -6.729,-15 -15,-15 z m -25,271.19 H 69.254 v -82.595 c 0,-2.757 2.243,-5 5,-5 h 132.682 c 2.757,0 5,2.243 5,5 z m 25,0 h -15 v -82.595 c 0,-8.271 -6.729,-15 -15,-15 H 74.254 c -8.271,0 -15,6.729 -15,15 v 82.595 h -15 c -2.757,0 -5,-2.243 -5,-5 V 62.211 c 0,-1.335 0.52,-2.591 1.464,-3.536 l 47.21,-47.21 C 88.873,10.521 90.13,10 91.465,10 h 145.471 c 2.757,0 5,2.243 5,5 v 251.19 0 c 0,2.757 -2.243,5 -5,5 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path817-0"
-               d="m 129.96,29.929 h -25.524 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.524 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 109.436 V 39.929 h 15.524 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path819-6"
-               d="m 173.448,29.929 h -25.524 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.524 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 152.924 V 39.929 h 15.524 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path821-1"
-               d="m 216.936,29.929 h -25.525 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.525 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 196.411 V 39.929 h 15.525 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-          </g>
-        </g>
-      </g>
-      <g
-         id="g829-9"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g831-2"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g833-1"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g835-2"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g837-7"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g839-9"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g841-8"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g843-1"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g845-7"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g847-3"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g849-2"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g851-3"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g853-9"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g855-8"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g857-6"
-         style="stroke-width:4.67014837" />
-    </g>
-    <rect
-       style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.15541553;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect1093-2"
-       width="3.4251835"
-       height="2.7713468"
-       x="95.852501"
-       y="66.932808"
-       rx="0.11300837"
-       ry="0.7756142" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.73894894;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect1093-2-3-3"
-       width="2.84165"
-       height="2.3576286"
-       x="138.0146"
-       y="67.113701"
-       rx="0.093755633"
-       ry="2.117661" />
-    <g
-       id="g888-9-4"
-       transform="matrix(0.05665416,0,0,0.05665416,143.36529,60.633145)"
-       style="stroke-width:4.67014837">
-      <g
-         id="g827-6-4"
-         style="stroke-width:4.67014837">
-        <g
-           id="g825-6-4"
-           style="stroke-width:4.67014837">
-          <g
-             id="g823-0-2"
-             style="stroke-width:4.67014837">
-            <path
-               id="path815-0-2"
-               d="M 236.936,0 H 91.465 C 87.459,0 83.693,1.56 80.86,4.392 80.859,4.393 80.859,4.393 80.859,4.393 L 33.647,51.604 c -2.833,2.833 -4.393,6.6 -4.393,10.606 v 203.98 c 0,8.271 6.728,15 15,15 7.091,0 185.609,0 192.682,0 8.271,0 15,-6.729 15,-15 V 15 c 0,-8.271 -6.729,-15 -15,-15 z m -25,271.19 H 69.254 v -82.595 c 0,-2.757 2.243,-5 5,-5 h 132.682 c 2.757,0 5,2.243 5,5 z m 25,0 h -15 v -82.595 c 0,-8.271 -6.729,-15 -15,-15 H 74.254 c -8.271,0 -15,6.729 -15,15 v 82.595 h -15 c -2.757,0 -5,-2.243 -5,-5 V 62.211 c 0,-1.335 0.52,-2.591 1.464,-3.536 l 47.21,-47.21 C 88.873,10.521 90.13,10 91.465,10 h 145.471 c 2.757,0 5,2.243 5,5 v 251.19 0 c 0,2.757 -2.243,5 -5,5 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path817-0-7"
-               d="m 129.96,29.929 h -25.524 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.524 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 109.436 V 39.929 h 15.524 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path819-6-3"
-               d="m 173.448,29.929 h -25.524 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.524 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 152.924 V 39.929 h 15.524 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path821-1-2"
-               d="m 216.936,29.929 h -25.525 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.525 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 196.411 V 39.929 h 15.525 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-          </g>
-        </g>
-      </g>
-      <g
-         id="g829-9-8"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g831-2-8"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g833-1-1"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g835-2-5"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g837-7-1"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g839-9-3"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g841-8-0"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g843-1-9"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g845-7-8"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g847-3-2"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g849-2-0"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g851-3-8"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g853-9-3"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g855-8-1"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g857-6-4"
-         style="stroke-width:4.67014837" />
-    </g>
-    <rect
-       style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.15541553;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect1093-2-1"
-       width="0.94471467"
-       height="4.4746022"
-       x="144.63507"
-       y="66.088287"
-       rx="0.11300837"
-       ry="0.77561432" />
-    <g
-       id="g1484">
-      <rect
-         transform="rotate(90)"
-         ry="1.069078"
-         rx="0.10748189"
-         y="-144.40062"
-         x="68.031433"
-         height="9.8992567"
-         width="0.57877195"
-         id="rect1046-9-1"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <rect
-         transform="rotate(45)"
-         ry="1.069078"
-         rx="0.1074819"
-         y="-54.572708"
-         x="151.14955"
-         height="4.5920415"
-         width="0.25470743"
-         id="rect1046-3-5-6"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <rect
-         transform="rotate(135)"
-         ry="1.069078"
-         rx="0.1074819"
-         y="-151.21991"
-         x="-54.773582"
-         height="4.5920415"
-         width="0.25470743"
-         id="rect1046-3-6-2-1"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-    </g>
-    <rect
-       style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.73894894;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect1093-2-3-3-2"
-       width="2.84165"
-       height="2.3576288"
-       x="99.981239"
-       y="67.054848"
-       rx="0.093755633"
-       ry="2.117661" />
-    <g
-       id="g1503"
-       transform="translate(0.52916667)">
-      <rect
-         transform="rotate(90)"
-         ry="1.069078"
-         rx="0.10748189"
-         y="-106.65598"
-         x="67.981628"
-         height="10.434501"
-         width="0.57877195"
-         id="rect1046-9"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <rect
-         transform="rotate(45)"
-         ry="1.069078"
-         rx="0.1074819"
-         y="-27.114578"
-         x="123.6207"
-         height="4.5920415"
-         width="0.25470743"
-         id="rect1046-3-5"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <rect
-         transform="rotate(135)"
-         ry="1.069078"
-         rx="0.1074819"
-         y="-123.69107"
-         x="-27.315453"
-         height="4.5920415"
-         width="0.25470743"
-         id="rect1046-3-6-2"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-    </g>
-    <g
-       id="g888-3"
-       transform="matrix(0.05665416,0,0,0.05665416,112.41059,34.324498)"
-       style="stroke-width:4.67014837">
-      <g
-         id="g827-2"
-         style="stroke-width:4.67014837">
-        <g
-           id="g825-7"
-           style="stroke-width:4.67014837">
-          <g
-             id="g823-6"
-             style="stroke-width:4.67014837">
-            <path
-               id="path815-3"
-               d="M 236.936,0 H 91.465 C 87.459,0 83.693,1.56 80.86,4.392 80.859,4.393 80.859,4.393 80.859,4.393 L 33.647,51.604 c -2.833,2.833 -4.393,6.6 -4.393,10.606 v 203.98 c 0,8.271 6.728,15 15,15 7.091,0 185.609,0 192.682,0 8.271,0 15,-6.729 15,-15 V 15 c 0,-8.271 -6.729,-15 -15,-15 z m -25,271.19 H 69.254 v -82.595 c 0,-2.757 2.243,-5 5,-5 h 132.682 c 2.757,0 5,2.243 5,5 z m 25,0 h -15 v -82.595 c 0,-8.271 -6.729,-15 -15,-15 H 74.254 c -8.271,0 -15,6.729 -15,15 v 82.595 h -15 c -2.757,0 -5,-2.243 -5,-5 V 62.211 c 0,-1.335 0.52,-2.591 1.464,-3.536 l 47.21,-47.21 C 88.873,10.521 90.13,10 91.465,10 h 145.471 c 2.757,0 5,2.243 5,5 v 251.19 0 c 0,2.757 -2.243,5 -5,5 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path817-6"
-               d="m 129.96,29.929 h -25.524 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.524 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 109.436 V 39.929 h 15.524 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path819-1"
-               d="m 173.448,29.929 h -25.524 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.524 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 152.924 V 39.929 h 15.524 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path821-5"
-               d="m 216.936,29.929 h -25.525 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.525 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 196.411 V 39.929 h 15.525 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-          </g>
-        </g>
-      </g>
-      <g
-         id="g829-2"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g831-4"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g833-3"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g835-7"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g837-9"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g839-4"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g841-7"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g843-7"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g845-2"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g847-7"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g849-0"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g851-6"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g853-3"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g855-6"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g857-1"
-         style="stroke-width:4.67014837" />
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#002700;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       x="104.19426"
-       y="111.57608"
-       id="text1516"><tspan
-         sodipodi:role="line"
-         id="tspan1514"
-         x="104.19426"
-         y="111.57608"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#002700;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">AutoConnect::load</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#002700;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       x="53.70327"
-       y="67.993149"
-       id="text1516-4"><tspan
-         sodipodi:role="line"
-         id="tspan1514-3"
-         x="53.70327"
-         y="67.993149"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#002700;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">AutoConnectAux</tspan><tspan
-         sodipodi:role="line"
-         x="53.70327"
-         y="71.961899"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#002700;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="tspan1536">::loadElement</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#002700;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       x="159.29454"
-       y="67.999352"
-       id="text1516-4-4"><tspan
-         sodipodi:role="line"
-         id="tspan1514-3-5"
-         x="159.29454"
-         y="67.999352"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#002700;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">AutoConnectAux</tspan><tspan
-         sodipodi:role="line"
-         x="159.29454"
-         y="71.968102"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#002700;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="tspan1536-1">::saveElement</tspan></text>
-    <rect
-       style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect1093-3"
-       width="4.487114"
-       height="2.1685081"
-       x="118.21754"
-       y="49.186954"
-       rx="0.14089312"
-       ry="0.43723083" />
-    <g
-       id="g1498"
-       transform="translate(-0.16225749)">
-      <rect
-         ry="1.069078"
-         rx="0.10748189"
-         y="50.580574"
-         x="120.13969"
-         height="5.1024733"
-         width="0.57877195"
-         id="rect1046-38"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <rect
-         transform="rotate(-45)"
-         ry="1.069078"
-         rx="0.1074819"
-         y="119.95757"
-         x="50.31118"
-         height="4.5920415"
-         width="0.25470743"
-         id="rect1046-3-2"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <rect
-         transform="rotate(45)"
-         ry="1.069078"
-         rx="0.1074819"
-         y="-50.381538"
-         x="119.75671"
-         height="4.5920415"
-         width="0.25470743"
-         id="rect1046-3-6-21"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#002700;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       x="92.995323"
-       y="32.187313"
-       id="text1516-47"><tspan
-         sodipodi:role="line"
-         id="tspan1514-31"
-         x="92.995323"
-         y="32.187313"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#002700;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">AutoConnectAux::saveElement</tspan></text>
-    <g
-       transform="translate(-0.16225749,36.803633)"
-       id="g1498-6">
-      <rect
-         ry="1.069078"
-         rx="0.10748189"
-         y="50.580574"
-         x="120.13969"
-         height="5.1024733"
-         width="0.57877195"
-         id="rect1046-38-5"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <rect
-         transform="rotate(-45)"
-         ry="1.069078"
-         rx="0.1074819"
-         y="119.95757"
-         x="50.31118"
-         height="4.5920415"
-         width="0.25470743"
-         id="rect1046-3-2-3"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <rect
-         transform="rotate(45)"
-         ry="1.069078"
-         rx="0.1074819"
-         y="-50.381538"
-         x="119.75671"
-         height="4.5920415"
-         width="0.25470743"
-         id="rect1046-3-6-21-0"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-    </g>
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/docs/images/ac_mqtt_setting.png b/lib/AutoConnect-master/docs/images/ac_mqtt_setting.png
deleted file mode 100644
index 632d673cd8703dc1547eb2e416f327015a898a81..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/ac_mqtt_setting.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/ac_objects.svg b/lib/AutoConnect-master/docs/images/ac_objects.svg
deleted file mode 100644
index 15b83b2025c2df81a0daa2fc303ef24073862663..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/images/ac_objects.svg
+++ /dev/null
@@ -1,1401 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="214.78053mm"
-   height="193.00659mm"
-   viewBox="0 0 214.78053 193.00659"
-   version="1.1"
-   id="svg8"
-   inkscape:version="0.92.1 r15371"
-   sodipodi:docname="ac_objects.svg">
-  <defs
-     id="defs2">
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path4764"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#800080;fill-opacity:1;fill-rule:evenodd;stroke:#800080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM-4"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4764-2"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM-4-9"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4764-2-8"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM-4-6"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4764-2-4"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM-4-9-3"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4764-2-8-7"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM-4-9-3-3"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4764-2-8-7-6"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM-4-9-3-3-6"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4764-2-8-7-6-5"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM-4-6-5"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4764-2-4-6"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM-4-6-5-9"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4764-2-4-6-0"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM-4-6-5-9-4"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4764-2-4-6-0-3"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM-4-6-5-9-4-9"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4764-2-4-6-0-3-0"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.9983453"
-     inkscape:cx="385.25708"
-     inkscape:cy="389.74632"
-     inkscape:document-units="mm"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:snap-global="true"
-     inkscape:snap-nodes="false"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     inkscape:window-width="1920"
-     inkscape:window-height="1001"
-     inkscape:window-x="2551"
-     inkscape:window-y="118"
-     inkscape:window-maximized="1" />
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="レイヤー 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(24.367215,-27.539182)">
-    <rect
-       style="fill:none;fill-opacity:1;stroke:#800080;stroke-width:0.79374999;stroke-miterlimit:4;stroke-dasharray:0.79375, 0.79375;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4509"
-       width="107.59807"
-       height="184.5126"
-       x="82.418373"
-       y="35.636295"
-       ry="3.2948685" />
-    <g
-       id="g4513">
-      <rect
-         y="39.512989"
-         x="86.018501"
-         height="176.70897"
-         width="99.979797"
-         id="rect4507"
-         style="fill:#dddddd;fill-opacity:1;stroke:#dddddd;stroke-width:0.56186873;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-      <image
-         width="99.27166"
-         height="176.53"
-         preserveAspectRatio="none"
-         xlink:href="data:image/png;base64,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
-PVQO/0kfPZYm94x8uVUnX3jpN/T5e9p6rayk8HOrZGW7k/ttn2VS0rWv7U/t0KZMp/RVtVZuKdKJ
-9L2qfdIl9/y9Wvbxds1Zs1fzJtSrYmXP86rv0s+BDLL/GAbh8XP5Wy47vE1VaVtUkJimRT/fpUV5
-IQXbz+ijE/v00t7rz1QLpsRJCqq1eZAfJUv0KPd+j+bdY5P93iQ54m2yStKEqYO6PXVSrKRWtXze
-50R4Bk6oYjQa86Hay1mvdp/1avd+mwp+vV/rU11alC1VhD9Lac/epT/keWQPb8wIdYQUunRG/gtJ
-Sp3St7BKHWoqlHuWU4tSpea54aVf//Yb6x3UZwpztH6uU5YrDdq9pUiHWiTVLNaz99SqMsOlF9Ym
-KzRZsrQ06/3v2M+BDK3/uO3ccYqVpPZmvX3TC70qKUtTRUqhlmU/psxEp+yTncp8tEzuVOe1pVfL
-oD/i5NH6si0qSAzPSK+EFAoFFTjbpI6ZyYq79R6FhRTq/M6FAFExRjcq5WvP1jM6X3FAL/R7vlm7
-v2rr/vLaG81CrX/MI/sPmlXzh8VyLUnSjGVOpayZryPt/ddSdfwztcqm9AxP99Lv5ZP6j17PR9sU
-7JB0t2OAdkSKkyVGUqhdgYgZ5ZHKQr3UGJRl8lRZFdKJY5sjdivfSj8HMvT+4/ZaNPd+xUkKfFkd
-sdt2YIHGSpVsekKulU5NLyvWoRbJMu3Hejq8m66ipVWSVXG2vhuNyuX97Rk1lqyWJNkXr1FBolXB
-s3v0XFmSpv/CqRnL58pz+Iw6htB+/8V2SXGKn9nnRGqypt45hIKAEWSMhuoefdgSku5MU0FpsXL7
-bjWMz9fONKekNjWf6jmYJluspAv1erGm7vqbWGKxMqdb+q/m6GH52yV7YrHc06TWpuo+m0k2651A
-dzt+ttTT60zmUq/Ov35Gdcuzwkc+U+tFSRNm6x/yBv6lFNbJSRH/u5V+DuQW+o/bJnXBXpXOmip1
-Nujtg3U3vXbVr4/pi98e056MiINn69R6uc8D2Q8bFJDkSCnutes8c6lLjvFSS8t+SdJPExIkBfXp
-8TJVXXsWb1NupvPmu5D78H3coFZZlD53S0R9Ni173DWkcoCRZMwu/26t3KxH/rVY7qRCbSvP12++
-aVZLh6Q742S/u/vzosHGSpUc7bmjXs3tC+WIz1Hteqve/TIoy2SnHpmZrH62ZYRV6+AX/6LMtGTZ
-1aYjx/fd2I6aw8pLXCiHe5ca7/Xq3S9Dirt3tuYkTJUu1mn3wdrwlXVa+W6d5j3lUvrj1fLOrJP/
-olWpKS45JkmhlgYFJjnlyNii2s5/0zOvd89eht5PSZdC6pDkmHVAO5d+oCOvbVbVLfV/AP2Wj/7Z
-NG99rbwRR2InJ4efxQflO7jihg1AfW39pEnLU13KXHJMXvdJ+b9WeIxZFDr3nl7tWdrwb9buRo9K
-U7JUufUt+fxN6piapnkzbdLFOlVVdj9rfTtwTi+kOOXO86o6sV6BTqscKS6lTh7iD1e+cr2a4VJp
-So4qtybL52+S7vUoM2HIIwoYMcboTFVSS6UWvlikik/Cv/ZtSrIcCclyTLFKl5t0pLZIWRsqI5bV
-9in/d5XyXQjKmuBRrjtH2clxavl4u1YeaZBklW2G64ZqDr3T/VlCtX+mg0dvOC3VF8uzvVJHvgrK
-Ms2jXHeW3NOsCp2rVsmmPpuHahcr6/Vq+dslR0qWch9yyTG+TX5fmXKeny/Pa5U60W6RdWLsd+in
-JN8e1ZwNSrFpynbnK/fRW+9/v/otH/2zKC4h/JqF/8XFBNV6zquKV3K0sGYQm4pqF+vnB2t1usPa
-PW7cWXJPs6ilsVJrthZHPC5oVsWGHJX4GtQe41SmO0fZSXHdY/HFxddWWQK/X6F1viYFZVP6QznK
-neuSvatBVXvLuh8F3O3QqkH1rVkVG/5RJb4mhSZ015cZL532eQe1nA2MROO6urquDl91VyWNu+W7
-py9J+vaLMOadf/1MVOplfI4O0RofiJKrXdK44Zs/jt2ZKgAAhhGqAAAYQqgCAGAIoQoAgCGEKgAA
-hhCqAAAYQqgCAGAIoQoAgCGEKgAAhhCqAAAYQqgCAGAIoQoAgCGEKgAAhoyqUH0w8QHF3BET7WZg
-hIq5I0YPJj4QtfoZnyNbtMcHxoZRFapbCl+W03ZftJuBEcppu09bCl+OWv2Mz5Et2uMDY8Oo+nuq
-AAAMCX9PFQCA0YlQBQDAEEIVAABDCFUAAAwhVAEAMIRQBQDAEEIVAABDCFUAAAwhVAEAMIRQBQDA
-EEIVAABDCFUAAAwhVAEAMIRQBQDAkGEOVf7sGwBgOA1v7jBTBQB8f40jVAEAGJUIVQAADCFUAQAw
-hFAFAMAQQhUAAEMIVQAADCFUAQAw5P8BaGFujcdln7kAAAAASUVORK5CYII=
-"
-         id="image4504"
-         x="86.372574"
-         y="39.602474" />
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#800080;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none"
-       x="-1.352039"
-       y="32.768837"
-       id="text4521"><tspan
-         sodipodi:role="line"
-         id="tspan4519"
-         x="-1.352039"
-         y="32.768837"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05555534px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#800080;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none">AutoConnectAux</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000080;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none"
-       x="-3.4879999"
-       y="72.430786"
-       id="text4521-9"><tspan
-         sodipodi:role="line"
-         id="tspan4541"
-         x="-3.4879999"
-         y="72.430786">AutoConnectText</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000080;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none"
-       x="-8.1182032"
-       y="96.282768"
-       id="text4521-9-8"><tspan
-         sodipodi:role="line"
-         id="tspan4561"
-         x="-8.1182032"
-         y="96.282768">AutoConnectInput</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000080;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="-18.370811"
-       y="138.95129"
-       id="text4521-9-0"><tspan
-         sodipodi:role="line"
-         id="tspan4571"
-         x="-18.370811"
-         y="138.95129">AutoConnectElement</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000080;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="-24.337711"
-       y="152.99744"
-       id="text4521-9-7"><tspan
-         sodipodi:role="line"
-         id="tspan4581"
-         x="-24.337711"
-         y="152.99744">AutoConnectCheckbox</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000080;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="-14.126451"
-       y="201.49644"
-       id="text4521-9-1"><tspan
-         sodipodi:role="line"
-         id="tspan4593"
-         x="-14.126451"
-         y="201.49644">AutoConnectSubmit</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000080;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="-8.3318024"
-       y="173.7346"
-       id="text4521-9-7-5"><tspan
-         sodipodi:role="line"
-         id="tspan4613"
-         x="-8.3318024"
-         y="173.7346">AutoConnectRadio</tspan></text>
-    <path
-       style="fill:none;stroke:#800080;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM)"
-       d="m -1.49919,34.533273 h 67.053288 l 14.355731,7.629026"
-       id="path4617"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;stroke:#000080;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-4)"
-       d="M -3.6694822,74.143969 H 65.37147 l 33.437303,-9.994928"
-       id="path4617-9"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;stroke:#000080;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-4-9)"
-       d="m 65.350339,74.141729 23.700513,2.983189"
-       id="path4617-9-1"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;stroke:#000080;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-4-6)"
-       d="M -8.1932283,98.243908 H 65.088073 l 25.884181,-5.092023"
-       id="path4617-9-4"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;stroke:#000080;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-4-9-3)"
-       d="m 65.187644,98.226117 25.903508,6.726623"
-       id="path4617-9-1-5"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;stroke:#000080;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-4-9-3-3)"
-       d="M 65.417074,98.317163 91.133183,119.05184"
-       id="path4617-9-1-5-3"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;stroke:#000080;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-4-9-3-3-6)"
-       d="M 65.435994,98.304931 91.749378,131.9711"
-       id="path4617-9-1-5-3-5"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;stroke:#000080;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-4-6-5)"
-       d="m -19.018615,140.90874 h 83.775633 l 23.822795,3.71571"
-       id="path4617-9-4-8"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;stroke:#000080;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-4-6-5-9)"
-       d="m -24.367215,155.22458 h 88.835401 l 24.57239,-2.46845"
-       id="path4617-9-4-8-6"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;stroke:#000080;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-4-6-5-9-4)"
-       d="M -8.689328,175.93275 H 64.966774 L 88.602171,164.84396"
-       id="path4617-9-4-8-6-1"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;stroke:#000080;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-4-6-5-9-4-9)"
-       d="m -14.248099,203.67012 h 79.465465 l 26.633776,2.59132"
-       id="path4617-9-4-8-6-1-0"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/docs/images/ac_param_flow.svg b/lib/AutoConnect-master/docs/images/ac_param_flow.svg
deleted file mode 100644
index 3f6bc8a66cb492842e3988f5a7acebae58d645b9..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/images/ac_param_flow.svg
+++ /dev/null
@@ -1,971 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="832.03271"
-   height="436.492"
-   viewBox="0 0 220.14199 115.4885"
-   version="1.1"
-   id="svg1212"
-   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
-   sodipodi:docname="ac_param_flow.svg"
-   inkscape:export-filename="C:\Users\masaki-owaki\Documents\Arduino\libraries\AutoConnect\mkdocs\images\ac_param_flow.png"
-   inkscape:export-xdpi="115.2"
-   inkscape:export-ydpi="115.2">
-  <defs
-     id="defs1206">
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker3715"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3713"
-         style="fill:#7f7f00;fill-opacity:1;fill-rule:evenodd;stroke:#7f7f00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:isstock="true"
-       style="overflow:visible"
-       id="marker6593"
-       refX="0"
-       refY="0"
-       orient="auto"
-       inkscape:stockid="Arrow2Mend"
-       inkscape:collect="always">
-      <path
-         transform="scale(-0.6)"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         id="path6591"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path1975"
-         style="fill:#ff7f00;fill-opacity:1;fill-rule:evenodd;stroke:#ff7f00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Send"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Send"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path1981"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="matrix(-0.3,0,0,-0.3,0.69,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2"
-         style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-2"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-6"
-         style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-2-6"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-6-8"
-         style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-2-4"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-6-0"
-         style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-2-4-6-6"
-       style="overflow:visible"
-       inkscape:isstock="true"
-       inkscape:collect="always">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-6-0-2-9"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-2-6-6"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-6-8-8"
-         style="fill:#7f7f00;fill-opacity:1;fill-rule:evenodd;stroke:#7f7f00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-0"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-9"
-         style="fill:#7f7f00;fill-opacity:1;fill-rule:evenodd;stroke:#7f7f00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker3715-8"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3713-3"
-         style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4"
-     inkscape:cx="343.2971"
-     inkscape:cy="197.13344"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:snap-global="false"
-     inkscape:window-width="1616"
-     inkscape:window-height="851"
-     inkscape:window-x="1667"
-     inkscape:window-y="103"
-     inkscape:window-maximized="0"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     units="px" />
-  <metadata
-     id="metadata1209">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="レイヤー 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-54.981799,-75.851144)">
-    <path
-       style="fill:none;stroke:#7f7f00;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.52916665, 0.52916665;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker3715)"
-       d="m 111.8047,94.091614 h -11.34039 v 78.933876 h 11.35111"
-       id="path3703"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-    <path
-       style="fill:none;stroke:#0000ff;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.52916667, 0.52916667;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker3715-8)"
-       d="m 194.71777,104.49173 -88.50483,0.0413 0.0668,14.53452 h 5.30483"
-       id="path3703-7"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-    <rect
-       style="opacity:0.98000004;vector-effect:none;fill:none;fill-opacity:1;stroke:#2f2f2f;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect1215"
-       width="182.27782"
-       height="112.94661"
-       x="92.779808"
-       y="75.91729"
-       rx="1.0996704"
-       ry="1.069078" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect6127-8"
-       width="37.797615"
-       height="19.074368"
-       x="153.76596"
-       y="132.42233"
-       rx="0.10748193"
-       ry="1.069078" />
-    <g
-       id="g2826"
-       transform="translate(18.421829,-13.844294)">
-      <text
-         id="text949-6"
-         y="119.13956"
-         x="39.723991"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-           y="119.13956"
-           x="39.723991"
-           id="tspan947-1"
-           sodipodi:role="line">Input</tspan></text>
-      <rect
-         ry="0.67219442"
-         rx="0.75240988"
-         y="116.46737"
-         x="48.869949"
-         height="3.4395833"
-         width="15.478125"
-         id="rect971"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-    </g>
-    <g
-       id="g1153"
-       transform="matrix(0.05237375,0,0,0.04755636,54.981799,95.989516)"
-       style="stroke-width:1.17960072">
-      <g
-         id="g1097"
-         style="stroke-width:1.17960072">
-        <path
-           id="path1095"
-           d="M 578.766,51.487 V 50.592 H 575.77 35.93 32.934 v 0.895 C 15.272,52.701 2.095,66.753 0,83.808 v 3.002 355.724 c 0,6.898 1.795,12.712 4.791,17.949 6.893,12.137 17.068,18.269 31.14,18.269 h 197.012 v 49.695 h -37.425 c -9.281,0 -16.467,7.218 -16.467,16.48 0,9.262 7.186,16.479 16.467,16.479 h 220.666 c 9.281,0 16.768,-7.218 16.768,-16.479 0,-9.263 -7.486,-16.48 -16.768,-16.48 H 378.759 V 478.752 H 575.77 c 14.078,0 24.343,-6.132 31.14,-18.269 3.085,-5.493 5.091,-11.37 5.091,-17.949 V 86.811 83.809 C 609.905,66.753 595.833,52.701 578.766,51.487 Z m 0,35.324 v 355.724 c 0,2.108 -0.895,3.002 -2.996,3.002 H 35.93 c -2.095,0 -2.996,-0.894 -2.996,-3.002 V 86.811 83.809 h 545.831 v 3.002 z"
-           inkscape:connector-curvature="0"
-           style="stroke-width:1.17960072" />
-      </g>
-      <g
-         id="g1099"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1101"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1103"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1105"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1107"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1109"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1111"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1113"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1115"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1117"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1119"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1121"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1123"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1125"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1127"
-         style="stroke-width:1.17960072" />
-    </g>
-    <g
-       id="g1877"
-       transform="translate(-61.780506,-30.859554)">
-      <rect
-         ry="0.67219514"
-         rx="0.75240886"
-         y="140.51062"
-         x="125.32892"
-         height="4.2002602"
-         width="14.163605"
-         id="rect977"
-         style="opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text975"
-         y="143.79285"
-         x="126.04444"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#f4f4f4;fill-opacity:1;stroke-width:0.26458332"
-           y="143.79285"
-           x="126.04444"
-           id="tspan973"
-           sodipodi:role="line">Submit</tspan></text>
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="60.579521"
-       y="96.507751"
-       id="text1881"><tspan
-         sodipodi:role="line"
-         id="tspan1879"
-         x="60.579521"
-         y="96.507751"
-         style="stroke-width:0.26458332">Web Browser</tspan></text>
-    <path
-       style="fill:none;stroke:#ff7f00;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
-       d="M 78.820918,111.56569 H 112.08571"
-       id="path1946"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="70.515366"
-       y="105.38773"
-       id="text949-6-9"><tspan
-         sodipodi:role="line"
-         id="tspan947-1-9"
-         x="70.515366"
-         y="105.38773"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">Value</tspan></text>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 150.17922,86.615905 V 185.54596"
-       id="path1883-6-0"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#0000ff;stroke-width:0.52916676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9)"
-       d="M 113.29213,119.12372 H 149.1118"
-       id="path1946-5"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="115.26271"
-       y="123.61919"
-       id="text1881-0-8"><tspan
-         sodipodi:role="line"
-         x="115.26271"
-         y="123.61919"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan1944-9">RequestArgument {</tspan><tspan
-         sodipodi:role="line"
-         x="115.26271"
-         y="127.58794"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3723">  String key;</tspan><tspan
-         sodipodi:role="line"
-         x="115.26271"
-         y="131.55669"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3725">  String value;</tspan><tspan
-         sodipodi:role="line"
-         x="115.26271"
-         y="135.52544"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3721">}</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="115.43201"
-       y="112.94273"
-       id="text1881-8-1"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2"
-         x="115.43201"
-         y="112.94273"
-         style="stroke-width:0.26458332">RequestHandler</tspan><tspan
-         sodipodi:role="line"
-         x="115.43201"
-         y="116.91148"
-         style="stroke-width:0.26458332"
-         id="tspan2508">::handle()</tspan></text>
-    <path
-       style="fill:none;stroke:#0000ff;stroke-width:0.52916682;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-2)"
-       d="m 150.54404,125.13896 h 43.78867"
-       id="path1946-5-8"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 239.85912,86.615905 V 185.54596"
-       id="path1883-6-0-9"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="155.18854"
-       y="114.73576"
-       id="text1881-8-1-4"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2-3"
-         x="155.18854"
-         y="114.73576"
-         style="stroke-width:0.26458332">INVOKE when</tspan><tspan
-         sodipodi:role="line"
-         x="155.18854"
-         y="118.70451"
-         style="stroke-width:0.26458332"
-         id="tspan6562"><tspan
-           style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start"
-           id="tspan4055">REQUEST_URL</tspan></tspan><tspan
-         sodipodi:role="line"
-         x="155.18854"
-         y="122.67326"
-         style="stroke-width:0.26458332"
-         id="tspan4053">= AutoConnectAux::uri</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:0.15451667;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       x="160.78702"
-       y="133.4962"
-       id="text1881-8-1-2"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2-39"
-         x="160.78702"
-         y="133.4962"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke:#ffffff;stroke-width:0.15451667;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">PageArgument</tspan></text>
-    <path
-       style="opacity:0.98000004;fill:none;stroke:#0000ff;stroke-width:0.52916682;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-2-6)"
-       d="M 239.46079,104.43767 H 196.74022"
-       id="path1946-5-8-3"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="241.53334"
-       y="101.93393"
-       id="text1881-8-2"><tspan
-         sodipodi:role="line"
-         x="241.53334"
-         y="101.93393"
-         style="stroke-width:0.26458332"
-         id="tspan6554">AutoConnectAux</tspan><tspan
-         sodipodi:role="line"
-         x="241.53334"
-         y="105.90268"
-         style="stroke-width:0.26458332"
-         id="tspan1087">::on(<tspan
-   style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;fill-opacity:1"
-   id="tspan4640">handler</tspan>)</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="160.9971"
-       y="137.82475"
-       id="text1881-8-26"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-1"
-         x="160.9971"
-         y="137.82475"
-         style="stroke-width:0.26458332">name</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="173.87938"
-       y="137.82475"
-       id="text1881-8-26-3"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-1-9"
-         x="173.87938"
-         y="137.82475"
-         style="stroke-width:0.26458332">value</tspan></text>
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680"
-       width="10.156241"
-       height="2.271791"
-       x="160.3961"
-       y="138.84807"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-0"
-       width="14.432554"
-       height="2.271791"
-       x="171.16446"
-       y="138.84807"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-6"
-       width="10.156241"
-       height="2.271791"
-       x="160.28645"
-       y="142.29257"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-0-6"
-       width="14.432554"
-       height="2.271791"
-       x="171.16446"
-       y="142.29257"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-6-4"
-       width="10.156241"
-       height="2.271791"
-       x="160.28645"
-       y="145.99748"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-0-6-4"
-       width="14.432554"
-       height="2.271791"
-       x="171.16446"
-       y="145.99748"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 159.1934,148.46406 1.36975,1.36975 h 24.82266 l 1.41987,-1.41987"
-       id="path4757"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="241.2636"
-       y="135.73485"
-       id="text1881-8-2-1"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-7-4"
-         x="241.2636"
-         y="135.73485"
-         style="stroke-width:0.26458332">Function</tspan><tspan
-         sodipodi:role="line"
-         x="241.2636"
-         y="139.7036"
-         style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;fill-opacity:1;stroke-width:0.26458332"
-         id="tspan9652"><tspan
-           style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start"
-           id="tspan9644">handler</tspan><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1"
-           id="tspan4780" /></tspan><tspan
-         sodipodi:role="line"
-         x="241.2636"
-         y="143.67235"
-         style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;fill-opacity:1;stroke-width:0.26458332"
-         id="tspan1150"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1"
-           id="tspan1152">(AutoConnectAux&amp;,</tspan></tspan><tspan
-         sodipodi:role="line"
-         x="241.2636"
-         y="147.6411"
-         style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;fill-opacity:1;stroke-width:0.26458332"
-         id="tspan1154"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1"
-           id="tspan1156"> PageArgument&amp;)</tspan></tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="210.52823"
-       y="102.73473"
-       id="text1881-8-1-7"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2-2"
-         x="210.52823"
-         y="102.73473"
-         style="stroke-width:0.26458332">REGISTER</tspan></text>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 195.56494,86.615896 V 185.54596"
-       id="path1883-6-0-7"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#0000ff;stroke-width:0.52916682;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-2-4)"
-       d="m 195.93639,136.73428 h 42.70969"
-       id="path1946-5-8-9"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="206.19867"
-       y="134.87068"
-       id="text1881-8-1-4-4"><tspan
-         sodipodi:role="line"
-         x="206.19867"
-         y="134.87068"
-         style="stroke-width:0.26458332"
-         id="tspan4053-5">INVOKE <tspan
-   style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;fill-opacity:1"
-   id="tspan6086">handler</tspan></tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="212.22472"
-       y="144.60533"
-       id="text1881-8-26-3-5"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-1-9-0"
-         x="212.22472"
-         y="144.60533"
-         style="stroke-width:0.26458332">value</tspan></text>
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-0-61"
-       width="14.432554"
-       height="2.271791"
-       x="209.5098"
-       y="145.99748"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect6127"
-       width="37.797615"
-       height="10.583333"
-       x="198.7722"
-       y="140.17085"
-       rx="0.10748193"
-       ry="1.069078" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:0.15927915;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       x="201.09819"
-       y="141.24283"
-       id="text1881-8-1-2-2"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2-39-5"
-         x="201.09819"
-         y="141.24283"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke:#ffffff;stroke-width:0.15927915;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">AutoConnectInput</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="184.38263"
-       y="156.75534"
-       id="text1881-8-26-3-9"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-1-9-1"
-         x="184.38263"
-         y="156.75534"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#cc0000;stroke-width:0.26458332">COPY</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="157.09714"
-       y="130.18697"
-       id="text1881-8-26-3-9-9"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-1-9-1-8"
-         x="157.09714"
-         y="130.18697"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#cc0000;stroke-width:0.26458332">CREATE</tspan></text>
-    <path
-       style="fill:none;stroke:#ff0000;stroke-width:0.52916676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-2-4-6-6)"
-       d="m 141.73901,128.87344 h 13.43877"
-       id="path1946-5-8-9-5-6"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#ff0000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6593)"
-       d="m 124.97478,133.76022 v 24.31099 h 79.01637 v -10.85323 l 4.38979,0.006"
-       id="path7867"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccccc" />
-    <path
-       style="opacity:0.98000004;fill:none;stroke:#7f7f00;stroke-width:0.52916682;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-2-6-6)"
-       d="M 239.46873,94.143461 H 114.14221"
-       id="path1946-5-8-3-9"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="210.52823"
-       y="91.895462"
-       id="text1881-8-1-7-2"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2-2-3"
-         x="210.52823"
-         y="91.895462"
-         style="stroke-width:0.26458332">REGISTER</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="241.12097"
-       y="91.289833"
-       id="text1881-8-2-15"><tspan
-         sodipodi:role="line"
-         x="241.12097"
-         y="91.289833"
-         style="stroke-width:0.26458332"
-         id="tspan6554-5">WebServer</tspan><tspan
-         sodipodi:role="line"
-         x="241.12097"
-         y="95.258583"
-         style="stroke-width:0.26458332"
-         id="tspan1147">::on(<tspan
-   style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808000;fill-opacity:1;stroke-width:0.26458332"
-   id="tspan4640-8">reqHandler</tspan>)</tspan></text>
-    <path
-       style="fill:none;stroke:#7f7f00;stroke-width:0.52916694;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-0)"
-       d="M 113.27178,173.04747 H 238.69805"
-       id="path1946-5-6"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="114.82241"
-       y="171.08884"
-       id="text1881-8-1-8"><tspan
-         sodipodi:role="line"
-         x="114.82241"
-         y="171.08884"
-         style="stroke-width:0.26458332"
-         id="tspan2510">INVOKE <tspan
-   style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#7f7f00;fill-opacity:1"
-   id="tspan1265">reqHandler</tspan></tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="241.2636"
-       y="171.99133"
-       id="text1881-8-2-1-3"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-7-4-9"
-         x="241.2636"
-         y="171.99133"
-         style="stroke-width:0.26458332">Function</tspan><tspan
-         sodipodi:role="line"
-         x="241.2636"
-         y="175.96008"
-         style="stroke-width:0.26458332"
-         id="tspan9646"><tspan
-           style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#7f7f00;fill-opacity:1;stroke-width:0.26458332"
-           id="tspan6559-1">reqHandler</tspan><tspan
-           id="tspan1141"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke-width:0.26458332">()</tspan></tspan></text>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 112.92475,86.615905 V 185.54596"
-       id="path1883-6"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.53467703px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="198.12886"
-       y="91.507591"
-       id="text1881-8-26-3-9-9-6"
-       transform="scale(0.70016009,1.4282448)"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-1-9-1-8-1"
-         x="198.12886"
-         y="91.507591"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.53467703px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#cc0000;stroke-width:0.26458332">}</tspan></text>
-    <image
-       y="173.93806"
-       x="76.439537"
-       id="image1260"
-       xlink:href="data:image/png;base64,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 w2oAAAAASUVORK5CYII= "
-       preserveAspectRatio="none"
-       height="17.401585"
-       width="21.616873"
-       style="stroke-width:2.44793344" />
-    <g
-       id="g1016">
-      <rect
-         ry="0.6681723"
-         rx="0.6754306"
-         y="80.024918"
-         x="241.73944"
-         height="5.1971722"
-         width="30.427082"
-         id="rect976"
-         style="opacity:0.98000004;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text1881-8-0"
-         y="83.806374"
-         x="250.95723"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke-width:0.26458332"
-           y="83.806374"
-           x="250.95723"
-           id="tspan1879-0-8"
-           sodipodi:role="line">Sketch</tspan></text>
-    </g>
-    <g
-       id="g1021">
-      <rect
-         ry="0.6681723"
-         rx="0.6754306"
-         y="80.024918"
-         x="198.23846"
-         height="5.1971722"
-         width="38.846073"
-         id="rect976-4"
-         style="opacity:0.98000004;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text1881-8-0-9"
-         y="83.773048"
-         x="202.8407"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke-width:0.26458332"
-           y="83.773048"
-           x="202.8407"
-           id="tspan1879-0-8-9"
-           sodipodi:role="line">AutoConnectAux</tspan></text>
-    </g>
-    <g
-       id="g1053">
-      <rect
-         ry="0.6681723"
-         rx="0.6754306"
-         y="80.024918"
-         x="152.92036"
-         height="5.1971722"
-         width="38.846073"
-         id="rect976-4-1"
-         style="opacity:0.98000004;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text1881-8-0-9-6"
-         y="83.773048"
-         x="160.96425"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke-width:0.26458332"
-           y="83.773048"
-           x="160.96425"
-           id="tspan1879-0-8-9-7"
-           sodipodi:role="line">AutoConnect</tspan></text>
-    </g>
-    <g
-       id="g1108">
-      <rect
-         ry="0.6681723"
-         rx="0.6754306"
-         y="79.441742"
-         x="113.52975"
-         height="6.3635254"
-         width="35.61591"
-         id="rect976-4-1-7"
-         style="opacity:0.98000004;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.13229164;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text1881-8-0-9-6-7"
-         y="82.258522"
-         x="114.9646"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222199px;line-height:2.3812499px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222199px;line-height:2.3812499px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke-width:0.26458332"
-           y="82.258522"
-           x="114.9646"
-           id="tspan1879-0-8-9-7-5"
-           sodipodi:role="line">ESP8266WebServer</tspan><tspan
-           id="tspan1082"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222199px;line-height:2.3812499px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke-width:0.26458332"
-           y="84.639771"
-           x="114.9646"
-           sodipodi:role="line">WebServer w/ESP32</tspan></text>
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="88.294197"
-       y="99.252266"
-       id="text1881-0"><tspan
-         sodipodi:role="line"
-         x="88.294197"
-         y="99.252266"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan1938">POST /{URL}</tspan><tspan
-         sodipodi:role="line"
-         x="88.294197"
-         y="103.22102"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan1942">Input=Value</tspan><tspan
-         sodipodi:role="line"
-         x="88.294197"
-         y="107.18977"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan1944">...</tspan></text>
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/docs/images/ac_upload_flow.svg b/lib/AutoConnect-master/docs/images/ac_upload_flow.svg
deleted file mode 100644
index e2b7fd33f3b764e8373656ecf6f458cbcdc44ff5..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/images/ac_upload_flow.svg
+++ /dev/null
@@ -1,973 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="832.03271"
-   height="436.492"
-   viewBox="0 0 220.14199 115.4885"
-   version="1.1"
-   id="svg1212"
-   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
-   sodipodi:docname="ac_upload_flow.svg"
-   inkscape:export-filename="C:\Users\masaki-owaki\Documents\Arduino\libraries\AutoConnect\mkdocs\images\ac_param_flow.png"
-   inkscape:export-xdpi="115.2"
-   inkscape:export-ydpi="115.2">
-  <defs
-     id="defs1206">
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker3715"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3713"
-         style="fill:#7f7f00;fill-opacity:1;fill-rule:evenodd;stroke:#7f7f00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:isstock="true"
-       style="overflow:visible"
-       id="marker6593"
-       refX="0"
-       refY="0"
-       orient="auto"
-       inkscape:stockid="Arrow2Mend"
-       inkscape:collect="always">
-      <path
-         transform="scale(-0.6)"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         id="path6591"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path1975"
-         style="fill:#ff7f00;fill-opacity:1;fill-rule:evenodd;stroke:#ff7f00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Send"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Send"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path1981"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="matrix(-0.3,0,0,-0.3,0.69,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2"
-         style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-2"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-6"
-         style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-2-6"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-6-8"
-         style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-2-4"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-6-0"
-         style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-2-4-6-6"
-       style="overflow:visible"
-       inkscape:isstock="true"
-       inkscape:collect="always">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-6-0-2-9"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-2-6-6"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-6-8-8"
-         style="fill:#7f7f00;fill-opacity:1;fill-rule:evenodd;stroke:#7f7f00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-0"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-9"
-         style="fill:#7f7f00;fill-opacity:1;fill-rule:evenodd;stroke:#7f7f00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker3715-8"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3713-3"
-         style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-2-6-6-6"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-6-8-8-4"
-         style="fill:#7f7f00;fill-opacity:1;fill-rule:evenodd;stroke:#7f7f00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker3715-4"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3713-37"
-         style="fill:#7f7f00;fill-opacity:1;fill-rule:evenodd;stroke:#7f7f00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4"
-     inkscape:cx="576.50905"
-     inkscape:cy="263.28958"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:snap-global="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1001"
-     inkscape:window-x="2551"
-     inkscape:window-y="-9"
-     inkscape:window-maximized="1"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     units="px" />
-  <metadata
-     id="metadata1209">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="レイヤー 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-54.981799,-75.851144)">
-    <path
-       style="fill:none;stroke:#0000ff;stroke-width:0.52916652;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.52916662, 0.52916662;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker3715-8)"
-       d="m 149.8027,96.729094 -43.59026,0.08012 0.0673,28.186016 h 5.45207"
-       id="path3703-7"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-    <path
-       style="fill:none;stroke:#7f7f00;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.52916664, 0.52916664;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker3715)"
-       d="m 111.8047,106.78303 h -11.34039 v 66.35563 h 11.35111"
-       id="path3703"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-    <path
-       style="opacity:0.98000004;fill:none;stroke:#0000ff;stroke-width:0.52916676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-2-6)"
-       d="m 195.19023,96.750973 h -43.8169"
-       id="path1946-5-8-3"
-       inkscape:connector-curvature="0" />
-    <rect
-       style="opacity:0.98000004;vector-effect:none;fill:none;fill-opacity:1;stroke:#2f2f2f;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect1215"
-       width="182.27782"
-       height="112.94661"
-       x="92.779808"
-       y="75.91729"
-       rx="1.0996704"
-       ry="1.069078" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect6127-8"
-       width="37.797615"
-       height="19.074368"
-       x="153.76596"
-       y="132.42233"
-       rx="0.10748193"
-       ry="1.069078" />
-    <g
-       id="g1430">
-      <text
-         id="text949-6"
-         y="105.29527"
-         x="58.145821"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-           y="105.29527"
-           x="58.145821"
-           id="tspan947-1"
-           sodipodi:role="line">Upload</tspan></text>
-      <rect
-         ry="0.67643666"
-         rx="0.63003838"
-         y="102.61222"
-         x="69.819984"
-         height="3.4612906"
-         width="12.960772"
-         id="rect971"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.24287613;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-    </g>
-    <g
-       id="g1153"
-       transform="matrix(0.05237375,0,0,0.04755636,54.981799,95.989516)"
-       style="stroke-width:1.17960072">
-      <g
-         id="g1097"
-         style="stroke-width:1.17960072">
-        <path
-           id="path1095"
-           d="M 578.766,51.487 V 50.592 H 575.77 35.93 32.934 v 0.895 C 15.272,52.701 2.095,66.753 0,83.808 v 3.002 355.724 c 0,6.898 1.795,12.712 4.791,17.949 6.893,12.137 17.068,18.269 31.14,18.269 h 197.012 v 49.695 h -37.425 c -9.281,0 -16.467,7.218 -16.467,16.48 0,9.262 7.186,16.479 16.467,16.479 h 220.666 c 9.281,0 16.768,-7.218 16.768,-16.479 0,-9.263 -7.486,-16.48 -16.768,-16.48 H 378.759 V 478.752 H 575.77 c 14.078,0 24.343,-6.132 31.14,-18.269 3.085,-5.493 5.091,-11.37 5.091,-17.949 V 86.811 83.809 C 609.905,66.753 595.833,52.701 578.766,51.487 Z m 0,35.324 v 355.724 c 0,2.108 -0.895,3.002 -2.996,3.002 H 35.93 c -2.095,0 -2.996,-0.894 -2.996,-3.002 V 86.811 83.809 h 545.831 v 3.002 z"
-           inkscape:connector-curvature="0"
-           style="stroke-width:1.17960072" />
-      </g>
-      <g
-         id="g1099"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1101"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1103"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1105"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1107"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1109"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1111"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1113"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1115"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1117"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1119"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1121"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1123"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1125"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1127"
-         style="stroke-width:1.17960072" />
-    </g>
-    <g
-       id="g1877"
-       transform="translate(-61.780506,-30.859554)">
-      <rect
-         ry="0.67219514"
-         rx="0.75240886"
-         y="140.51062"
-         x="125.32892"
-         height="4.2002602"
-         width="14.163605"
-         id="rect977"
-         style="opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text975"
-         y="143.79285"
-         x="126.04444"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#f4f4f4;fill-opacity:1;stroke-width:0.26458332"
-           y="143.79285"
-           x="126.04444"
-           id="tspan973"
-           sodipodi:role="line">Submit</tspan></text>
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="60.579521"
-       y="96.507751"
-       id="text1881"><tspan
-         sodipodi:role="line"
-         id="tspan1879"
-         x="60.579521"
-         y="96.507751"
-         style="stroke-width:0.26458332">Web Browser</tspan></text>
-    <path
-       style="fill:none;stroke:#ff7f00;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
-       d="M 78.820918,111.56564 H 111.72815"
-       id="path1946"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="73.161201"
-       y="105.38773"
-       id="text949-6-9"><tspan
-         sodipodi:role="line"
-         id="tspan947-1-9"
-         x="73.161201"
-         y="105.38773"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">File</tspan></text>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 150.17922,86.615905 V 185.54596"
-       id="path1883-6-0"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#0000ff;stroke-width:0.52916676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9)"
-       d="m 113.29213,124.97559 h 35.68103"
-       id="path1946-5"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="115.26271"
-       y="129.96916"
-       id="text1881-0-8"><tspan
-         sodipodi:role="line"
-         x="115.26271"
-         y="129.96916"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan1944-9">HTTPUploadStatus {</tspan><tspan
-         sodipodi:role="line"
-         x="115.26271"
-         y="133.93791"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3723">  String filename;</tspan><tspan
-         sodipodi:role="line"
-         x="115.26271"
-         y="137.90666"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3725">  String name;</tspan><tspan
-         sodipodi:role="line"
-         x="115.26271"
-         y="141.87541"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3721">}</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="115.43201"
-       y="118.76357"
-       id="text1881-8-1"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2"
-         x="115.43201"
-         y="118.76357"
-         style="stroke-width:0.26458332">RequestHandler</tspan><tspan
-         sodipodi:role="line"
-         x="115.43201"
-         y="122.73232"
-         style="stroke-width:0.26458332"
-         id="tspan2508">::upload()</tspan></text>
-    <path
-       style="fill:none;stroke:#0000ff;stroke-width:0.52916682;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-2)"
-       d="m 150.54404,125.13896 h 43.78867"
-       id="path1946-5-8"
-       inkscape:connector-curvature="0" />
-    <path
-       style="opacity:0.98000004;fill:none;stroke:#7f7f00;stroke-width:0.52916688;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-2-6-6-6)"
-       d="M 239.54653,96.719781 H 196.76871"
-       id="path1946-5-8-3-9-3"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 239.85912,87.752339 V 185.54596"
-       id="path1883-6-0-9"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:0.15451667;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       x="156.55374"
-       y="133.4962"
-       id="text1881-8-1-2"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2-39"
-         x="156.55374"
-         y="133.4962"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke:#ffffff;stroke-width:0.15451667;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">HTTPUploadStatus</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="160.9971"
-       y="137.82475"
-       id="text1881-8-26"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-1"
-         x="160.9971"
-         y="137.82475"
-         style="stroke-width:0.26458332">name</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="173.87938"
-       y="137.82475"
-       id="text1881-8-26-3"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-1-9"
-         x="173.87938"
-         y="137.82475"
-         style="stroke-width:0.26458332">value</tspan></text>
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680"
-       width="10.156241"
-       height="2.271791"
-       x="160.3961"
-       y="138.84807"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-0"
-       width="14.432554"
-       height="2.271791"
-       x="171.16446"
-       y="138.84807"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-6"
-       width="10.156241"
-       height="2.271791"
-       x="160.28645"
-       y="142.29257"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-0-6"
-       width="14.432554"
-       height="2.271791"
-       x="171.16446"
-       y="142.29257"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-6-4"
-       width="10.156241"
-       height="2.271791"
-       x="160.28645"
-       y="145.99748"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-0-6-4"
-       width="14.432554"
-       height="2.271791"
-       x="171.16446"
-       y="145.99748"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 159.1934,148.46406 1.36975,1.36975 h 24.82266 l 1.41987,-1.41987"
-       id="path4757"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="164.17282"
-       y="100.55426"
-       id="text1881-8-1-7"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2-2"
-         x="164.17282"
-         y="100.55426"
-         style="stroke-width:0.26458332">REGISTER</tspan></text>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 195.56495,87.284079 V 185.54597"
-       id="path1883-6-0-7"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="152.71837"
-       y="90.008881"
-       id="text1881-8-2"><tspan
-         sodipodi:role="line"
-         x="152.71837"
-         y="90.008881"
-         style="stroke-width:0.26458332"
-         id="tspan6554">AutoConnectAux</tspan><tspan
-         sodipodi:role="line"
-         x="152.71837"
-         y="93.977631"
-         style="stroke-width:0.26458332"
-         id="tspan1087">::onUpload(<tspan
-   style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;fill-opacity:1"
-   id="tspan4640">uplooadHandler</tspan>)</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="152.73938"
-       y="122.58165"
-       id="text1881-8-1-4-4"><tspan
-         sodipodi:role="line"
-         x="152.73938"
-         y="122.58165"
-         style="stroke-width:0.26458332"
-         id="tspan4053-5">INVOKE <tspan
-   style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;fill-opacity:1"
-   id="tspan6086">uploadHandler</tspan></tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="212.22472"
-       y="144.60533"
-       id="text1881-8-26-3-5"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-1-9-0"
-         x="212.22472"
-         y="144.60533"
-         style="stroke-width:0.26458332">value</tspan></text>
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-0-61"
-       width="14.432554"
-       height="2.271791"
-       x="209.5098"
-       y="145.99748"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect6127"
-       width="37.797615"
-       height="10.583333"
-       x="198.7722"
-       y="140.17085"
-       rx="0.10748193"
-       ry="1.069078" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:0.15927915;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       x="202.15651"
-       y="141.24283"
-       id="text1881-8-1-2-2"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2-39-5"
-         x="202.15651"
-         y="141.24283"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke:#ffffff;stroke-width:0.15927915;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">AutoConnectFile</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="184.38263"
-       y="156.75534"
-       id="text1881-8-26-3-9"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-1-9-1"
-         x="184.38263"
-         y="156.75534"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#cc0000;stroke-width:0.26458332">COPY</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="157.09714"
-       y="130.18697"
-       id="text1881-8-26-3-9-9"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-1-9-1-8"
-         x="157.09714"
-         y="130.18697"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#cc0000;stroke-width:0.26458332">COPY</tspan></text>
-    <path
-       style="fill:none;stroke:#ff0000;stroke-width:0.52916676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-2-4-6-6)"
-       d="m 147.75257,128.87129 h 7.76309"
-       id="path1946-5-8-9-5-6"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#ff0000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6593)"
-       d="m 124.97478,139.40629 0,18.66492 h 79.01637 v -10.85323 l 4.38979,0.006"
-       id="path7867"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccccc" />
-    <path
-       style="opacity:0.98000004;fill:none;stroke:#7f7f00;stroke-width:0.52916682;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-2-6-6)"
-       d="M 239.46873,106.8435 H 114.14221"
-       id="path1946-5-8-3-9"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="210.52823"
-       y="105.12463"
-       id="text1881-8-1-7-2"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2-2-3"
-         x="210.52823"
-         y="105.12463"
-         style="stroke-width:0.26458332">REGISTER</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="241.12097"
-       y="103.98985"
-       id="text1881-8-2-15"><tspan
-         sodipodi:role="line"
-         x="241.12097"
-         y="103.98985"
-         style="stroke-width:0.26458332"
-         id="tspan6554-5">WebServer</tspan><tspan
-         sodipodi:role="line"
-         x="241.12097"
-         y="107.9586"
-         style="stroke-width:0.26458332"
-         id="tspan1147">::on(<tspan
-   style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808000;fill-opacity:1;stroke-width:0.26458332"
-   id="tspan4640-8">reqHandler</tspan>)</tspan></text>
-    <path
-       style="fill:none;stroke:#7f7f00;stroke-width:0.52916694;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-0)"
-       d="M 113.27178,173.04747 H 238.69805"
-       id="path1946-5-6"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="114.82241"
-       y="171.08884"
-       id="text1881-8-1-8"><tspan
-         sodipodi:role="line"
-         x="114.82241"
-         y="171.08884"
-         style="stroke-width:0.26458332"
-         id="tspan2510">INVOKE <tspan
-   style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#7f7f00;fill-opacity:1"
-   id="tspan1265">reqHandler</tspan></tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="241.2636"
-       y="171.99133"
-       id="text1881-8-2-1-3"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-7-4-9"
-         x="241.2636"
-         y="171.99133"
-         style="stroke-width:0.26458332">Function</tspan><tspan
-         sodipodi:role="line"
-         x="241.2636"
-         y="175.96008"
-         style="stroke-width:0.26458332"
-         id="tspan9646"><tspan
-           style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#7f7f00;fill-opacity:1;stroke-width:0.26458332"
-           id="tspan6559-1">reqHandler</tspan><tspan
-           id="tspan1141"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke-width:0.26458332">()</tspan></tspan></text>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 112.92475,86.615905 V 185.54596"
-       id="path1883-6"
-       inkscape:connector-curvature="0" />
-    <image
-       y="173.93806"
-       x="76.439537"
-       id="image1260"
-       xlink:href="data:image/png;base64,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 w2oAAAAASUVORK5CYII= "
-       preserveAspectRatio="none"
-       height="17.401585"
-       width="21.616873"
-       style="stroke-width:2.44793344" />
-    <g
-       id="g1016">
-      <rect
-         ry="0.6681723"
-         rx="0.6754306"
-         y="80.024918"
-         x="241.73944"
-         height="5.1971722"
-         width="30.427082"
-         id="rect976"
-         style="opacity:0.98000004;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text1881-8-0"
-         y="83.806374"
-         x="250.95723"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke-width:0.26458332"
-           y="83.806374"
-           x="250.95723"
-           id="tspan1879-0-8"
-           sodipodi:role="line">Sketch</tspan></text>
-    </g>
-    <g
-       id="g1021"
-       transform="translate(0,31.750013)">
-      <rect
-         ry="0.6681723"
-         rx="0.6754306"
-         y="80.024918"
-         x="198.23846"
-         height="5.1971722"
-         width="38.846073"
-         id="rect976-4"
-         style="opacity:0.98000004;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text1881-8-0-9"
-         y="83.773048"
-         x="202.8407"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke-width:0.26458332"
-           y="83.773048"
-           x="202.8407"
-           id="tspan1879-0-8-9"
-           sodipodi:role="line">Built-in uploader</tspan></text>
-    </g>
-    <g
-       id="g1053">
-      <rect
-         ry="0.6681723"
-         rx="0.6754306"
-         y="80.024918"
-         x="152.92036"
-         height="5.1971722"
-         width="38.846073"
-         id="rect976-4-1"
-         style="opacity:0.98000004;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text1881-8-0-9-6"
-         y="83.773048"
-         x="160.96425"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke-width:0.26458332"
-           y="83.773048"
-           x="160.96425"
-           id="tspan1879-0-8-9-7"
-           sodipodi:role="line">AutoConnect</tspan></text>
-    </g>
-    <g
-       id="g1108">
-      <rect
-         ry="0.6681723"
-         rx="0.6754306"
-         y="79.441742"
-         x="113.52975"
-         height="6.3635254"
-         width="35.61591"
-         id="rect976-4-1-7"
-         style="opacity:0.98000004;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.13229164;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text1881-8-0-9-6-7"
-         y="82.258522"
-         x="114.9646"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222199px;line-height:2.3812499px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222199px;line-height:2.3812499px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke-width:0.26458332"
-           y="82.258522"
-           x="114.9646"
-           id="tspan1879-0-8-9-7-5"
-           sodipodi:role="line">ESP8266WebServer</tspan><tspan
-           id="tspan1082"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222199px;line-height:2.3812499px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke-width:0.26458332"
-           y="84.639771"
-           x="114.9646"
-           sodipodi:role="line">WebServer w/ESP32</tspan></text>
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="88.294197"
-       y="99.252266"
-       id="text1881-0"><tspan
-         sodipodi:role="line"
-         x="88.294197"
-         y="99.252266"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan1938">POST /{URL}</tspan><tspan
-         sodipodi:role="line"
-         x="88.294197"
-         y="103.22102"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan1944">Upload=File</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="212.28619"
-       y="94.823273"
-       id="text1881-8-1-7-2-6"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2-2-3-6"
-         x="212.28619"
-         y="94.823273"
-         style="stroke-width:0.26458332">CREATE</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="241.11345"
-       y="97.694588"
-       id="text1881-8-2-15-2"><tspan
-         sodipodi:role="line"
-         x="241.11345"
-         y="97.694588"
-         style="stroke-width:0.26458332"
-         id="tspan1147-8"><tspan
-           style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808000;fill-opacity:1;stroke-width:0.26458332"
-           id="tspan4640-8-5">AutoConnectFile</tspan></tspan></text>
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:currentColor;stroke-width:0.26458332"
-       d="m 210.07132,123.60631 h 1.5001 c 0.24939,0 0.45003,0.20064 0.45003,0.45004 v 3.15019 h 1.64448 c 0.33376,0 0.50065,0.40315 0.26439,0.63942 l -2.85206,2.85392 c -0.14063,0.14064 -0.37127,0.14064 -0.5119,0 l -2.85581,-2.85392 c -0.23626,-0.23627 -0.0694,-0.63942 0.26439,-0.63942 h 1.64636 v -3.15019 c 0,-0.2494 0.20063,-0.45004 0.45002,-0.45004 z m 5.55035,7.05045 v 2.10012 c 0,0.2494 -0.20064,0.45003 -0.45003,0.45003 h -8.70054 c -0.24939,0 -0.45003,-0.20063 -0.45003,-0.45003 v -2.10012 c 0,-0.2494 0.20064,-0.45003 0.45003,-0.45003 h 2.75079 l 0.91882,0.9188 c 0.37689,0.3769 0.98443,0.3769 1.36133,0 l 0.9188,-0.9188 h 2.7508 c 0.24939,0 0.45003,0.20063 0.45003,0.45003 z m -2.32514,1.6501 c 0,-0.20627 -0.16876,-0.37502 -0.37503,-0.37502 -0.20626,0 -0.37502,0.16875 -0.37502,0.37502 0,0.20626 0.16876,0.37502 0.37502,0.37502 0.20627,0 0.37503,-0.16876 0.37503,-0.37502 z m 1.20007,0 c 0,-0.20627 -0.16876,-0.37502 -0.37503,-0.37502 -0.20625,0 -0.37502,0.16875 -0.37502,0.37502 0,0.20626 0.16877,0.37502 0.37502,0.37502 0.20627,0 0.37503,-0.16876 0.37503,-0.37502 z"
-       id="path2" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="198.27641"
-       y="126.34801"
-       id="text1881-8-1-7-2-6-0"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2-2-3-6-1"
-         x="198.27641"
-         y="126.34801"
-         style="stroke-width:0.26458332">SAVE</tspan></text>
-    <path
-       style="fill:none;stroke:#7f7f00;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.52916662, 0.52916662;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker3715-4)"
-       d="m 224.37855,147.05779 h 24.81634 v 19.96616"
-       id="path3703-5"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/docs/images/acbutton.png b/lib/AutoConnect-master/docs/images/acbutton.png
deleted file mode 100644
index ded8efc4360d4373269d3f7e23dfc265488faa08..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/acbutton.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/accheckbox.png b/lib/AutoConnect-master/docs/images/accheckbox.png
deleted file mode 100644
index 10c410a086b5f11ab6836616cd4e5060ece2eae9..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/accheckbox.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/acelement.png b/lib/AutoConnect-master/docs/images/acelement.png
deleted file mode 100644
index 77849fc39dd87a8f01a1e1628c189e7e7853c25f..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/acelement.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/acfile.png b/lib/AutoConnect-master/docs/images/acfile.png
deleted file mode 100644
index 40fbb3b8636e48a49daf50c0f58e4e152d178b69..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/acfile.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/acinput.png b/lib/AutoConnect-master/docs/images/acinput.png
deleted file mode 100644
index 58eeeb7e5a06febddebf21f009535aa38acb42d1..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/acinput.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/acow.png b/lib/AutoConnect-master/docs/images/acow.png
deleted file mode 100644
index 7a239d9fdba380eaff19b6ff8e9f5f1b15b1f383..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/acow.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/acradio.png b/lib/AutoConnect-master/docs/images/acradio.png
deleted file mode 100644
index ea8fb0a3149a4628584022f1b876746710a9a943..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/acradio.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/acselect.png b/lib/AutoConnect-master/docs/images/acselect.png
deleted file mode 100644
index 97dc406d7dc7ddb2c1759f051b2bce6bc9dd9265..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/acselect.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/acsubmit.png b/lib/AutoConnect-master/docs/images/acsubmit.png
deleted file mode 100644
index bec987d78da875e0cd79621bfcee49b32cf7a008..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/acsubmit.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/actext.png b/lib/AutoConnect-master/docs/images/actext.png
deleted file mode 100644
index 76323727e02970603b639410d41c1a7cfc4e5564..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/actext.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/arduino-logo.svg b/lib/AutoConnect-master/docs/images/arduino-logo.svg
deleted file mode 100644
index 067d7a96ac63ec7b9eeaebb116ac79cc77439eaa..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/images/arduino-logo.svg
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg:svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   id="svg8"
-   version="1.1"
-   viewBox="0 0 190.78812 90.019508"
-   height="90.019508mm"
-   width="190.78812mm">
-  <svg:defs
-     id="defs2" />
-  <svg:metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </svg:metadata>
-  <svg:g
-     transform="translate(-10.346796,-89.855804)"
-     id="layer1">
-    <svg:g
-       transform="matrix(0.26458333,0,0,0.26458333,10.755441,89.855804)"
-       id="g4"
-       style="fill:none;stroke:#ffffff;stroke-width:60;stroke-opacity:1">
-      <svg:path
-         style="stroke:#ffffff;stroke-opacity:1"
-         id="path6"
-         d="m 174,30 a 145.54455,140 0 0 0 0,280 C 364,320 344,30 544,30 a 145.54455,140 0 0 1 0,280 C 354,320 374,30 174,30" />
-    </svg:g>
-    <svg:g
-       style="font-size:167px;font-family:sans-serif;text-anchor:middle;fill:#00979c;stroke:#ffffff;stroke-width:20;stroke-opacity:1"
-       transform="matrix(0.26458333,0,0,0.26458333,10.755441,92.501637)"
-       id="g8"
-       font-size="167">
-      <svg:g
-         style="stroke:#ffffff;stroke-opacity:1"
-         id="text10">
-        <svg:path
-           style="stroke:#ffffff;stroke-opacity:1"
-           id="path3075"
-           d="M 528.06885,194.67432 V 161.89404 H 495.5332 v -13.69922 h 32.53565 v -32.53564 h 13.8623 v 32.53564 h 32.53565 v 13.69922 h -32.53565 v 32.78028 z" />
-      </svg:g>
-      <svg:text
-         style="stroke:#ffffff;stroke-opacity:1"
-         id="text12"
-         dy="0"
-         y="218"
-         x="181">
-        <ndash />
-      </svg:text>
-    </svg:g>
-    <svg:g
-       transform="matrix(0.26458333,0,0,0.26458333,10.755441,89.855804)"
-       id="g14"
-       font-size="40"
-       style="font-size:40px;font-family:Arial;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-opacity:1">
-      <svg:g
-         style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
-         id="text16">
-        <svg:path
-           style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
-           id="path3072"
-           d="M 681.55078,29.285156 V 15.730469 h -5.15625 v -2.363281 h 13.00781 v 2.363281 h -5.19531 v 13.554687 z m 9.62891,0 V 13.367188 h 3.90625 l 4.02343,12.714843 3.88672,-12.714843 h 3.82813 v 15.917968 h -2.42188 V 15.925781 l -4.10156,13.359375 h -2.40234 l -4.27735,-13.554687 v 13.554687 z" />
-      </svg:g>
-    </svg:g>
-    <svg:g
-       style="font-size:167px;font-family:sans-serif;text-anchor:middle;fill:#00979c;stroke:#ffffff;stroke-width:20;stroke-opacity:1"
-       transform="matrix(0.26458333,0,0,0.26458333,-86.027691,89.995434)"
-       id="g8-1"
-       font-size="167">
-      <svg:g
-         id="text10-7"
-         style="font-size:197.21893311px;stroke:#ffffff;stroke-width:23.61903381;stroke-opacity:1"
-         transform="scale(1.5645974,0.63914206)">
-        <svg:path
-           id="path3078"
-           style="font-size:197.21893311px;stroke:#ffffff;stroke-width:23.61903381;stroke-opacity:1"
-           d="m 321.41756,266.30877 v -17.43 h 53.25297 v 17.43 z" />
-      </svg:g>
-      <svg:g
-         style="stroke:#ffffff;stroke-opacity:1"
-         id="text12-4" />
-    </svg:g>
-  </svg:g>
-</svg:svg>




diff --git a/lib/AutoConnect-master/docs/images/arrow_down.png b/lib/AutoConnect-master/docs/images/arrow_down.png
deleted file mode 100644
index c6d30a56ed7713f5f8cfb26200137b456b6ac417..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/arrow_down.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/arrow_right.png b/lib/AutoConnect-master/docs/images/arrow_right.png
deleted file mode 100644
index 8b7189e170ca302ff12a8e8419f6639c2911a006..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/arrow_right.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/arrow_right.svg b/lib/AutoConnect-master/docs/images/arrow_right.svg
deleted file mode 100644
index c1ed92698041928737bcdf8b8e3f11e0ec79bf19..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/images/arrow_right.svg
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="210mm"
-   height="297mm"
-   viewBox="0 0 210 297"
-   version="1.1"
-   id="svg8"
-   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
-   sodipodi:docname="arrow_right.svg">
-  <defs
-     id="defs2" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.35"
-     inkscape:cx="581.66557"
-     inkscape:cy="622.10349"
-     inkscape:document-units="mm"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1440"
-     inkscape:window-height="810"
-     inkscape:window-x="1554"
-     inkscape:window-y="196"
-     inkscape:window-maximized="0" />
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="レイヤー 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <g
-       style="opacity:1;fill:#8b8b8b;fill-opacity:1"
-       id="g842"
-       transform="matrix(0.26458333,0,0,0.26458333,22.461236,73.823972)">
-      <g
-         id="g830"
-         style="fill:#8b8b8b;fill-opacity:1">
-        <path
-           id="path828"
-           style="fill:#8b8b8b;fill-opacity:1"
-           d="M 499.436,225.905 295.858,24.536 C 279.235,8.098 252.43,8.231 235.992,24.864 219.554,41.477 219.698,68.282 236.321,84.72 L 366.677,213.678 H 42.329 C 18.956,213.679 0,232.624 0,255.997 0,279.38 18.956,298.325 42.329,298.325 H 366.676 L 236.321,427.273 c -16.623,16.438 -16.767,43.254 -0.329,59.867 16.438,16.622 43.243,16.766 59.866,0.328 L 499.436,286.1 C 507.48,278.137 512,267.308 512,255.998 c 0,-11.313 -4.521,-22.132 -12.564,-30.093 z"
-           class="st0"
-           inkscape:connector-curvature="0" />
-      </g>
-    </g>
-  </g>
-  <style
-     id="style826"
-     type="text/css">
-	.st0{fill:#4B4B4B;}
-</style>
-</svg>




diff --git a/lib/AutoConnect-master/docs/images/aux_fsbrowser.gif b/lib/AutoConnect-master/docs/images/aux_fsbrowser.gif
deleted file mode 100644
index c8b4c64c97c58cad716fcc1edf9392fb83a9107a..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/aux_fsbrowser.gif and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/aux_json.png b/lib/AutoConnect-master/docs/images/aux_json.png
deleted file mode 100644
index 8828c54fec8ce42ee21e5c78400650672b04d671..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/aux_json.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/aux_menu.gif b/lib/AutoConnect-master/docs/images/aux_menu.gif
deleted file mode 100644
index 7e8de5f8f308af67fb1242855554b036d5a69c89..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/aux_menu.gif and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/aux_ov.gif b/lib/AutoConnect-master/docs/images/aux_ov.gif
deleted file mode 100644
index e7377a0293984f46b98a174531c98e93239dadfc..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/aux_ov.gif and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/aux_pattern.gif b/lib/AutoConnect-master/docs/images/aux_pattern.gif
deleted file mode 100644
index b32660eff07ff4bba523bfa1165a538bef7f84ea..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/aux_pattern.gif and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/beforeafter.png b/lib/AutoConnect-master/docs/images/beforeafter.png
deleted file mode 100644
index f0bede9e590f3528c60ce18ef9c768f67405e7e4..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/beforeafter.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/begin.png b/lib/AutoConnect-master/docs/images/begin.png
deleted file mode 100644
index 39b11d5581288d948acbba9eb58b23565f59538e..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/begin.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/config_ssid.png b/lib/AutoConnect-master/docs/images/config_ssid.png
deleted file mode 100644
index 2d33a9f17b95e74aa7803c9595c6fff7789a2590..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/config_ssid.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/confignew.png b/lib/AutoConnect-master/docs/images/confignew.png
deleted file mode 100644
index 4d3744e369dca1d0a7c286a965aa47b2ffe6ec40..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/confignew.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/cp.gif b/lib/AutoConnect-master/docs/images/cp.gif
deleted file mode 100644
index dc5ba9e679a8de0fcdb13ccbfa8298c6c83546f6..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/cp.gif and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/declare.png b/lib/AutoConnect-master/docs/images/declare.png
deleted file mode 100644
index 81ed111287f62ec7285e4867b6875cf33bf8f936..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/declare.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/espshaker.gif b/lib/AutoConnect-master/docs/images/espshaker.gif
deleted file mode 100644
index f2be8e591349e2a5bb65e3519a9c3cf708194977..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/espshaker.gif and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/established.png b/lib/AutoConnect-master/docs/images/established.png
deleted file mode 100644
index baeec2e88c52fe1d8698bc4c3e4054c8a612a267..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/established.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/fsbmenu.png b/lib/AutoConnect-master/docs/images/fsbmenu.png
deleted file mode 100644
index 94bc6f544dadf8b5e7e76b67f370520dd76b100b..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/fsbmenu.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/fsbmenu_expand.png b/lib/AutoConnect-master/docs/images/fsbmenu_expand.png
deleted file mode 100644
index 4609c0c60737dcb0f08b1cf58958d5e2e48c4c95..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/fsbmenu_expand.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/fsbrowser_ba.svg b/lib/AutoConnect-master/docs/images/fsbrowser_ba.svg
deleted file mode 100644
index 55dc93c0b0425ab4dbd34047350046fcd29e34ea..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/images/fsbrowser_ba.svg
+++ /dev/null
@@ -1,1406 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="1274.7577"
-   height="890.88202"
-   viewBox="0 0 337.27964 235.71254"
-   version="1.1"
-   id="svg8"
-   inkscape:version="0.92.1 r15371"
-   sodipodi:docname="fsbrowser_ba.svg">
-  <defs
-     id="defs2">
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="marker5127"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5125"
-         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
-         style="fill-rule:evenodd;stroke:#3b7686;stroke-width:1pt;stroke-opacity:0.7372549;fill:#3b7686;fill-opacity:0.7372549"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       style="overflow:visible"
-       id="DistanceStart"
-       refX="0.0"
-       refY="0.0"
-       orient="auto"
-       inkscape:stockid="DistanceStart"
-       inkscape:isstock="true">
-      <g
-         id="g2300"
-         style="stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1">
-        <path
-           style="fill:#000000;stroke:#000000;stroke-width:1.15;stroke-linecap:square;stroke-opacity:1;fill-opacity:1"
-           d="M 0,0 L 2,0"
-           id="path2306" />
-        <path
-           style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-opacity:1;fill-opacity:1"
-           d="M 0,0 L 13,4 L 9,0 13,-4 L 0,0 z "
-           id="path2302" />
-        <path
-           style="fill:#000000;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-opacity:1;fill-opacity:1"
-           d="M 0,-4 L 0,40"
-           id="path2304" />
-      </g>
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Sstart"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="marker5118"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5116"
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         transform="scale(0.3) translate(-2.3,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Send"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="marker5114"
-       style="overflow:visible;"
-       inkscape:isstock="true">
-      <path
-         id="path5112"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
-         transform="scale(0.2) rotate(180) translate(6,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Sstart"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Sstart"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path4812"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
-         transform="scale(0.2) translate(6,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Sstart"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="marker5108"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5106"
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         transform="scale(0.3) translate(-2.3,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="marker5102"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5100"
-         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
-         style="fill-rule:evenodd;stroke:#786827;stroke-width:1pt;stroke-opacity:0.45098039;fill:#786827;fill-opacity:0.45098039"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutS"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="TriangleOutS"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path4948"
-         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
-         style="fill-rule:evenodd;stroke:#786827;stroke-width:1pt;stroke-opacity:0.45098039;fill:#786827;fill-opacity:0.45098039"
-         transform="scale(0.2)" />
-    </marker>
-    <marker
-       inkscape:stockid="ExperimentalArrow"
-       orient="auto-start-reverse"
-       refY="3.0"
-       refX="5.0"
-       id="ExperimentalArrow"
-       inkscape:isstock="true">
-      <path
-         id="path5053"
-         d="m 10,3 -10,3 0,-6 z"
-         style="fill:context-stroke;stroke:#786827;stroke-opacity:0.45098039" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleInS"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="TriangleInS"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path4939"
-         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
-         style="fill-rule:evenodd;stroke:#786827;stroke-width:1pt;stroke-opacity:0.45098039;fill:#786827;fill-opacity:0.45098039"
-         transform="scale(-0.2)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="marker5092"
-       style="overflow:visible;"
-       inkscape:isstock="true">
-      <path
-         id="path5090"
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#786827;stroke-opacity:0.45098039;fill:#786827;fill-opacity:0.45098039"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         transform="scale(0.6) rotate(180) translate(0,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Sstart"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow2Sstart"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path4830"
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#786827;stroke-opacity:0.45098039;fill:#786827;fill-opacity:0.45098039"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         transform="scale(0.3) translate(-2.3,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mend"
-       style="overflow:visible;"
-       inkscape:isstock="true">
-      <path
-         id="path4809"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#786827;stroke-width:1pt;stroke-opacity:0.45098039;fill:#786827;fill-opacity:0.45098039"
-         transform="scale(0.4) rotate(180) translate(10,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Send"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Send"
-       style="overflow:visible;"
-       inkscape:isstock="true">
-      <path
-         id="path4815"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#786827;stroke-width:1pt;stroke-opacity:0.45098039;fill:#786827;fill-opacity:0.45098039"
-         transform="scale(0.2) rotate(180) translate(6,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="TriangleOutM"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path4945"
-         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
-         style="fill-rule:evenodd;stroke:#786827;stroke-width:1pt;stroke-opacity:0.45098039;fill:#786827;fill-opacity:0.45098039"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="EmptyTriangleOutM"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="EmptyTriangleOutM"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path4963"
-         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
-         style="fill-rule:evenodd;fill:#786827;stroke:#786827;stroke-width:1pt;stroke-opacity:0.45098039;fill-opacity:0.45098039"
-         transform="scale(0.4) translate(-4.5,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Mstart"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mstart"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path4806"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#c8ab37;stroke-width:1pt;stroke-opacity:0.45098039;fill:#c8ab37;fill-opacity:0.45098039"
-         transform="scale(0.4) translate(10,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="marker5076"
-       style="overflow:visible;"
-       inkscape:isstock="true">
-      <path
-         id="path5074"
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#c8ab37;stroke-opacity:0.45098039;fill:#c8ab37;fill-opacity:0.45098039"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         transform="scale(0.6) rotate(180) translate(0,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="marker5072"
-       style="overflow:visible;"
-       inkscape:isstock="true">
-      <path
-         id="path5070"
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#c8ab37;stroke-opacity:0.45098039;fill:#c8ab37;fill-opacity:0.45098039"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         transform="scale(0.6) rotate(180) translate(0,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="marker5068"
-       style="overflow:visible;"
-       inkscape:isstock="true">
-      <path
-         id="path5066"
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#c8ab37;stroke-opacity:0.45098039;fill:#c8ab37;fill-opacity:0.45098039"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         transform="scale(0.6) rotate(180) translate(0,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Lend"
-       style="overflow:visible;"
-       inkscape:isstock="true">
-      <path
-         id="path4803"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#c8ab37;stroke-width:1pt;stroke-opacity:0.45098039;fill:#c8ab37;fill-opacity:0.45098039"
-         transform="scale(0.8) rotate(180) translate(12.5,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow2Mend"
-       style="overflow:visible;"
-       inkscape:isstock="true">
-      <path
-         id="path4827"
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#c8ab37;stroke-opacity:0.45098039;fill:#c8ab37;fill-opacity:0.45098039"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         transform="scale(0.6) rotate(180) translate(0,0)" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4142136"
-     inkscape:cx="823.12142"
-     inkscape:cy="217.4658"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer2"
-     showgrid="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1001"
-     inkscape:window-x="2551"
-     inkscape:window-y="-9"
-     inkscape:window-maximized="1"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     inkscape:snap-global="false"
-     units="px" />
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="grid"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-3.0458242,-83.924968)"
-     sodipodi:insensitive="true">
-    <path
-       inkscape:connector-curvature="0"
-       d="M 4.0222719,90.747667 V 317.376 M 9.3139389,90.747667 V 317.376 M 14.605605,90.747667 V 317.376 M 19.897272,90.747667 V 317.376 M 25.188939,90.747667 V 317.376 M 30.480605,90.747667 V 317.376 M 35.772272,90.747667 V 317.376 M 41.063939,90.747667 V 317.376 M 46.355605,90.747667 V 317.376 M 51.647272,90.747667 V 317.376 M 56.938939,90.747667 V 317.376 M 62.230605,90.747667 V 317.376 M 67.522275,90.747667 V 317.376 M 72.813939,90.747667 V 317.376 M 78.105608,90.747667 V 317.376 M 83.397275,90.747667 V 317.376 M 88.688939,90.747667 V 317.376 M 93.980606,90.747667 V 317.376 M 99.272276,90.747667 V 317.376 M 104.56393,90.747667 V 317.376 M 109.85559,90.747667 V 317.376 M 115.14726,90.747667 V 317.376 M 120.43893,90.747667 V 317.376 M 125.73059,90.747667 V 317.376 M 131.02227,90.747667 V 317.376 M 136.31394,90.747667 V 317.376 M 141.6056,90.747667 V 317.376 M 146.89727,90.747667 V 317.376 M 152.18894,90.747667 V 317.376 M 157.4806,90.747667 V 317.376 M 162.77227,90.747667 V 317.376 M 4.0222719,90.747667 H 167.79056 M 4.0222719,96.039327 H 167.79056 M 4.0222719,101.331 H 167.79056 M 4.0222719,106.62267 H 167.79056 M 4.0222719,111.91433 H 167.79056 M 4.0222719,117.206 H 167.79056 M 4.0222719,122.49767 H 167.79056 M 4.0222719,127.78933 H 167.79056 M 4.0222719,133.081 H 167.79056 M 4.0222719,138.37267 H 167.79056 M 4.0222719,143.66433 H 167.79056 M 4.0222719,148.956 H 167.79056 M 4.0222719,154.24767 H 167.79056 M 4.0222719,159.53934 H 167.79056 M 4.0222719,164.831 H 167.79056 M 4.0222719,170.12267 H 167.79056 M 4.0222719,175.41434 H 167.79056 M 4.0222719,180.706 H 167.79056 M 4.0222719,185.99767 H 167.79056 M 4.0222719,191.28934 H 167.79056 M 4.0222719,196.581 H 167.79056 M 4.0222719,201.87267 H 167.79056 M 4.0222719,207.16434 H 167.79056 M 4.0222719,212.456 H 167.79056 M 4.0222719,217.74767 H 167.79056 M 4.0222719,223.03934 H 167.79056 M 4.0222719,228.331 H 167.79056 M 4.0222719,233.62267 H 167.79056 M 4.0222719,238.91434 H 167.79056 M 4.0222719,244.206 H 167.79056 M 4.0222719,249.49767 H 167.79056 M 4.0222719,254.78934 H 167.79056 M 4.0222719,260.081 H 167.79056 M 4.0222719,265.37267 H 167.79056 M 4.0222719,270.66434 H 167.79056 M 4.0222719,275.956 H 167.79056 M 4.0222719,281.24767 H 167.79056 M 4.0222719,286.53934 H 167.79056 M 4.0222719,291.831 H 167.79056 M 4.0222719,297.12267 H 167.79056 M 4.0222719,302.41434 H 167.79056 M 4.0222719,307.706 H 167.79056 M 4.0222719,312.99767 H 167.79056"
-       style="fill:none;stroke:#000000;stroke-width:0.0264583px"
-       id="path3328" />
-    <path
-       inkscape:connector-curvature="0"
-       d="M 176.55719,90.747667 V 317.376 M 181.84886,90.747667 V 317.376 M 187.14052,90.747667 V 317.376 M 192.43219,90.747667 V 317.376 M 197.72386,90.747667 V 317.376 M 203.01552,90.747667 V 317.376 M 208.30719,90.747667 V 317.376 M 213.59886,90.747667 V 317.376 M 218.89052,90.747667 V 317.376 M 224.18219,90.747667 V 317.376 M 229.47386,90.747667 V 317.376 M 234.76552,90.747667 V 317.376 M 240.05719,90.747667 V 317.376 M 245.34886,90.747667 V 317.376 M 250.64053,90.747667 V 317.376 M 255.93219,90.747667 V 317.376 M 261.22386,90.747667 V 317.376 M 266.51553,90.747667 V 317.376 M 271.8072,90.747667 V 317.376 M 277.09885,90.747667 V 317.376 M 282.39051,90.747667 V 317.376 M 287.68218,90.747667 V 317.376 M 292.97385,90.747667 V 317.376 M 298.26551,90.747667 V 317.376 M 303.55719,90.747667 V 317.376 M 308.84886,90.747667 V 317.376 M 314.14052,90.747667 V 317.376 M 319.43219,90.747667 V 317.376 M 324.72386,90.747667 V 317.376 M 330.01552,90.747667 V 317.376 M 335.30719,90.747667 V 317.376 m -158.75,-226.628333 h 163.76829 m -163.76829,5.29166 H 340.32548 M 176.55719,101.331 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29166 H 340.32548 M 176.55719,117.206 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29166 H 340.32548 M 176.55719,133.081 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29166 H 340.32548 M 176.55719,148.956 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29167 H 340.32548 M 176.55719,164.831 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29167 H 340.32548 M 176.55719,180.706 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29167 H 340.32548 M 176.55719,196.581 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29167 H 340.32548 M 176.55719,212.456 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29167 H 340.32548 M 176.55719,228.331 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29167 H 340.32548 M 176.55719,244.206 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29167 H 340.32548 M 176.55719,260.081 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29167 H 340.32548 M 176.55719,275.956 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29167 H 340.32548 M 176.55719,291.831 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29167 H 340.32548 M 176.55719,307.706 h 163.76829 m -163.76829,5.29167 h 163.76829"
-       style="fill:none;stroke:#000000;stroke-width:0.0264583px"
-       id="path3328-7" />
-  </g>
-  <g
-     inkscape:groupmode="layer"
-     id="layer2"
-     inkscape:label="code"
-     transform="translate(-3.0458242,-83.924968)">
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="51.499252"
-       y="81.459076"
-       id="text844"><tspan
-         sodipodi:role="line"
-         id="tspan842"
-         x="51.499252"
-         y="84.355728"
-         style="stroke-width:0.26458332" /></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="4.0090427"
-       y="93.042824"
-       id="text924"><tspan
-         sodipodi:role="line"
-         id="tspan922"
-         x="4.0090427"
-         y="93.042824"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"><tspan
-   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff6600"
-   id="tspan3244">ESP8266WebServer</tspan> server(80);</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="97.153351"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3224" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="101.1221"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3226" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="105.09085"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3228" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="109.0596"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3230" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="113.02835"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3232" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="116.9971"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan3234">//holds the current upload</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="121.10763"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3236"><tspan
-   style="fill:#ff6600"
-   id="tspan3306">File</tspan> fsUploadFile;</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="125.21815"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3238" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="129.1869"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3240" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="133.15565"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan3242">//SERVER INIT</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="137.26619"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan926">//list directory</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="141.37671"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan928">server.<tspan
-   style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff6600"
-   id="tspan1002">on</tspan>(&quot;<tspan
-   style="fill:#003399"
-   id="tspan1004">/list</tspan>&quot;, <tspan
-   style="fill:#3366cc"
-   id="tspan1006">HTTP_GET</tspan>, handleFileList);</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="145.48724"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan930">//load editor</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="149.59776"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan932">server.<tspan
-   style="fill:#ff6600"
-   id="tspan1020">on</tspan>(&quot;/edit&quot;, <tspan
-   style="fill:#3366cc"
-   id="tspan1010">HTTP_GET</tspan>, []() {</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="153.7083"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan934">  if (!handleFileRead(&quot;<tspan
-   style="fill:#003399"
-   id="tspan1012">/edit.htm</tspan>&quot;)) {</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="157.81883"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan936">    server.<tspan
-   style="fill:#ff6600"
-   id="tspan1018">send</tspan>(404, &quot;<tspan
-   style="fill:#003399"
-   id="tspan1016">text/plain</tspan>&quot;, &quot;<tspan
-   style="fill:#003399"
-   id="tspan1014">FileNotFound</tspan>&quot;);</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="161.92935"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan938">  }</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="166.03989"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan940">});</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="170.15041"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan942">//create file</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="174.26094"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan944">server.<tspan
-   style="fill:#ff6600"
-   id="tspan1022">on</tspan>(&quot;<tspan
-   style="fill:#003399"
-   id="tspan1072">/edit</tspan>&quot;, <tspan
-   style="fill:#3366cc"
-   id="tspan1074">HTTP_PUT</tspan>, handleFileCreate);</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="178.37146"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan946">//delete file</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="182.48199"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan948">server.<tspan
-   style="fill:#ff6600"
-   id="tspan1024">on</tspan>(&quot;<tspan
-   style="fill:#003399"
-   id="tspan1070">/edit</tspan>&quot;, <tspan
-   style="fill:#3366cc"
-   id="tspan1076">HTTP_DELETE</tspan>, handleFileDelete);</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="186.59253"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan950">//first callback is called after the request has ended with all parsed arguments</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="190.70305"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan952">//second callback handles file uploads at that location</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="194.81358"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan954">server.<tspan
-   style="fill:#ff6600"
-   id="tspan1026">on</tspan>(&quot;<tspan
-   style="fill:#003399"
-   id="tspan1068">/edit</tspan>&quot;, <tspan
-   style="fill:#3366cc"
-   id="tspan1066">HTTP_POST</tspan>, []() {</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="198.9241"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan956">  server.<tspan
-   style="fill:#ff6600"
-   id="tspan1028">send</tspan>(200, &quot;<tspan
-   style="fill:#003399"
-   id="tspan1064">text/plain</tspan>&quot;, &quot;&quot;);</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="203.03464"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan958">}, handleFileUpload);</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="207.14516"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan960" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="211.11391"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3324" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="215.08266"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan962">//called when the url is not defined here</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="219.19319"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan964">//use it to load content from SPIFFS</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="223.30373"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan966">server.<tspan
-   style="fill:#ff6600"
-   id="tspan1030">onNotFound</tspan>([]() {</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="227.41425"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan968">  if (!handleFileRead(server.<tspan
-   style="fill:#ff6600"
-   id="tspan1032">uri</tspan>())) {</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="231.52478"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan970">    server.<tspan
-   style="fill:#ff6600"
-   id="tspan1034">send</tspan>(404, &quot;<tspan
-   style="fill:#003399"
-   id="tspan1060">text/plain</tspan>&quot;, &quot;<tspan
-   style="fill:#003399"
-   id="tspan1062">FileNotFound</tspan>&quot;);</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="235.6353"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan972">  }</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="239.74583"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan974">});</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="243.85635"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan976" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="247.8251"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan978">//get heap status, analog input value and all GPIO statuses in one json call</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="251.93564"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan980">server.<tspan
-   style="fill:#ff6600"
-   id="tspan1036">on</tspan>(&quot;<tspan
-   style="fill:#003399"
-   id="tspan1038">/all</tspan>&quot;, <tspan
-   style="fill:#3366cc"
-   id="tspan1056">HTTP_GET</tspan>, []() {</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="256.04617"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan982">  String json = &quot;<tspan
-   style="fill:#003399"
-   id="tspan1040">{</tspan>&quot;;</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="260.15671"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan984">  json += &quot;<tspan
-   style="fill:#003399"
-   id="tspan1042">\&quot;heap\&quot;:</tspan>&quot; + String(<tspan
-   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff6600"
-   id="tspan1086">ESP</tspan>.<tspan
-   style="fill:#ff6600"
-   id="tspan1082">getFreeHeap</tspan>());</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="264.26721"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan986">  json += &quot;<tspan
-   style="fill:#003399"
-   id="tspan1044">, \&quot;analog\&quot;:</tspan>&quot; + String(<tspan
-   style="fill:#ff6600"
-   id="tspan1084">analogRead</tspan>(A0));</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="268.37775"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan988">  json += &quot;<tspan
-   style="fill:#003399"
-   id="tspan1046">, \&quot;gpio\&quot;:</tspan>&quot; + String((uint32_t)(((GPI | GPO) &amp; 0xFFFF) | ((GP16I &amp; 0x01) &lt;&lt; 16)));</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="272.48828"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan990">  json += &quot;<tspan
-   style="fill:#003399"
-   id="tspan1048">}</tspan>&quot;;</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="276.59882"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan992">  server.<tspan
-   style="fill:#ff6600"
-   id="tspan1050">send</tspan>(200, &quot;<tspan
-   style="fill:#003399"
-   id="tspan1052">text/json</tspan>&quot;, json);</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="280.70932"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan994">  json = String();</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="284.81985"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan996">});</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="288.93039"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2983" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="292.89914"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3322" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="296.86789"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2992" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="300.83664"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2995" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="304.80539"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2998" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="308.77414"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3001" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="312.74289"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3222" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="316.71164"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3004">server.<tspan
-   style="fill:#ff6600"
-   id="tspan1054">begin</tspan>();</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="320.82217"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan1000" /></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="176.54396"
-       y="93.042824"
-       id="text924-1"><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="93.042824"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan998-8"><tspan
-   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff6600"
-   id="tspan3268">ESP8266WebServer</tspan> server(80);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="97.153351"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan3248">//Add below lines for AutoConnect.</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="101.26388"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3250"><tspan
-   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff6600"
-   id="tspan3272">AutoConnect</tspan>       portal(server);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="105.3744"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3252"><tspan
-   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff6600"
-   id="tspan3276">AutoConnectConfig</tspan> config;</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="109.48494"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3254"><tspan
-   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff6600"
-   id="tspan3280">AutoConnectAux</tspan>    FSBedit(&quot;<tspan
-   style="fill:#003399"
-   id="tspan3290">/edit</tspan>&quot;, &quot;<tspan
-   style="fill:#003399"
-   id="tspan3292">Edit</tspan>&quot;);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="113.59547"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3256"><tspan
-   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff6600"
-   id="tspan3284">AutoConnectAux</tspan>    FSBlist(&quot;<tspan
-   style="fill:#003399"
-   id="tspan3294">/list?dir=\&quot;/\&quot;</tspan>&quot;, &quot;<tspan
-   style="fill:#003399"
-   id="tspan3296">List</tspan>&quot;);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="117.70599"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan3258">//holds the current upload</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="121.81652"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3260"><tspan
-   style="fill:#ff6600"
-   id="tspan3288">File</tspan> fsUploadFile;</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="125.92705"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3262" /><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="129.8958"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3264" /><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="133.86455"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan3266">//SERVER INIT</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="137.97508"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2872">//list directory</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="142.0856"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2874">server.<tspan
-   style="fill:#ff6600"
-   id="tspan3220">on</tspan>(&quot;<tspan
-   style="fill:#003399;fill-opacity:1"
-   id="tspan4758">/list</tspan>&quot;, <tspan
-   style="fill:#3366cc;fill-opacity:1"
-   id="tspan4762">HTTP_GET</tspan>, handleFileList);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="146.19614"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2876">//load editor</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="150.30666"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2878">server.<tspan
-   style="fill:#ff6600"
-   id="tspan3216">on</tspan>(&quot;<tspan
-   style="fill:#003399"
-   id="tspan3214">/edit</tspan>&quot;, <tspan
-   style="fill:#3366cc"
-   id="tspan3212">HTTP_GET</tspan>, []() {</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="154.41719"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2880">  if (!handleFileRead(&quot;<tspan
-   style="fill:#003399"
-   id="tspan3206">/edit.htm</tspan>&quot;)) {</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="158.52771"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2882">    server.<tspan
-   style="fill:#ff6600"
-   id="tspan3218">send</tspan>(404, &quot;<tspan
-   style="fill:#003399"
-   id="tspan3208">text/plain</tspan>&quot;, &quot;<tspan
-   style="fill:#003399"
-   id="tspan3210">FileNotFound</tspan>&quot;);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="162.63824"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2884">  }</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="166.74878"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2886">});</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="170.8593"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2888">//create file</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="174.96983"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2890">server.<tspan
-   style="fill:#ff6600;fill-opacity:1"
-   id="tspan4779">on</tspan>(&quot;<tspan
-   style="fill:#003399"
-   id="tspan3202">/edit</tspan>&quot;, <tspan
-   style="fill:#3366cc"
-   id="tspan3200">HTTP_PUT</tspan>, handleFileCreate);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="179.08035"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2892">//delete file</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="183.19089"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2894">server.<tspan
-   style="fill:#ff6600;fill-opacity:1"
-   id="tspan4781">on</tspan>(&quot;<tspan
-   style="fill:#003399"
-   id="tspan3204">/edit</tspan>&quot;, <tspan
-   style="fill:#3366cc"
-   id="tspan3198">HTTP_DELETE</tspan>, handleFileDelete);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="187.30141"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2896">//first callback is called after the request has ended with all parsed arguments</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="191.41194"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2898">//second callback handles file uploads at that location</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="195.52248"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2900">server.<tspan
-   style="fill:#ff6600"
-   id="tspan3190">on</tspan>(&quot;<tspan
-   style="fill:#003399"
-   id="tspan3192">/edit</tspan>&quot;, <tspan
-   style="fill:#3366cc"
-   id="tspan3196">HTTP_POST</tspan>, []() {</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="199.633"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2902">  server.<tspan
-   style="fill:#ff6600"
-   id="tspan3188">send</tspan>(200, &quot;<tspan
-   style="fill:#003399"
-   id="tspan3194">text/plain</tspan>&quot;, &quot;&quot;);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="203.74353"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2904">}, handleFileUpload);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="207.85405"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2906" /><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="211.8228"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2908">//called when the url is not defined here</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="215.93333"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2910">//use it to load content from SPIFFS</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="220.04385"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2912">//Replacement as follows to make AutoConnect recognition.</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="224.15439"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2916"><tspan
-   style="-inkscape-font-specification:'Consolas, Bold';font-family:Consolas;font-weight:bold;font-style:normal;font-stretch:normal;font-variant:normal;font-size:3.17500004px;text-anchor:start;text-align:start;writing-mode:lr;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal"
-   id="tspan5133">portal</tspan>.<tspan
-   style="fill:#ff6600"
-   id="tspan3038">onNotFound</tspan>([](){</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="228.26492"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2918">  if(!handleFileRead(server.<tspan
-   style="fill:#ff6600"
-   id="tspan3142">uri</tspan>())) {</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="232.37544"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2920">    server.<tspan
-   style="fill:#ff6600"
-   id="tspan3144">send</tspan>(404, &quot;<tspan
-   style="fill:#003399"
-   id="tspan3146">text/plain</tspan>&quot;, &quot;<tspan
-   style="fill:#003399"
-   id="tspan3148">FileNotFound</tspan>&quot;);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="236.48598"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3034">  }</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="240.5965"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2922">});</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="244.70703"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2924" /><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="248.67578"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2926">//get heap status, analog input value and all GPIO statuses in one json call</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="252.7863"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2928">server.<tspan
-   style="fill:#ff6600"
-   id="tspan3154">on</tspan>(&quot;<tspan
-   style="fill:#003399"
-   id="tspan3152">/all</tspan>&quot;, <tspan
-   style="fill:#3366cc"
-   id="tspan3150">HTTP_GET</tspan>, [](){</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="256.89682"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2930">  String json = &quot;<tspan
-   style="fill:#003399"
-   id="tspan3156">{</tspan>&quot;;</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="261.00735"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2932">  json += &quot;<tspan
-   style="fill:#003399"
-   id="tspan3158">\&quot;heap\&quot;:</tspan>&quot;+String(<tspan
-   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff6600"
-   id="tspan3160">ESP</tspan>.<tspan
-   style="fill:#ff6600"
-   id="tspan3164">getFreeHeap</tspan>());</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="265.11789"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2934">  json += &quot;<tspan
-   style="fill:#003399"
-   id="tspan3168">, \&quot;analog\&quot;:</tspan>&quot;+String(<tspan
-   style="fill:#ff6600"
-   id="tspan3166">analogRead</tspan>(A0));</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="269.22842"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2938">  json += &quot;<tspan
-   style="fill:#003399"
-   id="tspan3170">, \&quot;gpio\</tspan>&quot;:&quot;+String((uint32_t)(((GPI | GPO) &amp; 0xFFFF) | ((GP16I &amp; 0x01) &lt;&lt; 16)));</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="273.33896"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2946">  json += &quot;<tspan
-   style="fill:#003399"
-   id="tspan3172">}</tspan>&quot;;</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="277.44946"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2948">  server.<tspan
-   style="fill:#ff6600"
-   id="tspan3174">send</tspan>(200, &quot;<tspan
-   style="fill:#003399"
-   id="tspan3176">text/json</tspan>&quot;, json);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="281.56"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2950">  json = String();</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="285.67053"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2952">});</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="289.78107"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2954" /><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="293.74982"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2956">//Set menu title</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="297.86035"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2958">config.<tspan
-   style="fill:#ff6600"
-   id="tspan3178">title</tspan> = &quot;<tspan
-   style="fill:#003399"
-   id="tspan3180">FSBrowser</tspan>&quot;;</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="301.97086"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2960">portal.<tspan
-   style="fill:#ff6600"
-   id="tspan3182">config</tspan>(config);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="306.08139"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2962">//Register AutoConnect menu</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="310.19193"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2964">portal.<tspan
-   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff6600"
-   id="tspan3184">join</tspan>({ FSBedit, FSBlist });</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="314.30246"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2966">//Replacement as follows to make AutoConnect recognition.</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="318.41296"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan1000-6"><tspan
-   style="-inkscape-font-specification:'Consolas, Bold';font-family:Consolas;font-weight:bold;font-style:normal;font-stretch:normal;font-variant:normal;font-size:3.17500004px;text-anchor:start;text-align:start;writing-mode:lr;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal"
-   id="tspan5131">portal</tspan>.<tspan
-   style="fill:#ff6600"
-   id="tspan3186">begin</tspan>();</tspan></text>
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot3298"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
-       transform="matrix(0.26458333,0,0,0.26458333,0,87)"><flowRegion
-         id="flowRegion3300"><rect
-           id="rect3302"
-           width="177.78685"
-           height="44.446712"
-           x="265.6701"
-           y="261.3504" /></flowRegion><flowPara
-         id="flowPara3304" /></flowRoot>  </g>
-  <g
-     inkscape:groupmode="layer"
-     id="layer3"
-     inkscape:label="caption"
-     transform="translate(0.96321857,6.8094692)"
-     sodipodi:insensitive="true">
-    <rect
-       style="opacity:0.73500001;vector-effect:none;fill:#99cc33;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect3391"
-       width="12.027128"
-       height="3.8754082"
-       x="-0.22822824"
-       y="129.77403"
-       rx="0.10748195"
-       ry="1.069078" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055563px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="-0.24567837"
-       y="-3.8422084"
-       id="text3363"><tspan
-         sodipodi:role="line"
-         id="tspan3361"
-         x="-0.24567837"
-         y="-3.8422084"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055563px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">Original FSbrowser.ino (a part of code)</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055563px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="171.75917"
-       y="-3.8213656"
-       id="text3363-3"><tspan
-         sodipodi:role="line"
-         id="tspan3361-1"
-         x="171.75917"
-         y="-3.8213656"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055563px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">Modified FSbrowser.ino (a part of code)</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#3366cc;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="87.36937"
-       y="14.514046"
-       id="text3385"><tspan
-         sodipodi:role="line"
-         id="tspan3383"
-         x="87.36937"
-         y="14.514046"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#3366cc;stroke-width:0.26458332">Insert for attaching the menu</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:9.9628458px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#3366cc;fill-opacity:1;stroke:none;stroke-width:0.26458335"
-       x="337.22998"
-       y="9.5149574"
-       id="text3389"
-       transform="scale(0.49402744,2.0241791)"><tspan
-         sodipodi:role="line"
-         id="tspan3387"
-         x="337.22998"
-         y="9.5149574"
-         style="fill:#3366cc;stroke-width:0.26458335">{</tspan></text>
-    <rect
-       style="opacity:0.73500001;vector-effect:none;fill:#99cc33;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect3391-4"
-       width="12.027128"
-       height="3.8754082"
-       x="172.22743"
-       y="130.4422"
-       rx="0.10748195"
-       ry="1.069078" />
-    <rect
-       style="opacity:0.73500001;vector-effect:none;fill:#99cc33;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect3391-1"
-       width="12.027128"
-       height="3.8754082"
-       x="-0.96321857"
-       y="222.91747"
-       rx="0.10748195"
-       ry="1.069078" />
-    <rect
-       style="opacity:0.73500001;vector-effect:none;fill:#99cc33;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect3391-1-9"
-       width="12.027128"
-       height="3.8754082"
-       x="171.6929"
-       y="224.52107"
-       rx="0.10748195"
-       ry="1.069078" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#3366cc;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="87.36937"
-       y="212.69356"
-       id="text3385-2"><tspan
-         sodipodi:role="line"
-         id="tspan3383-9"
-         x="87.36937"
-         y="212.69356"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#3366cc;stroke-width:0.26458332">Insert for attaching the menu</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:9.18645573px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#3366cc;fill-opacity:1;stroke:none;stroke-width:0.26458335"
-       x="310.9501"
-       y="115.85413"
-       id="text3389-3"
-       transform="scale(0.53578004,1.8664376)"><tspan
-         sodipodi:role="line"
-         id="tspan3387-0"
-         x="310.9501"
-         y="115.85413"
-         style="fill:#3366cc;stroke-width:0.26458335">{</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#3366cc;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="100.55449"
-       y="133.65428"
-       id="text3385-2-3"><tspan
-         sodipodi:role="line"
-         id="tspan3383-9-2"
-         x="100.55449"
-         y="133.65428"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#99cc33;stroke-width:0.26458332">Replace for AutoConnect</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#3366cc;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="100.15359"
-       y="227.98047"
-       id="text3385-2-3-9"><tspan
-         sodipodi:role="line"
-         id="tspan3383-9-2-2"
-         x="100.15359"
-         y="227.98047"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#99cc33;stroke-width:0.26458332">Replace for AutoConnect</tspan></text>
-    <path
-       sodipodi:type="star"
-       style="opacity:0.73500001;vector-effect:none;fill:#99cc33;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="path3498"
-       sodipodi:sides="3"
-       sodipodi:cx="167.41656"
-       sodipodi:cy="132.3799"
-       sodipodi:r1="2.6860254"
-       sodipodi:r2="1.3430127"
-       sodipodi:arg1="0"
-       sodipodi:arg2="1.0471976"
-       inkscape:flatsided="true"
-       inkscape:rounded="0"
-       inkscape:randomized="0"
-       d="m 170.10259,132.3799 -4.02904,2.32616 v -4.65233 z"
-       inkscape:transform-center-x="-0.67150475"
-       inkscape:transform-center-y="-1.4134822e-006" />
-    <path
-       sodipodi:type="star"
-       style="opacity:0.73500001;vector-effect:none;fill:#99cc33;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="path3498-0"
-       sodipodi:sides="3"
-       sodipodi:cx="167.41656"
-       sodipodi:cy="226.51001"
-       sodipodi:r1="2.6860254"
-       sodipodi:r2="1.3430127"
-       sodipodi:arg1="0"
-       sodipodi:arg2="1.0471976"
-       inkscape:flatsided="true"
-       inkscape:rounded="0"
-       inkscape:randomized="0"
-       d="m 170.10259,226.51001 -4.02904,2.32617 v -4.65234 z"
-       inkscape:transform-center-x="-0.67150475"
-       inkscape:transform-center-y="-1.4134822e-006" />
-    <rect
-       style="opacity:0.73500001;vector-effect:none;fill:#6f8a91;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect3391-4-6"
-       width="13.396885"
-       height="3.8754082"
-       x="203.23431"
-       y="15.832252"
-       rx="0.11972295"
-       ry="1.0690778" />
-    <rect
-       style="opacity:0.73500001;vector-effect:none;fill:#6f8a91;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect3391-4-6-5"
-       width="13.396885"
-       height="3.8754082"
-       x="196.30136"
-       y="216.52715"
-       rx="0.11972295"
-       ry="1.0690778" />
-    <rect
-       style="opacity:0.45;vector-effect:none;fill:#c8ab37;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect3391-4-6-9"
-       width="12.107041"
-       height="3.8754082"
-       x="190.09106"
-       y="81.410378"
-       rx="0.10819609"
-       ry="1.0690778" />
-    <rect
-       style="opacity:0.45;vector-effect:none;fill:#c8ab37;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect3391-4-6-9-3"
-       width="12.107041"
-       height="3.8754082"
-       x="218.18867"
-       y="15.818441"
-       rx="0.10819609"
-       ry="1.0690778" />
-    <path
-       style="fill:none;fill-opacity:0.45098039;stroke:#786827;stroke-width:1.32291675;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.32291669, 1.32291669;stroke-dashoffset:0;stroke-opacity:0.45098039;marker-end:url(#marker5102)"
-       d="M 218.18867,19.69385 199.88301,77.243192"
-       id="path4798"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="opacity:0.85;fill:none;stroke:#3b7686;stroke-width:1.32291675;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.32291669, 1.32291669;stroke-dashoffset:0;stroke-opacity:0.7372549;marker-end:url(#marker5127)"
-       d="M 204.61804,215.6739 204.32038,24.777024"
-       id="path5104"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/docs/images/gitrepo.png b/lib/AutoConnect-master/docs/images/gitrepo.png
deleted file mode 100644
index a7ea739a7b91d319457b1e7908aeb677c815f162..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/gitrepo.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/handleClient.png b/lib/AutoConnect-master/docs/images/handleClient.png
deleted file mode 100644
index 3b93eefcde1b131d4a9e8a6ff6a59b635b3cb50a..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/handleClient.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/handleClient.svg b/lib/AutoConnect-master/docs/images/handleClient.svg
deleted file mode 100644
index e6d49fa182a0696d1fc3e11962cc69d5c108e23e..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/images/handleClient.svg
+++ /dev/null
@@ -1,695 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   id="svg8"
-   version="1.1"
-   viewBox="0 0 191.10721 454.36032"
-   height="454.36032mm"
-   width="191.10721mm">
-  <defs
-     id="defs2" />
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     style="display:inline"
-     transform="translate(5.0000008,4.9999992)"
-     id="layer2">
-    <path
-       id="path4982"
-       style="fill:none;stroke:#000000;stroke-width:0.0264583px"
-       d="M -4.9867716,-4.9999882 V 449.36032 M 0.30489485,-4.9999882 V 449.36032 M 5.5965614,-4.9999882 V 449.36032 M 10.888228,-4.9999882 V 449.36032 M 16.179894,-4.9999882 V 449.36032 M 21.471561,-4.9999882 V 449.36032 M 26.763227,-4.9999882 V 449.36032 M 32.054894,-4.9999882 V 449.36032 M 37.34656,-4.9999882 V 449.36032 M 42.638227,-4.9999882 V 449.36032 M 47.929893,-4.9999882 V 449.36032 M 53.22156,-4.9999882 V 449.36032 M 58.513227,-4.9999882 V 449.36032 M 63.804893,-4.9999882 V 449.36032 M 69.09656,-4.9999882 V 449.36032 M 74.388226,-4.9999882 V 449.36032 M 79.679893,-4.9999882 V 449.36032 M 84.971559,-4.9999882 V 449.36032 M 90.263226,-4.9999882 V 449.36032 M 95.554888,-4.9999882 V 449.36032 M 100.84656,-4.9999882 V 449.36032 M 106.13823,-4.9999882 V 449.36032 M 111.42989,-4.9999882 V 449.36032 M 116.72156,-4.9999882 V 449.36032 M 122.01323,-4.9999882 V 449.36032 M 127.30489,-4.9999882 V 449.36032 M 132.59656,-4.9999882 V 449.36032 M 137.88823,-4.9999882 V 449.36032 M 143.17989,-4.9999882 V 449.36032 M 148.47156,-4.9999882 V 449.36032 M 153.76323,-4.9999882 V 449.36032 M 159.05489,-4.9999882 V 449.36032 M 164.34656,-4.9999882 V 449.36032 M 169.63823,-4.9999882 V 449.36032 M 174.92989,-4.9999882 V 449.36032 M 180.22156,-4.9999882 V 449.36032 M 185.51323,-4.9999882 V 449.36032 M -4.9867716,-4.9999882 H 186.12043 M -4.9867716,0.29167834 H 186.12043 M -4.9867716,5.5833448 H 186.12043 M -4.9867716,10.875012 H 186.12043 M -4.9867716,16.166678 H 186.12043 M -4.9867716,21.458345 H 186.12043 M -4.9867716,26.750011 H 186.12043 M -4.9867716,32.041678 H 186.12043 M -4.9867716,37.333344 H 186.12043 M -4.9867716,42.625011 H 186.12043 M -4.9867716,47.916677 H 186.12043 M -4.9867716,53.208344 H 186.12043 M -4.9867716,58.500011 H 186.12043 M -4.9867716,63.791677 H 186.12043 M -4.9867716,69.083344 H 186.12043 M -4.9867716,74.37501 H 186.12043 M -4.9867716,79.666677 H 186.12043 M -4.9867716,84.958343 H 186.12043 M -4.9867716,90.25001 H 186.12043 M -4.9867716,95.541672 H 186.12043 M -4.9867716,100.83334 H 186.12043 M -4.9867716,106.12501 H 186.12043 M -4.9867716,111.41667 H 186.12043 M -4.9867716,116.70834 H 186.12043 M -4.9867716,122.00001 H 186.12043 M -4.9867716,127.29167 H 186.12043 M -4.9867716,132.58334 H 186.12043 M -4.9867716,137.87501 H 186.12043 M -4.9867716,143.16667 H 186.12043 M -4.9867716,148.45834 H 186.12043 M -4.9867716,153.75001 H 186.12043 M -4.9867716,159.04167 H 186.12043 M -4.9867716,164.33334 H 186.12043 M -4.9867716,169.62501 H 186.12043 M -4.9867716,174.91667 H 186.12043 M -4.9867716,180.20834 H 186.12043 M -4.9867716,185.50001 H 186.12043 M -4.9867716,190.79167 H 186.12043 M -4.9867716,196.08334 H 186.12043 M -4.9867716,201.37501 H 186.12043 M -4.9867716,206.66667 H 186.12043 M -4.9867716,211.95834 H 186.12043 M -4.9867716,217.25001 H 186.12043 M -4.9867716,222.54167 H 186.12043 M -4.9867716,227.83334 H 186.12043 M -4.9867716,233.125 H 186.12043 M -4.9867716,238.41667 H 186.12043 M -4.9867716,243.70834 H 186.12043 M -4.9867716,249 H 186.12043 M -4.9867716,254.29167 H 186.12043 M -4.9867716,259.58334 H 186.12043 M -4.9867716,264.875 H 186.12043 M -4.9867716,270.16667 H 186.12043 M -4.9867716,275.45834 H 186.12043 M -4.9867716,280.75 H 186.12043 M -4.9867716,286.04167 H 186.12043 M -4.9867716,291.33334 H 186.12043 M -4.9867716,296.625 H 186.12043 M -4.9867716,301.91667 H 186.12043 M -4.9867716,307.20834 H 186.12043 M -4.9867716,312.5 H 186.12043 M -4.9867716,317.79167 H 186.12043 M -4.9867716,323.08334 H 186.12043 M -4.9867716,328.375 H 186.12043 M -4.9867716,333.66667 H 186.12043 M -4.9867716,338.95834 H 186.12043 M -4.9867716,344.25 H 186.12043 M -4.9867716,349.54167 H 186.12043 M -4.9867716,354.83334 H 186.12043 M -4.9867716,360.125 H 186.12043 M -4.9867716,365.41667 H 186.12043 M -4.9867716,370.70834 H 186.12043 M -4.9867716,376 H 186.12043 M -4.9867716,381.29167 H 186.12043 M -4.9867716,386.58333 H 186.12043 M -4.9867716,391.875 H 186.12043 M -4.9867716,397.16667 H 186.12043 M -4.9867716,402.45833 H 186.12043 M -4.9867716,407.75 H 186.12043 M -4.9867716,413.04167 H 186.12043 M -4.9867716,418.33333 H 186.12043 M -4.9867716,423.625 H 186.12043 M -4.9867716,428.91667 H 186.12043 M -4.9867716,434.20833 H 186.12043 M -4.9867716,439.5 H 186.12043 M -4.9867716,444.79167 H 186.12043" />
-  </g>
-  <g
-     style="display:inline"
-     transform="translate(46.95536,63.837051)"
-     id="layer1">
-    <text
-       id="text4506"
-       y="-56.407742"
-       x="-41.95536"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055563px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       xml:space="preserve"><tspan
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="-56.407742"
-         x="-41.95536"
-         id="tspan4504"><tspan
-   id="tspan4776"
-   style="fill:#669900">#include</tspan> &lt;<tspan
-   id="tspan4780"
-   style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'">ESP8266WiFi.h</tspan>&gt;</tspan><tspan
-         id="tspan4508"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="-51.557049"
-         x="-41.95536"><tspan
-   id="tspan4778"
-   style="fill:#669900">#include</tspan> &lt;<tspan
-   id="tspan4782"
-   style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'">ESP8266WebServer.h</tspan>&gt;</tspan><tspan
-         id="tspan4510"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="-46.706352"
-         x="-41.95536"><tspan
-   id="tspan4786"
-   style="fill:#669900">#include</tspan> &lt;<tspan
-   id="tspan4784"
-   style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'">AutoConnect.h</tspan>&gt;</tspan><tspan
-         id="tspan4512"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="-41.855659"
-         x="-41.95536" /><tspan
-         id="tspan4514"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="-37.004963"
-         x="-41.95536"><tspan
-   id="tspan4788"
-   style="fill:#ff6600">ESP8266WebServer</tspan>    server;</tspan><tspan
-         id="tspan4516"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="-32.15427"
-         x="-41.95536"><tspan
-   id="tspan4790"
-   style="fill:#ff6600">AutoConnect</tspan>         portal(server);</tspan><tspan
-         id="tspan4518"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="-27.303574"
-         x="-41.95536" /><tspan
-         id="tspan4520"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="-22.452879"
-         x="-41.95536"><tspan
-   id="tspan4792"
-   style="fill:#3366cc">void</tspan> handleRoot() {</tspan><tspan
-         id="tspan4522"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="-17.602184"
-         x="-41.95536">  <tspan
-   id="tspan4794"
-   style="fill:#3366cc">String</tspan> page = PSTR(</tspan><tspan
-         id="tspan4524"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="-12.751491"
-         x="-41.95536">&quot;&lt;html&gt;&quot;</tspan><tspan
-         id="tspan4526"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="-7.9007959"
-         x="-41.95536">&quot;&lt;head&gt;&quot;</tspan><tspan
-         id="tspan4528"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="-3.0501018"
-         x="-41.95536">  &quot;&lt;meta name=\&quot;viewport\&quot; content=\&quot;width=device-width, initial-scale=1\&quot;&gt;&quot;</tspan><tspan
-         id="tspan4530"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="1.8005929"
-         x="-41.95536">  &quot;&lt;style type=\&quot;text/css\&quot;&gt;&quot;</tspan><tspan
-         id="tspan4532"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="6.6512876"
-         x="-41.95536">    &quot;body {&quot;</tspan><tspan
-         id="tspan4534"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="11.501982"
-         x="-41.95536">    &quot;-webkit-appearance:none;&quot;</tspan><tspan
-         id="tspan4536"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="16.352676"
-         x="-41.95536">    &quot;-moz-appearance:none;&quot;</tspan><tspan
-         id="tspan4538"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="21.203371"
-         x="-41.95536">    &quot;font-family:'Arial',sans-serif;&quot;</tspan><tspan
-         id="tspan4540"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="26.054066"
-         x="-41.95536">    &quot;text-align:center;&quot;</tspan><tspan
-         id="tspan4542"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="30.90476"
-         x="-41.95536">    &quot;}&quot;</tspan><tspan
-         id="tspan4544"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="35.755455"
-         x="-41.95536">    &quot;.menu {&quot;</tspan><tspan
-         id="tspan4546"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="40.606148"
-         x="-41.95536">    &quot;text-align:right;&quot;</tspan><tspan
-         id="tspan4548"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="45.456844"
-         x="-41.95536">    &quot;}&quot;</tspan><tspan
-         id="tspan4550"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="50.307537"
-         x="-41.95536">    &quot;.button {&quot;</tspan><tspan
-         id="tspan4552"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="55.158234"
-         x="-41.95536">    &quot;display:inline-block;&quot;</tspan><tspan
-         id="tspan4554"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="60.008926"
-         x="-41.95536">    &quot;border-radius:7px;&quot;</tspan><tspan
-         id="tspan4556"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="64.859619"
-         x="-41.95536">    &quot;background:#73ad21;&quot;</tspan><tspan
-         id="tspan4558"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="69.71032"
-         x="-41.95536">    &quot;margin:0 10px 0 10px;&quot;</tspan><tspan
-         id="tspan4560"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="74.561012"
-         x="-41.95536">    &quot;padding:10px 20px 10px 20px;&quot;</tspan><tspan
-         id="tspan4562"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="79.411705"
-         x="-41.95536">    &quot;text-decoration:none;&quot;</tspan><tspan
-         id="tspan4564"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="84.262398"
-         x="-41.95536">    &quot;color:#000000;&quot;</tspan><tspan
-         id="tspan4566"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="89.113098"
-         x="-41.95536">    &quot;}&quot;</tspan><tspan
-         id="tspan4568"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="93.963791"
-         x="-41.95536">  &quot;&lt;/style&gt;&quot;</tspan><tspan
-         id="tspan4570"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="98.814484"
-         x="-41.95536">&quot;&lt;/head&gt;&quot;</tspan><tspan
-         id="tspan4572"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="103.66518"
-         x="-41.95536">&quot;&lt;body&gt;&quot;</tspan><tspan
-         id="tspan4574"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="108.51587"
-         x="-41.95536">  &quot;&lt;p class=\&quot;menu\&quot;&gt;&quot; <tspan
-   id="tspan4798"
-   style="fill:#000000">AUTOCONNECT_LINK(BAR_32)</tspan> &quot;&lt;/p&gt;&quot;</tspan><tspan
-         id="tspan4576"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="113.36657"
-         x="-41.95536">  &quot;BUILT-IN LED&lt;br&gt;&quot;</tspan><tspan
-         id="tspan4578"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="118.21726"
-         x="-41.95536"><tspan
-   id="tspan4796"
-   style="fill:#003399">  &quot;GPIO(&quot;</tspan>);</tspan><tspan
-         id="tspan4580"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="123.06796"
-         x="-41.95536">  page += <tspan
-   id="tspan4800"
-   style="fill:#3366cc">String</tspan>(BUILTIN_LED);</tspan><tspan
-         id="tspan4582"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="127.91865"
-         x="-41.95536">  page += <tspan
-   id="tspan4802"
-   style="fill:#3366cc">String</tspan>(F(<tspan
-   id="tspan4804"
-   style="fill:#003399">&quot;) : &lt;span style=\&quot;font-weight:bold;color:&quot;</tspan>));</tspan><tspan
-         id="tspan4584"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="132.76935"
-         x="-41.95536">  page += <tspan
-   id="tspan4806"
-   style="fill:#ff6600">digitalRead</tspan>(BUILTIN_LED) ? <tspan
-   id="tspan4808"
-   style="fill:#3366cc">String</tspan>(<tspan
-   id="tspan4812"
-   style="fill:#003399">&quot;Tomato\&quot;&gt;HIGH&quot;</tspan>) : <tspan
-   id="tspan4814"
-   style="fill:#3366cc">String</tspan>(<tspan
-   id="tspan4816"
-   style="fill:#003399">&quot;SlateBlue\&quot;&gt;LOW&quot;</tspan>);</tspan><tspan
-         id="tspan4586"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="137.62004"
-         x="-41.95536">  page += <tspan
-   id="tspan4818"
-   style="fill:#ff6600">String</tspan>(F(<tspan
-   id="tspan4820"
-   style="fill:#003399">&quot;&lt;/span&gt;&quot;</tspan>));</tspan><tspan
-         id="tspan4588"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="142.47073"
-         x="-41.95536">  page += <tspan
-   id="tspan4822"
-   style="fill:#ff6600">String</tspan>(F(<tspan
-   id="tspan4826"
-   style="fill:#003399">&quot;&lt;p&gt;&lt;a class=\&quot;button\&quot; href=\&quot;/io?v=low\&quot;&gt;low&lt;/a&gt;</tspan></tspan><tspan
-         id="tspan4968"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="147.32143"
-         x="-41.95536"><tspan
-   id="tspan4970"
-   style="fill:#003399">                                 &lt;a class=\&quot;button\&quot; href=\&quot;/io?v=high\&quot;&gt;high&lt;/a&gt;&lt;/p&gt;&quot;</tspan>));</tspan><tspan
-         id="tspan4590"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="152.17212"
-         x="-41.95536">  page += <tspan
-   id="tspan4824"
-   style="fill:#ff6600">String</tspan>(F(<tspan
-   id="tspan4828"
-   style="fill:#003399">&quot;&lt;/body&gt;&lt;/html&gt;&quot;</tspan>));</tspan><tspan
-         id="tspan4592"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="157.02281"
-         x="-41.95536">  server().<tspan
-   id="tspan4832"
-   style="fill:#ff6600">send</tspan>(200, <tspan
-   id="tspan4834"
-   style="fill:#003399">&quot;text/html&quot;</tspan>, page);</tspan><tspan
-         id="tspan4594"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="161.87352"
-         x="-41.95536">}</tspan><tspan
-         id="tspan4596"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="166.72421"
-         x="-41.95536" /><tspan
-         id="tspan4598"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="171.57491"
-         x="-41.95536"><tspan
-   id="tspan4836"
-   style="fill:#3366cc">void</tspan> handleGPIO() {</tspan><tspan
-         id="tspan4600"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="176.4256"
-         x="-41.95536">  <tspan
-   id="tspan4838"
-   style="fill:#808080">if</tspan> (server.<tspan
-   id="tspan4842"
-   style="fill:#ff6600">arg</tspan>(<tspan
-   id="tspan4844"
-   style="fill:#003399">&quot;v&quot;</tspan>) == <tspan
-   id="tspan4846"
-   style="fill:#003399">&quot;low&quot;</tspan>)</tspan><tspan
-         id="tspan4602"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="181.27629"
-         x="-41.95536">    <tspan
-   id="tspan4850"
-   style="fill:#ff6600">digitalWrite</tspan>(BUILTIN_LED, <tspan
-   id="tspan4852"
-   style="fill:#ff6600">LOW</tspan>);</tspan><tspan
-         id="tspan4604"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="186.12698"
-         x="-41.95536">  <tspan
-   id="tspan4860"
-   style="fill:#808080">else</tspan> <tspan
-   id="tspan4862"
-   style="fill:#808080">if</tspan> (server.<tspan
-   id="tspan4858"
-   style="fill:#ff6600">arg</tspan>(<tspan
-   id="tspan4856"
-   style="fill:#003399">&quot;v&quot;</tspan>) == <tspan
-   id="tspan4854"
-   style="fill:#003399">&quot;high&quot;</tspan>)</tspan><tspan
-         id="tspan4606"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="190.97768"
-         x="-41.95536">    <tspan
-   id="tspan4864"
-   style="fill:#ff6600">digitalWrite</tspan>(BUILTIN_LED, <tspan
-   id="tspan4866"
-   style="fill:#ff6600">HIGH</tspan>);</tspan><tspan
-         id="tspan4608"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="195.82837"
-         x="-41.95536">  sendRedirect(&quot;/&quot;);</tspan><tspan
-         id="tspan4610"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="200.67906"
-         x="-41.95536">}</tspan><tspan
-         id="tspan4612"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="205.52977"
-         x="-41.95536" /><tspan
-         id="tspan4614"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="210.38046"
-         x="-41.95536"><tspan
-   id="tspan4868"
-   style="fill:#3366cc">void</tspan> sendRedirect(<tspan
-   id="tspan4870"
-   style="fill:#3366cc">String</tspan> uri) {</tspan><tspan
-         id="tspan4616"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="215.23116"
-         x="-41.95536">  server.<tspan
-   id="tspan4872"
-   style="fill:#ff6600">sendHeader</tspan>(<tspan
-   id="tspan4874"
-   style="fill:#003399">&quot;Location&quot;</tspan>, uri, <tspan
-   id="tspan4876"
-   style="fill:#3366cc">true</tspan>);</tspan><tspan
-         id="tspan4618"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="220.08185"
-         x="-41.95536">  server.<tspan
-   id="tspan4880"
-   style="fill:#ff6600">send</tspan>(302, &quot;text/plain&quot;, <tspan
-   id="tspan4878"
-   style="fill:#003399">&quot;&quot;</tspan>);</tspan><tspan
-         id="tspan4620"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="224.93254"
-         x="-41.95536">  server.<tspan
-   id="tspan4884"
-   style="fill:#ff6600">client</tspan>().<tspan
-   id="tspan4886"
-   style="fill:#ff6600">stop</tspan>();</tspan><tspan
-         id="tspan4622"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="229.78323"
-         x="-41.95536">}</tspan><tspan
-         id="tspan4624"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="234.63393"
-         x="-41.95536" /><tspan
-         id="tspan4626"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="239.48462"
-         x="-41.95536"><tspan
-   id="tspan4890"
-   style="fill:#3366cc">void</tspan> setup() {</tspan><tspan
-         id="tspan4628"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="244.33533"
-         x="-41.95536">  <tspan
-   id="tspan4888"
-   style="fill:#ff6600">delay</tspan>(1000);</tspan><tspan
-         id="tspan4630"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="249.18602"
-         x="-41.95536">  <tspan
-   id="tspan4892"
-   style="fill:#ff6600">Serial</tspan>.<tspan
-   id="tspan4894"
-   style="fill:#ff6600">begin</tspan>(115200);</tspan><tspan
-         id="tspan4632"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="254.03671"
-         x="-41.95536">  <tspan
-   id="tspan4898"
-   style="fill:#ff6600">Serial</tspan>.<tspan
-   id="tspan4896"
-   style="fill:#ff6600">println</tspan>();</tspan><tspan
-         id="tspan4634"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="258.88739"
-         x="-41.95536">  <tspan
-   id="tspan4900"
-   style="fill:#ff6600">pinMode</tspan>(BUILTIN_LED, <tspan
-   id="tspan4902"
-   style="fill:#ff6600">OUTPUT</tspan>);</tspan><tspan
-         id="tspan4636"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="263.7381"
-         x="-41.95536" /><tspan
-         id="tspan4638"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="268.58881"
-         x="-41.95536">  <tspan
-   id="tspan4904"
-   style="fill:#808080">// Put the home location of the web site.</tspan></tspan><tspan
-         id="tspan4640"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="273.43948"
-         x="-41.95536">  <tspan
-   id="tspan4906"
-   style="fill:#808080">// But in usually, setting the home uri is not needed cause default location is &quot;/&quot;.</tspan></tspan><tspan
-         id="tspan4642"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="278.29019"
-         x="-41.95536">  <tspan
-   id="tspan4908"
-   style="fill:#808080">//portal.home(&quot;/&quot;);</tspan></tspan><tspan
-         id="tspan4644"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="283.14087"
-         x="-41.95536" /><tspan
-         id="tspan4646"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="287.99158"
-         x="-41.95536">  server.<tspan
-   id="tspan4910"
-   style="fill:#ff6600">on</tspan>(<tspan
-   id="tspan4912"
-   style="fill:#003399">&quot;/&quot;</tspan>, handleRoot);</tspan><tspan
-         id="tspan4648"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="292.84225"
-         x="-41.95536">  server.<tspan
-   id="tspan4916"
-   style="fill:#ff6600">on</tspan>(<tspan
-   id="tspan4914"
-   style="fill:#003399">&quot;/io&quot;</tspan>, handleGPIO);</tspan><tspan
-         id="tspan4650"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="297.69296"
-         x="-41.95536" /><tspan
-         id="tspan4652"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="302.54364"
-         x="-41.95536">  // Starts user web site included the AutoConnect portal.</tspan><tspan
-         id="tspan4654"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="307.39435"
-         x="-41.95536">  <tspan
-   id="tspan4934"
-   style="fill:#808080">if</tspan> (portal.<tspan
-   id="tspan4918"
-   style="fill:#ff6600">begin</tspan>()) {</tspan><tspan
-         id="tspan4656"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="312.24506"
-         x="-41.95536">    <tspan
-   id="tspan4920"
-   style="fill:#ff6600">Serial</tspan>.<tspan
-   id="tspan4922"
-   style="fill:#ff6600">println</tspan>(<tspan
-   id="tspan4924"
-   style="fill:#003399">&quot;Started, IP:&quot;</tspan> + <tspan
-   id="tspan4926"
-   style="fill:#ff6600">WiFi</tspan>.<tspan
-   id="tspan4928"
-   style="fill:#ff6600">localIP</tspan>().<tspan
-   id="tspan4930"
-   style="fill:#ff6600">toString</tspan>());</tspan><tspan
-         id="tspan4658"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="317.09573"
-         x="-41.95536">  }</tspan><tspan
-         id="tspan4660"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="321.94644"
-         x="-41.95536">  <tspan
-   id="tspan4936"
-   style="fill:#808080">else</tspan> {</tspan><tspan
-         id="tspan4662"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="326.79712"
-         x="-41.95536">    <tspan
-   id="tspan4938"
-   style="fill:#ff6600">Serial</tspan>.<tspan
-   id="tspan4940"
-   style="fill:#ff6600">println</tspan>(<tspan
-   id="tspan4942"
-   style="fill:#003399">&quot;Connection failed.&quot;</tspan>);</tspan><tspan
-         id="tspan4664"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="331.64783"
-         x="-41.95536">    <tspan
-   id="tspan4944"
-   style="fill:#808080">while</tspan> (<tspan
-   id="tspan4946"
-   style="fill:#3366cc">true</tspan>) { <tspan
-   id="tspan4948"
-   style="fill:#ff6600">yield</tspan>(); }</tspan><tspan
-         id="tspan4666"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="336.4985"
-         x="-41.95536">  }</tspan><tspan
-         id="tspan4668"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="341.34921"
-         x="-41.95536">}</tspan><tspan
-         id="tspan4670"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="346.19989"
-         x="-41.95536" /><tspan
-         id="tspan4672"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="351.0506"
-         x="-41.95536"><tspan
-   id="tspan4950"
-   style="fill:#3366cc">void</tspan> loop() {</tspan><tspan
-         id="tspan4674"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="355.90131"
-         x="-41.95536">  server.<tspan
-   id="tspan4952"
-   style="fill:#ff6600">handleClient</tspan>();</tspan><tspan
-         id="tspan4676"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="360.75198"
-         x="-41.95536">  portal.<tspan
-   id="tspan4954"
-   style="fill:#ff6600">handleRequest</tspan>();   // Need to handle AutoConnect menu.</tspan><tspan
-         id="tspan4678"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="365.60269"
-         x="-41.95536">  <tspan
-   id="tspan4966"
-   style="fill:#808080">if</tspan> (<tspan
-   id="tspan4956"
-   style="fill:#ff6600">WiFi</tspan>.<tspan
-   id="tspan4958"
-   style="fill:#ff6600">status</tspan>() == <tspan
-   id="tspan4960"
-   style="fill:#3366cc">WL_IDLE_STATUS</tspan>) {</tspan><tspan
-         id="tspan4680"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="370.45337"
-         x="-41.95536">    ESP.<tspan
-   id="tspan4962"
-   style="fill:#ff6600">reset</tspan>();</tspan><tspan
-         id="tspan4682"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="375.30408"
-         x="-41.95536">    <tspan
-   id="tspan4964"
-   style="fill:#ff6600">delay</tspan>(1000);</tspan><tspan
-         id="tspan4684"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="380.15475"
-         x="-41.95536">  }</tspan><tspan
-         id="tspan4686"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="385.00546"
-         x="-41.95536">}</tspan><tspan
-         id="tspan4688"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="389.85617"
-         x="-41.95536" /></text>
-  </g>
-  <g
-     style="display:inline"
-     id="layer3">
-    <path
-       d="m 119.94348,375.62042 -8.69884,-5.02228 8.69884,-5.02227 z"
-       id="path4984-8-8"
-       style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.2659663, 2.2659663;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill" />
-    <text
-       id="text4702"
-       y="28.892231"
-       x="94.665428"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       xml:space="preserve"><tspan
-         style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-         y="28.892231"
-         x="94.665428"
-         id="tspan4700">1. Declare AutoConnect</tspan><tspan
-         id="tspan4972"
-         style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-         y="35.065842"
-         x="94.665428">    and bind it to ESP8266WebServer</tspan></text>
-    <text
-       id="text4702-1"
-       y="349.37784"
-       x="115.7594"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       xml:space="preserve"><tspan
-         style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-         y="349.37784"
-         x="115.7594"
-         id="tspan4700-2">2. Register request handlers</tspan><tspan
-         id="tspan4974"
-         style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-         y="355.55145"
-         x="115.7594">    to ESP8266WebServer</tspan></text>
-    <text
-       id="text4702-1-3"
-       y="368.79718"
-       x="122.43944"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       xml:space="preserve"><tspan
-         style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-         y="368.79718"
-         x="122.43944"
-         id="tspan4700-2-3">3. Start AutoConnect,</tspan><tspan
-         id="tspan4976"
-         style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-         y="374.97079"
-         x="122.43944">    no need server.begin()</tspan></text>
-    <text
-       id="text4702-1-3-9"
-       y="417.13007"
-       x="121.19266"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       xml:space="preserve"><tspan
-         style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-         y="417.13007"
-         x="121.19266"
-         id="tspan4700-2-3-5">4. Perform handleClient</tspan><tspan
-         id="tspan4978"
-         style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-         y="423.30368"
-         x="121.19266">    for ESP8266WebServer</tspan></text>
-    <text
-       id="text4702-1-3-9-5"
-       y="429.72409"
-       x="121.46516"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       xml:space="preserve"><tspan
-         style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-         y="429.72409"
-         x="121.46516"
-         id="tspan4700-2-3-5-1">5. Perform handleRequest</tspan><tspan
-         id="tspan4980"
-         style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-         y="435.89771"
-         x="121.46516">    for AutoConnect</tspan></text>
-    <path
-       d="m 92.895309,35.166107 -8.698836,-5.022276 8.698836,-5.022275 z"
-       id="path4984"
-       style="opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596625, 2.26596625;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill" />
-    <path
-       d="m 113.91916,355.65173 -8.69884,-5.02227 8.69884,-5.02228 z"
-       id="path4984-8"
-       style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596627, 2.26596627;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill" />
-    <path
-       d="m 119.14169,423.39187 -8.69884,-5.02227 8.69884,-5.02228 z"
-       id="path4984-8-8-1"
-       style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596632, 2.26596632;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill" />
-    <path
-       d="m 119.14169,435.9823 -8.69884,-5.02228 8.69884,-5.02227 z"
-       id="path4984-8-8-6"
-       style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596632, 2.26596632;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill" />
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/docs/images/handlePortal.svg b/lib/AutoConnect-master/docs/images/handlePortal.svg
deleted file mode 100644
index bc481856af50ad57c5ef559b926686e43c608397..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/images/handlePortal.svg
+++ /dev/null
@@ -1,705 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   id="svg8"
-   version="1.1"
-   viewBox="0 0 191.12044 454.37354"
-   height="454.37354mm"
-   width="191.12044mm">
-  <defs
-     id="defs2" />
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     transform="translate(143.18522,78.353435)"
-     id="layer1">
-    <g
-       transform="translate(-143.18522,-78.340217)"
-       id="g1243">
-      <g
-         id="layer2"
-         transform="translate(5.0000008,4.9999992)"
-         style="display:inline">
-        <path
-           d="M -4.9867716,-4.9999882 V 449.36032 M 0.30489485,-4.9999882 V 449.36032 M 5.5965614,-4.9999882 V 449.36032 M 10.888228,-4.9999882 V 449.36032 M 16.179894,-4.9999882 V 449.36032 M 21.471561,-4.9999882 V 449.36032 M 26.763227,-4.9999882 V 449.36032 M 32.054894,-4.9999882 V 449.36032 M 37.34656,-4.9999882 V 449.36032 M 42.638227,-4.9999882 V 449.36032 M 47.929893,-4.9999882 V 449.36032 M 53.22156,-4.9999882 V 449.36032 M 58.513227,-4.9999882 V 449.36032 M 63.804893,-4.9999882 V 449.36032 M 69.09656,-4.9999882 V 449.36032 M 74.388226,-4.9999882 V 449.36032 M 79.679893,-4.9999882 V 449.36032 M 84.971559,-4.9999882 V 449.36032 M 90.263226,-4.9999882 V 449.36032 M 95.554888,-4.9999882 V 449.36032 M 100.84656,-4.9999882 V 449.36032 M 106.13823,-4.9999882 V 449.36032 M 111.42989,-4.9999882 V 449.36032 M 116.72156,-4.9999882 V 449.36032 M 122.01323,-4.9999882 V 449.36032 M 127.30489,-4.9999882 V 449.36032 M 132.59656,-4.9999882 V 449.36032 M 137.88823,-4.9999882 V 449.36032 M 143.17989,-4.9999882 V 449.36032 M 148.47156,-4.9999882 V 449.36032 M 153.76323,-4.9999882 V 449.36032 M 159.05489,-4.9999882 V 449.36032 M 164.34656,-4.9999882 V 449.36032 M 169.63823,-4.9999882 V 449.36032 M 174.92989,-4.9999882 V 449.36032 M 180.22156,-4.9999882 V 449.36032 M 185.51323,-4.9999882 V 449.36032 M -4.9867716,-4.9999882 H 186.12043 M -4.9867716,0.29167834 H 186.12043 M -4.9867716,5.5833448 H 186.12043 M -4.9867716,10.875012 H 186.12043 M -4.9867716,16.166678 H 186.12043 M -4.9867716,21.458345 H 186.12043 M -4.9867716,26.750011 H 186.12043 M -4.9867716,32.041678 H 186.12043 M -4.9867716,37.333344 H 186.12043 M -4.9867716,42.625011 H 186.12043 M -4.9867716,47.916677 H 186.12043 M -4.9867716,53.208344 H 186.12043 M -4.9867716,58.500011 H 186.12043 M -4.9867716,63.791677 H 186.12043 M -4.9867716,69.083344 H 186.12043 M -4.9867716,74.37501 H 186.12043 M -4.9867716,79.666677 H 186.12043 M -4.9867716,84.958343 H 186.12043 M -4.9867716,90.25001 H 186.12043 M -4.9867716,95.541672 H 186.12043 M -4.9867716,100.83334 H 186.12043 M -4.9867716,106.12501 H 186.12043 M -4.9867716,111.41667 H 186.12043 M -4.9867716,116.70834 H 186.12043 M -4.9867716,122.00001 H 186.12043 M -4.9867716,127.29167 H 186.12043 M -4.9867716,132.58334 H 186.12043 M -4.9867716,137.87501 H 186.12043 M -4.9867716,143.16667 H 186.12043 M -4.9867716,148.45834 H 186.12043 M -4.9867716,153.75001 H 186.12043 M -4.9867716,159.04167 H 186.12043 M -4.9867716,164.33334 H 186.12043 M -4.9867716,169.62501 H 186.12043 M -4.9867716,174.91667 H 186.12043 M -4.9867716,180.20834 H 186.12043 M -4.9867716,185.50001 H 186.12043 M -4.9867716,190.79167 H 186.12043 M -4.9867716,196.08334 H 186.12043 M -4.9867716,201.37501 H 186.12043 M -4.9867716,206.66667 H 186.12043 M -4.9867716,211.95834 H 186.12043 M -4.9867716,217.25001 H 186.12043 M -4.9867716,222.54167 H 186.12043 M -4.9867716,227.83334 H 186.12043 M -4.9867716,233.125 H 186.12043 M -4.9867716,238.41667 H 186.12043 M -4.9867716,243.70834 H 186.12043 M -4.9867716,249 H 186.12043 M -4.9867716,254.29167 H 186.12043 M -4.9867716,259.58334 H 186.12043 M -4.9867716,264.875 H 186.12043 M -4.9867716,270.16667 H 186.12043 M -4.9867716,275.45834 H 186.12043 M -4.9867716,280.75 H 186.12043 M -4.9867716,286.04167 H 186.12043 M -4.9867716,291.33334 H 186.12043 M -4.9867716,296.625 H 186.12043 M -4.9867716,301.91667 H 186.12043 M -4.9867716,307.20834 H 186.12043 M -4.9867716,312.5 H 186.12043 M -4.9867716,317.79167 H 186.12043 M -4.9867716,323.08334 H 186.12043 M -4.9867716,328.375 H 186.12043 M -4.9867716,333.66667 H 186.12043 M -4.9867716,338.95834 H 186.12043 M -4.9867716,344.25 H 186.12043 M -4.9867716,349.54167 H 186.12043 M -4.9867716,354.83334 H 186.12043 M -4.9867716,360.125 H 186.12043 M -4.9867716,365.41667 H 186.12043 M -4.9867716,370.70834 H 186.12043 M -4.9867716,376 H 186.12043 M -4.9867716,381.29167 H 186.12043 M -4.9867716,386.58333 H 186.12043 M -4.9867716,391.875 H 186.12043 M -4.9867716,397.16667 H 186.12043 M -4.9867716,402.45833 H 186.12043 M -4.9867716,407.75 H 186.12043 M -4.9867716,413.04167 H 186.12043 M -4.9867716,418.33333 H 186.12043 M -4.9867716,423.625 H 186.12043 M -4.9867716,428.91667 H 186.12043 M -4.9867716,434.20833 H 186.12043 M -4.9867716,439.5 H 186.12043 M -4.9867716,444.79167 H 186.12043"
-           style="fill:none;stroke:#000000;stroke-width:0.0264583px"
-           id="path4982" />
-      </g>
-      <g
-         id="layer1-3"
-         transform="translate(46.95536,63.837051)"
-         style="display:inline">
-        <text
-           xml:space="preserve"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055563px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-           x="-41.95536"
-           y="-56.407742"
-           id="text4506"><tspan
-             id="tspan4504"
-             x="-41.95536"
-             y="-56.407742"
-             style="font-size:3.17499995px;stroke-width:0.26458332"><tspan
-   style="fill:#669900"
-   id="tspan4776">#include</tspan> &lt;<tspan
-   style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'"
-   id="tspan4780">ESP8266WiFi.h</tspan>&gt;</tspan><tspan
-             x="-41.95536"
-             y="-51.557049"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4508"><tspan
-   style="fill:#669900"
-   id="tspan4778">#include</tspan> &lt;<tspan
-   style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'"
-   id="tspan4782">ESP8266WebServer.h</tspan>&gt;</tspan><tspan
-             x="-41.95536"
-             y="-46.706352"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4510"><tspan
-   style="fill:#669900"
-   id="tspan4786">#include</tspan> &lt;<tspan
-   style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'"
-   id="tspan4784">AutoConnect.h</tspan>&gt;</tspan><tspan
-             x="-41.95536"
-             y="-41.855659"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4512" /><tspan
-             x="-41.95536"
-             y="-37.004963"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4516"><tspan
-   style="fill:#ff6600"
-   id="tspan4790">AutoConnect </tspan>portal;</tspan><tspan
-             x="-41.95536"
-             y="-32.15427"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4518" /><tspan
-             x="-41.95536"
-             y="-27.303574"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4520"><tspan
-   style="fill:#3366cc"
-   id="tspan4792">void</tspan> handleRoot() {</tspan><tspan
-             x="-41.95536"
-             y="-22.452879"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4522"><tspan
-   style="fill:#3366cc"
-   id="tspan4794">String</tspan> page = PSTR(</tspan><tspan
-             x="-41.95536"
-             y="-17.602184"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4524">&quot;&lt;html&gt;&quot;</tspan><tspan
-             x="-41.95536"
-             y="-12.751491"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4526">&quot;&lt;head&gt;&quot;</tspan><tspan
-             x="-41.95536"
-             y="-7.9007959"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4528">  &quot;&lt;meta name=\&quot;viewport\&quot; content=\&quot;width=device-width, initial-scale=1\&quot;&gt;&quot;</tspan><tspan
-             x="-41.95536"
-             y="-3.0501018"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4530">  &quot;&lt;style type=\&quot;text/css\&quot;&gt;&quot;</tspan><tspan
-             x="-41.95536"
-             y="1.8005929"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4532">    &quot;body {&quot;</tspan><tspan
-             x="-41.95536"
-             y="6.6512876"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4534">    &quot;-webkit-appearance:none;&quot;</tspan><tspan
-             x="-41.95536"
-             y="11.501982"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4536">    &quot;-moz-appearance:none;&quot;</tspan><tspan
-             x="-41.95536"
-             y="16.352676"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4538">    &quot;font-family:'Arial',sans-serif;&quot;</tspan><tspan
-             x="-41.95536"
-             y="21.203371"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4540">    &quot;text-align:center;&quot;</tspan><tspan
-             x="-41.95536"
-             y="26.054066"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4542">    &quot;}&quot;</tspan><tspan
-             x="-41.95536"
-             y="30.90476"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4544">    &quot;.menu {&quot;</tspan><tspan
-             x="-41.95536"
-             y="35.755455"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4546">    &quot;text-align:right;&quot;</tspan><tspan
-             x="-41.95536"
-             y="40.606148"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4548">    &quot;}&quot;</tspan><tspan
-             x="-41.95536"
-             y="45.456844"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4550">    &quot;.button {&quot;</tspan><tspan
-             x="-41.95536"
-             y="50.307537"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4552">    &quot;display:inline-block;&quot;</tspan><tspan
-             x="-41.95536"
-             y="55.158234"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4554">    &quot;border-radius:7px;&quot;</tspan><tspan
-             x="-41.95536"
-             y="60.008926"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4556">    &quot;background:#73ad21;&quot;</tspan><tspan
-             x="-41.95536"
-             y="64.859619"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4558">    &quot;margin:0 10px 0 10px;&quot;</tspan><tspan
-             x="-41.95536"
-             y="69.71032"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4560">    &quot;padding:10px 20px 10px 20px;&quot;</tspan><tspan
-             x="-41.95536"
-             y="74.561012"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4562">    &quot;text-decoration:none;&quot;</tspan><tspan
-             x="-41.95536"
-             y="79.411705"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4564">    &quot;color:#000000;&quot;</tspan><tspan
-             x="-41.95536"
-             y="84.262398"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4566">    &quot;}&quot;</tspan><tspan
-             x="-41.95536"
-             y="89.113098"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4568">  &quot;&lt;/style&gt;&quot;</tspan><tspan
-             x="-41.95536"
-             y="93.963791"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4570">&quot;&lt;/head&gt;&quot;</tspan><tspan
-             x="-41.95536"
-             y="98.814484"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4572">&quot;&lt;body&gt;&quot;</tspan><tspan
-             x="-41.95536"
-             y="103.66518"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4574">  &quot;&lt;p class=\&quot;menu\&quot;&gt;&quot; <tspan
-   style="fill:#000000"
-   id="tspan4798">AUTOCONNECT_LINK(BAR_32)</tspan> &quot;&lt;/p&gt;&quot;</tspan><tspan
-             x="-41.95536"
-             y="108.51587"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4576">  &quot;BUILT-IN LED&lt;br&gt;&quot;</tspan><tspan
-             x="-41.95536"
-             y="113.36657"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4578"><tspan
-   style="fill:#003399"
-   id="tspan4796">  &quot;GPIO(&quot;</tspan>);</tspan><tspan
-             x="-41.95536"
-             y="118.21726"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4580">  page += <tspan
-   style="fill:#3366cc"
-   id="tspan4800">String</tspan>(BUILTIN_LED);</tspan><tspan
-             x="-41.95536"
-             y="123.06796"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4582">  page += <tspan
-   style="fill:#3366cc"
-   id="tspan4802">String</tspan>(F(<tspan
-   style="fill:#003399"
-   id="tspan4804">&quot;) : &lt;span style=\&quot;font-weight:bold;color:&quot;</tspan>));</tspan><tspan
-             x="-41.95536"
-             y="127.91865"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4584">  page += <tspan
-   style="fill:#ff6600"
-   id="tspan4806">digitalRead</tspan>(BUILTIN_LED) ? <tspan
-   style="fill:#3366cc"
-   id="tspan4808">String</tspan>(<tspan
-   style="fill:#003399"
-   id="tspan4812">&quot;Tomato\&quot;&gt;HIGH&quot;</tspan>) : <tspan
-   style="fill:#3366cc"
-   id="tspan4814">String</tspan>(<tspan
-   style="fill:#003399"
-   id="tspan4816">&quot;SlateBlue\&quot;&gt;LOW&quot;</tspan>);</tspan><tspan
-             x="-41.95536"
-             y="132.76935"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4586">  page += <tspan
-   style="fill:#ff6600"
-   id="tspan4818">String</tspan>(F(<tspan
-   style="fill:#003399"
-   id="tspan4820">&quot;&lt;/span&gt;&quot;</tspan>));</tspan><tspan
-             x="-41.95536"
-             y="137.62004"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4588">  page += <tspan
-   style="fill:#ff6600"
-   id="tspan4822">String</tspan>(F(<tspan
-   style="fill:#003399"
-   id="tspan4826">&quot;&lt;p&gt;&lt;a class=\&quot;button\&quot; href=\&quot;/io?v=low\&quot;&gt;low&lt;/a&gt;</tspan></tspan><tspan
-             x="-41.95536"
-             y="142.47073"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4968"><tspan
-   style="fill:#003399"
-   id="tspan4970">                                 &lt;a class=\&quot;button\&quot; href=\&quot;/io?v=high\&quot;&gt;high&lt;/a&gt;&lt;/p&gt;&quot;</tspan>));</tspan><tspan
-             x="-41.95536"
-             y="147.32143"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4590">  page += <tspan
-   style="fill:#ff6600"
-   id="tspan4824">String</tspan>(F(<tspan
-   style="fill:#003399"
-   id="tspan4828">&quot;&lt;/body&gt;&lt;/html&gt;&quot;</tspan>));</tspan><tspan
-             x="-41.95536"
-             y="152.17212"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4592">  portal.<tspan
-   style="fill:#ff6600"
-   id="tspan5104">host</tspan>().<tspan
-   style="fill:#ff6600"
-   id="tspan4832">send</tspan>(200, <tspan
-   style="fill:#003399"
-   id="tspan4834">&quot;text/html&quot;</tspan>, page);</tspan><tspan
-             x="-41.95536"
-             y="157.02281"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4594">}</tspan><tspan
-             x="-41.95536"
-             y="161.87352"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4596" /><tspan
-             x="-41.95536"
-             y="166.72421"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4598"><tspan
-   style="fill:#3366cc"
-   id="tspan4836">void</tspan> handleGPIO() {</tspan><tspan
-             x="-41.95536"
-             y="171.57491"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan5040"><tspan
-   style="fill:#ff6600"
-   id="tspan5088">ESP8266WebServer</tspan>&amp; server = portal.<tspan
-   style="fill:#ff6600"
-   id="tspan5084">host</tspan>();</tspan><tspan
-             x="-41.95536"
-             y="176.4256"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4600"><tspan
-   style="fill:#808080"
-   id="tspan4838">if</tspan> (server.<tspan
-   style="fill:#ff6600"
-   id="tspan4842">arg</tspan>(<tspan
-   style="fill:#003399"
-   id="tspan4844">&quot;v&quot;</tspan>) == <tspan
-   style="fill:#003399"
-   id="tspan4846">&quot;low&quot;</tspan>)</tspan><tspan
-             x="-41.95536"
-             y="181.27629"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4602"><tspan
-   style="fill:#ff6600"
-   id="tspan4850">digitalWrite</tspan>(BUILTIN_LED, <tspan
-   style="fill:#ff6600"
-   id="tspan4852">LOW</tspan>);</tspan><tspan
-             x="-41.95536"
-             y="186.12698"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4604"><tspan
-   style="fill:#808080"
-   id="tspan4860">else</tspan><tspan
-   style="fill:#808080"
-   id="tspan4862">if</tspan> (server.<tspan
-   style="fill:#ff6600"
-   id="tspan4858">arg</tspan>(<tspan
-   style="fill:#003399"
-   id="tspan4856">&quot;v&quot;</tspan>) == <tspan
-   style="fill:#003399"
-   id="tspan4854">&quot;high&quot;</tspan>)</tspan><tspan
-             x="-41.95536"
-             y="190.97768"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4606"><tspan
-   style="fill:#ff6600"
-   id="tspan4864">digitalWrite</tspan>(BUILTIN_LED, <tspan
-   style="fill:#ff6600"
-   id="tspan4866">HIGH</tspan>);</tspan><tspan
-             x="-41.95536"
-             y="195.82837"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4608">  sendRedirect(&quot;/&quot;);</tspan><tspan
-             x="-41.95536"
-             y="200.67906"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4610">}</tspan><tspan
-             x="-41.95536"
-             y="205.52977"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4612" /><tspan
-             x="-41.95536"
-             y="210.38046"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4614"><tspan
-   style="fill:#3366cc"
-   id="tspan4868">void</tspan> sendRedirect(<tspan
-   style="fill:#3366cc"
-   id="tspan4870">String</tspan> uri) {</tspan><tspan
-             x="-41.95536"
-             y="215.23116"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan5042"><tspan
-   style="fill:#ff6600"
-   id="tspan5090">ESP8266WebServer</tspan>&amp; server = portal.<tspan
-   style="fill:#ff6600"
-   id="tspan5086">host</tspan>();</tspan><tspan
-             x="-41.95536"
-             y="220.08185"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4616">  server.<tspan
-   style="fill:#ff6600"
-   id="tspan4872">sendHeader</tspan>(<tspan
-   style="fill:#003399"
-   id="tspan4874">&quot;Location&quot;</tspan>, uri, <tspan
-   style="fill:#3366cc"
-   id="tspan4876">true</tspan>);</tspan><tspan
-             x="-41.95536"
-             y="224.93254"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4618">  server.<tspan
-   style="fill:#ff6600"
-   id="tspan4880">send</tspan>(302, &quot;text/plain&quot;, <tspan
-   style="fill:#003399"
-   id="tspan4878">&quot;&quot;</tspan>);</tspan><tspan
-             x="-41.95536"
-             y="229.78323"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4620">  server.<tspan
-   style="fill:#ff6600"
-   id="tspan4884">client</tspan>().<tspan
-   style="fill:#ff6600"
-   id="tspan4886">stop</tspan>();</tspan><tspan
-             x="-41.95536"
-             y="234.63393"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4622">}</tspan><tspan
-             x="-41.95536"
-             y="239.48462"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4624" /><tspan
-             x="-41.95536"
-             y="244.33533"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4626"><tspan
-   style="fill:#3366cc"
-   id="tspan4890">void</tspan> setup() {</tspan><tspan
-             x="-41.95536"
-             y="249.18602"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4628"><tspan
-   style="fill:#ff6600"
-   id="tspan4888">delay</tspan>(1000);</tspan><tspan
-             x="-41.95536"
-             y="254.03671"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4630"><tspan
-   style="fill:#ff6600"
-   id="tspan4892">Serial</tspan>.<tspan
-   style="fill:#ff6600"
-   id="tspan4894">begin</tspan>(115200);</tspan><tspan
-             x="-41.95536"
-             y="258.88739"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4632"><tspan
-   style="fill:#ff6600"
-   id="tspan4898">Serial</tspan>.<tspan
-   style="fill:#ff6600"
-   id="tspan4896">println</tspan>();</tspan><tspan
-             x="-41.95536"
-             y="263.7381"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4634"><tspan
-   style="fill:#ff6600"
-   id="tspan4900">pinMode</tspan>(BUILTIN_LED, <tspan
-   style="fill:#ff6600"
-   id="tspan4902">OUTPUT</tspan>);</tspan><tspan
-             x="-41.95536"
-             y="268.58881"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4636" /><tspan
-             x="-41.95536"
-             y="273.43948"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4638"><tspan
-               style="fill:#808080"
-               id="tspan4904">// Put the home location of the web site.</tspan></tspan><tspan
-             x="-41.95536"
-             y="278.29019"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4640"><tspan
-               style="fill:#808080"
-               id="tspan4906">// But in usually, setting the home uri is not needed cause default location is &quot;/&quot;.</tspan></tspan><tspan
-             x="-41.95536"
-             y="283.14087"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4642"><tspan
-               style="fill:#808080"
-               id="tspan4908">//portal.home(&quot;/&quot;);</tspan></tspan><tspan
-             x="-41.95536"
-             y="287.99158"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4644" /><tspan
-             x="-41.95536"
-             y="292.84225"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4652">  // Starts user web site included the AutoConnect portal.</tspan><tspan
-             x="-41.95536"
-             y="297.69296"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4654"><tspan
-   style="fill:#808080"
-   id="tspan4934">if</tspan> (portal.<tspan
-   style="fill:#ff6600"
-   id="tspan4918">begin</tspan>()) {</tspan><tspan
-             x="-41.95536"
-             y="302.54364"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4656"><tspan
-   style="fill:#ff6600"
-   id="tspan5092">ESP8266WebServer</tspan>&amp; server = portal.<tspan
-   style="fill:#ff6600"
-   id="tspan5094">host</tspan>();</tspan><tspan
-             x="-41.95536"
-             y="307.39435"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan5044">    server.<tspan
-   style="fill:#ff6600"
-   id="tspan5096">on</tspan>(<tspan
-   style="fill:#003399"
-   id="tspan5100">&quot;/&quot;</tspan>, handleRoot);</tspan><tspan
-             x="-41.95536"
-             y="312.24506"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan5052">    server.<tspan
-   style="fill:#ff6600"
-   id="tspan5098">on</tspan>(<tspan
-   style="fill:#003399"
-   id="tspan5102">&quot;/io&quot;</tspan>, handleGPIO);</tspan><tspan
-             x="-41.95536"
-             y="317.09573"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan5060"><tspan
-   style="fill:#ff6600"
-   id="tspan4920">Serial</tspan>.<tspan
-   style="fill:#ff6600"
-   id="tspan4922">println</tspan>(<tspan
-   style="fill:#003399"
-   id="tspan4924">&quot;Started, IP:&quot;</tspan> + <tspan
-   style="fill:#ff6600"
-   id="tspan4926">WiFi</tspan>.<tspan
-   style="fill:#ff6600"
-   id="tspan4928">localIP</tspan>().<tspan
-   style="fill:#ff6600"
-   id="tspan4930">toString</tspan>());</tspan><tspan
-             x="-41.95536"
-             y="321.94644"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4658">  }</tspan><tspan
-             x="-41.95536"
-             y="326.79712"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4660"><tspan
-   style="fill:#808080"
-   id="tspan4936">else</tspan> {</tspan><tspan
-             x="-41.95536"
-             y="331.64783"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4662"><tspan
-   style="fill:#ff6600"
-   id="tspan4938">Serial</tspan>.<tspan
-   style="fill:#ff6600"
-   id="tspan4940">println</tspan>(<tspan
-   style="fill:#003399"
-   id="tspan4942">&quot;Connection failed.&quot;</tspan>);</tspan><tspan
-             x="-41.95536"
-             y="336.4985"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4664"><tspan
-   style="fill:#808080"
-   id="tspan4944">while</tspan> (<tspan
-   style="fill:#3366cc"
-   id="tspan4946">true</tspan>) { <tspan
-   style="fill:#ff6600"
-   id="tspan4948">yield</tspan>(); }</tspan><tspan
-             x="-41.95536"
-             y="341.34921"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4666">  }</tspan><tspan
-             x="-41.95536"
-             y="346.19989"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4668">}</tspan><tspan
-             x="-41.95536"
-             y="351.0506"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4670" /><tspan
-             x="-41.95536"
-             y="355.90131"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4672"><tspan
-   style="fill:#3366cc"
-   id="tspan4950">void</tspan> loop() {</tspan><tspan
-             x="-41.95536"
-             y="360.75198"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4676">  portal.<tspan
-   style="fill:#ff6600"
-   id="tspan4954">handleClient</tspan>();   // Need handleClient only.</tspan><tspan
-             x="-41.95536"
-             y="365.60269"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4678"><tspan
-   style="fill:#808080"
-   id="tspan4966">if</tspan> (<tspan
-   style="fill:#ff6600"
-   id="tspan4956">WiFi</tspan>.<tspan
-   style="fill:#ff6600"
-   id="tspan4958">status</tspan>() == <tspan
-   style="fill:#3366cc"
-   id="tspan4960">WL_IDLE_STATUS</tspan>) {</tspan><tspan
-             x="-41.95536"
-             y="370.45337"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4680">    ESP.<tspan
-   style="fill:#ff6600"
-   id="tspan4962">reset</tspan>();</tspan><tspan
-             x="-41.95536"
-             y="375.30408"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4682"><tspan
-   style="fill:#ff6600"
-   id="tspan4964">delay</tspan>(1000);</tspan><tspan
-             x="-41.95536"
-             y="380.15475"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4684">  }</tspan><tspan
-             x="-41.95536"
-             y="385.00546"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4686">}</tspan><tspan
-             x="-41.95536"
-             y="389.85617"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4688" /></text>
-      </g>
-      <g
-         id="layer3"
-         style="display:inline">
-        <path
-           style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.2659663, 2.2659663;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill"
-           id="path4984-8-8"
-           d="m 119.94348,365.5661 -8.69884,-5.02228 8.69884,-5.02227 z" />
-        <text
-           xml:space="preserve"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-           x="115.3639"
-           y="27.289909"
-           id="text4702"><tspan
-             x="115.3639"
-             y="27.289909"
-             style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-             id="tspan4972">1. Declare AutoConnect only</tspan></text>
-        <text
-           xml:space="preserve"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-           x="115.7594"
-           y="373.71988"
-           id="text4702-1"><tspan
-             id="tspan4700-2"
-             x="115.7594"
-             y="373.71988"
-             style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332">4. Register request handlers</tspan><tspan
-             x="115.7594"
-             y="379.89349"
-             style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-             id="tspan4974">    to ESP8266WebServer</tspan></text>
-        <text
-           xml:space="preserve"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-           x="122.43944"
-           y="358.74286"
-           id="text4702-1-3"><tspan
-             id="tspan4700-2-3"
-             x="122.43944"
-             y="358.74286"
-             style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332">3. Start AutoConnect,</tspan><tspan
-             x="122.43944"
-             y="364.91647"
-             style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-             id="tspan4976">    no need server.begin()</tspan></text>
-        <text
-           xml:space="preserve"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-           x="127.32045"
-           y="422.84482"
-           id="text4702-1-3-9-5"><tspan
-             id="tspan4700-2-3-5-1"
-             x="127.32045"
-             y="422.84482"
-             style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332">5. Perform handleClient</tspan><tspan
-             x="127.32045"
-             y="429.01843"
-             style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-             id="tspan4980">    for AutoConnect</tspan></text>
-        <path
-           style="opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596625, 2.26596625;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill"
-           id="path4984"
-           d="m 113.53278,30.932772 -8.69884,-5.022277 8.69884,-5.022275 z" />
-        <path
-           style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596627, 2.26596627;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill"
-           id="path4984-8"
-           d="m 113.91916,379.99377 -8.69884,-5.02227 8.69884,-5.02228 z" />
-        <path
-           style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596632, 2.26596632;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill"
-           id="path4984-8-8-6"
-           d="m 124.96248,429.10303 -8.69884,-5.02228 8.69884,-5.02228 z" />
-        <text
-           xml:space="preserve"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-           x="108.45959"
-           y="235.34866"
-           id="text4702-2"><tspan
-             x="108.45959"
-             y="235.34866"
-             style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-             id="tspan4972-5">2. Refer to ESP8266WebServer</tspan></text>
-        <path
-           style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596627, 2.26596627;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill"
-           id="path4984-6"
-           d="m 105.91244,238.99179 -8.698832,-5.02228 8.698842,-5.02227 z" />
-      </g>
-    </g>
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/docs/images/hello_world.png b/lib/AutoConnect-master/docs/images/hello_world.png
deleted file mode 100644
index 8fd379b42fc2a7957004eadd7f21eeb647955327..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/hello_world.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/include.png b/lib/AutoConnect-master/docs/images/include.png
deleted file mode 100644
index 183b5a5370d2db2d1b2949965409533fd1a03f37..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/include.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/ins_lib.png b/lib/AutoConnect-master/docs/images/ins_lib.png
deleted file mode 100644
index 5e1bad53b0bcd1656f476b9db61e1b2d5ff7c043..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/ins_lib.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/lm.png b/lib/AutoConnect-master/docs/images/lm.png
deleted file mode 100644
index 80980d99a46e039249ecf8b581d68498c2651895..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/lm.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/logic_sequence.svg b/lib/AutoConnect-master/docs/images/logic_sequence.svg
deleted file mode 100644
index 57c7804cbf176cd52733867721a2dbd8a8baabc6..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/images/logic_sequence.svg
+++ /dev/null
@@ -1,504 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   id="svg8"
-   version="1.1"
-   viewBox="0 0 150.228 144.32257"
-   height="144.32257mm"
-   width="150.228mm">
-  <defs
-     id="defs2" />
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     transform="translate(-28.675957,-9.6488822)"
-     style="display:inline"
-     id="layer2">
-    <path
-       id="path897"
-       style="fill:none;stroke:#000000;stroke-width:0.0264583px"
-       d="M 0,0 V 296.99999 M 5.2916665,0 V 296.99999 M 10.583333,0 V 296.99999 M 15.875,0 V 296.99999 M 21.166666,0 V 296.99999 M 26.458333,0 V 296.99999 M 31.749999,0 V 296.99999 M 37.041666,0 V 296.99999 M 42.333332,0 V 296.99999 M 47.624999,0 V 296.99999 M 52.916665,0 V 296.99999 M 58.208332,0 V 296.99999 M 63.499999,0 V 296.99999 M 68.791665,0 V 296.99999 M 74.083332,0 V 296.99999 M 79.374998,0 V 296.99999 M 84.666665,0 V 296.99999 M 89.958331,0 V 296.99999 M 95.249998,0 V 296.99999 M 100.54166,0 V 296.99999 M 105.83333,0 V 296.99999 M 111.125,0 V 296.99999 M 116.41666,0 V 296.99999 M 121.70833,0 V 296.99999 M 127,0 V 296.99999 M 132.29166,0 V 296.99999 M 137.58333,0 V 296.99999 M 142.875,0 V 296.99999 M 148.16666,0 V 296.99999 M 153.45833,0 V 296.99999 M 158.75,0 V 296.99999 M 164.04166,0 V 296.99999 M 169.33333,0 V 296.99999 M 174.625,0 V 296.99999 M 179.91666,0 V 296.99999 M 185.20833,0 V 296.99999 M 190.5,0 V 296.99999 M 195.79166,0 V 296.99999 M 201.08333,0 V 296.99999 M 206.375,0 V 296.99999 M 0,0 H 210 M 0,5.2916665 H 210 M 0,10.583333 H 210 M 0,15.875 H 210 M 0,21.166666 H 210 M 0,26.458333 H 210 M 0,31.749999 H 210 M 0,37.041666 H 210 M 0,42.333332 H 210 M 0,47.624999 H 210 M 0,52.916665 H 210 M 0,58.208332 H 210 M 0,63.499999 H 210 M 0,68.791665 H 210 M 0,74.083332 H 210 M 0,79.374998 H 210 M 0,84.666665 H 210 M 0,89.958331 H 210 M 0,95.249998 H 210 M 0,100.54166 H 210 M 0,105.83333 H 210 M 0,111.125 H 210 M 0,116.41666 H 210 M 0,121.70833 H 210 M 0,127 H 210 M 0,132.29166 H 210 M 0,137.58333 H 210 M 0,142.875 H 210 M 0,148.16666 H 210 M 0,153.45833 H 210 M 0,158.75 H 210 M 0,164.04166 H 210 M 0,169.33333 H 210 M 0,174.625 H 210 M 0,179.91666 H 210 M 0,185.20833 H 210 M 0,190.5 H 210 M 0,195.79166 H 210 M 0,201.08333 H 210 M 0,206.375 H 210 M 0,211.66666 H 210 M 0,216.95833 H 210 M 0,222.24999 H 210 M 0,227.54166 H 210 M 0,232.83333 H 210 M 0,238.12499 H 210 M 0,243.41666 H 210 M 0,248.70833 H 210 M 0,253.99999 H 210 M 0,259.29166 H 210 M 0,264.58333 H 210 M 0,269.87499 H 210 M 0,275.16666 H 210 M 0,280.45833 H 210 M 0,285.74999 H 210 M 0,291.04166 H 210 M 0,296.33333 h 210" />
-  </g>
-  <g
-     transform="translate(-28.675957,-9.6488822)"
-     style="display:inline"
-     id="layer1">
-    <text
-       id="text817"
-       y="17.329166"
-       x="33.675957"
-       style="font-style:normal;font-weight:normal;font-size:3.52777767px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       xml:space="preserve"><tspan
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="17.329166"
-         x="33.675957"
-         id="tspan815"><tspan
-   id="tspan899"
-   style="fill:#669900">#include</tspan> &lt;<tspan
-   id="tspan909"
-   style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic'">ESP8266WiFi.h</tspan>&gt;</tspan><tspan
-         id="tspan819"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="21.738888"
-         x="33.675957"><tspan
-   id="tspan905"
-   style="fill:#669900">#include</tspan> &lt;<tspan
-   id="tspan915"
-   style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic'">ESP8266WebServer.h</tspan>&gt;</tspan><tspan
-         id="tspan821"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="26.148611"
-         x="33.675957"><tspan
-   id="tspan907"
-   style="fill:#669900">#include</tspan> &lt;<tspan
-   id="tspan921"
-   style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic'">AutoConnect.h</tspan>&gt;</tspan><tspan
-         id="tspan823"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="30.558332"
-         x="33.675957" /><tspan
-         id="tspan825"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="34.968056"
-         x="33.675957"><tspan
-   id="tspan923"
-   style="fill:#ff6600">ESP8266WebServer</tspan> Server;</tspan><tspan
-         id="tspan827"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="39.377777"
-         x="33.675957"><tspan
-   id="tspan927"
-   style="fill:#ff6600">AutoConnect</tspan>           Portal(Server);</tspan><tspan
-         id="tspan829"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="43.787498"
-         x="33.675957" /><tspan
-         id="tspan831"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="48.19722"
-         x="33.675957"><tspan
-   id="tspan929"
-   style="fill:#3366cc">void</tspan> rootPage() {</tspan><tspan
-         id="tspan833"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="52.606941"
-         x="33.675957">  <tspan
-   id="tspan981"
-   style="fill:#3366cc">char</tspan> content[] = &quot;Hello, world&quot;;</tspan><tspan
-         id="tspan835"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="57.016666"
-         x="33.675957">  Server.<tspan
-   id="tspan955"
-   style="fill:#ff6600">send</tspan>(200, &quot;text/plain&quot;, content);</tspan><tspan
-         id="tspan837"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="61.426388"
-         x="33.675957">}</tspan><tspan
-         id="tspan839"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="65.836113"
-         x="33.675957" /><tspan
-         id="tspan841"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="70.245834"
-         x="33.675957"><tspan
-   id="tspan937"
-   style="fill:#3366cc">void</tspan> <tspan
-   id="tspan935"
-   style="fill:#808080">setup</tspan>() {</tspan><tspan
-         id="tspan843"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="74.655556"
-         x="33.675957">  <tspan
-   id="tspan949"
-   style="fill:#ff6600">delay</tspan>(1000);</tspan><tspan
-         id="tspan849"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="79.065277"
-         x="33.675957" /><tspan
-         id="tspan851"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="83.474998"
-         x="33.675957">  Server.<tspan
-   id="tspan947"
-   style="fill:#ff6600">on</tspan>(<tspan
-   id="tspan963"
-   style="fill:#003399">&quot;/&quot;</tspan>, rootPage);</tspan><tspan
-         id="tspan853"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="87.88472"
-         x="33.675957">  </tspan><tspan
-         id="tspan4825"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="92.294441"
-         x="33.675957"><tspan
-   id="tspan4827"
-   style="fill:#3366cc">  boolean</tspan> r = Portal.<tspan
-   id="tspan961"
-   style="fill:#ff6600">begin</tspan>();</tspan><tspan
-         id="tspan971"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="96.704163"
-         x="33.675957">  </tspan><tspan
-         id="tspan4830"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="101.11388"
-         x="33.675957"><tspan
-   id="tspan4832"
-   style="fill:#404040">  if</tspan> (!r) {</tspan><tspan
-         id="tspan855"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="105.52361"
-         x="33.675957">    <tspan
-   id="tspan945"
-   style="fill:#ff6600">delay</tspan>(1000);<tspan
-   id="tspan969"
-   style="fill:#003399"></tspan></tspan><tspan
-         id="tspan5494"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="109.93333"
-         x="33.675957"><tspan
-   id="tspan5496"
-   style="fill:#003399">    </tspan>ESP.reset();</tspan><tspan
-         id="tspan857"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="114.34306"
-         x="33.675957">  }</tspan><tspan
-         id="tspan859"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="118.75278"
-         x="33.675957">}</tspan><tspan
-         id="tspan861"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="123.1625"
-         x="33.675957" /><tspan
-         id="tspan863"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="127.57222"
-         x="33.675957"><tspan
-   id="tspan939"
-   style="fill:#3366cc">void</tspan> loop() {</tspan><tspan
-         id="tspan865"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="131.98193"
-         x="33.675957">    Server.<tspan
-   id="tspan941"
-   style="fill:#ff6600">handleClient</tspan>();</tspan><tspan
-         id="tspan867"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="136.39166"
-         x="33.675957">}</tspan><tspan
-         id="tspan869"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="140.80139"
-         x="33.675957" /></text>
-  </g>
-  <g
-     transform="translate(-28.675957,-9.6488822)"
-     id="layer3">
-    <g
-       transform="translate(7.0295931,1.4967093)"
-       id="g5584">
-      <g
-         id="g5577">
-        <rect
-           y="120.4157"
-           x="96.916679"
-           height="26.788187"
-           width="69.782677"
-           id="rect987-6-7-1-5-4"
-           style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.34999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-        <rect
-           y="120.4157"
-           x="96.90123"
-           height="26.884048"
-           width="2.7517393"
-           id="rect985-1-0-3-6-7"
-           style="opacity:1;fill:#c8aabd;fill-opacity:1;stroke:#c8aabd;stroke-width:0.34999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-      </g>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="102.72446"
-         y="126.50675"
-         id="text5481-6"><tspan
-           id="tspan5479-9"
-           x="102.72446"
-           y="126.50675"
-           style="stroke-width:0.26458332">loop()</tspan></text>
-    </g>
-    <g
-       transform="translate(7.0295931,1.4967093)"
-       id="g5536">
-      <g
-         id="g5529">
-        <rect
-           y="63.351486"
-           x="96.967033"
-           height="52.881226"
-           width="69.681969"
-           id="rect987-6-7-1-5"
-           style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.34999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-        <rect
-           y="63.335812"
-           x="96.949257"
-           height="52.912579"
-           width="2.6556907"
-           id="rect985-1-0-3-6"
-           style="opacity:1;fill:#c8aabd;fill-opacity:1;stroke:#c8aabd;stroke-width:0.34999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-      </g>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="102.72446"
-         y="69.392189"
-         id="text5481"><tspan
-           id="tspan5479"
-           x="102.72446"
-           y="69.392189"
-           style="stroke-width:0.26458332">setup()</tspan></text>
-    </g>
-    <g
-       transform="translate(-30.012096,13.667544)"
-       id="g5450">
-      <g
-         id="g5117"
-         transform="translate(33.994579,-19.143525)">
-        <rect
-           y="82.389336"
-           x="104.77654"
-           height="10.649512"
-           width="61.649513"
-           id="rect987-6-9"
-           style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.35048801;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-        <rect
-           y="82.389336"
-           x="104.77654"
-           height="10.655192"
-           width="2.6608834"
-           id="rect985-1-9"
-           style="opacity:1;fill:#83bee2;fill-opacity:1;stroke:#83bee2;stroke-width:0.34480736;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-      </g>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="143.86685"
-         y="70.421936"
-         id="text995-0-8"><tspan
-           id="tspan993-7-0"
-           x="143.86685"
-           y="70.421936"
-           style="font-size:4.93888903px;stroke-width:0.26458332">Set URL handler</tspan></text>
-    </g>
-    <g
-       transform="translate(-30.012096,12.080043)"
-       id="g5443">
-      <g
-         transform="translate(33.994579,-8.488335)"
-         id="g5117-1">
-        <rect
-           y="82.389336"
-           x="104.77654"
-           height="10.649512"
-           width="61.649513"
-           id="rect987-6-9-8"
-           style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.35048801;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-        <rect
-           y="82.389336"
-           x="104.77654"
-           height="10.655192"
-           width="2.6608834"
-           id="rect985-1-9-7"
-           style="opacity:1;fill:#83bee2;fill-opacity:1;stroke:#83bee2;stroke-width:0.34480736;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-      </g>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="143.70769"
-         y="80.545097"
-         id="text995-0-8-6"><tspan
-           id="tspan993-7-0-9"
-           x="143.70769"
-           y="80.545097"
-           style="font-size:4.93888903px;stroke-width:0.26458332">Begin AutoConnect</tspan></text>
-    </g>
-    <g
-       transform="translate(-30.012096,12.080043)"
-       id="g5436">
-      <g
-         id="g5182"
-         transform="translate(2.8998751,-3.571875)">
-        <rect
-           y="92.892113"
-           x="135.87125"
-           height="10.649512"
-           width="61.649513"
-           id="rect987-6-9-9"
-           style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.35048801;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-        <rect
-           y="92.892113"
-           x="135.87125"
-           height="10.655192"
-           width="2.6608834"
-           id="rect985-1-9-5"
-           style="opacity:1;fill:#83bee2;fill-opacity:1;stroke:#83bee2;stroke-width:0.34480736;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-      </g>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="143.76074"
-         y="96.497292"
-         id="text995-0-6"><tspan
-           id="tspan993-7-8"
-           x="143.76074"
-           y="96.497292"
-           style="font-size:4.93888903px;stroke-width:0.26458332">Check connection</tspan></text>
-    </g>
-    <g
-       transform="translate(7.0295931,2.5550426)"
-       id="g5525">
-      <g
-         id="g5518">
-        <rect
-           y="129.02588"
-           x="101.72944"
-           height="10.649512"
-           width="61.649513"
-           id="rect987-6-9-9-1"
-           style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.35048801;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-        <rect
-           y="129.02588"
-           x="101.72944"
-           height="10.655192"
-           width="2.6608834"
-           id="rect985-1-9-5-8"
-           style="opacity:1;fill:#83bee2;fill-opacity:1;stroke:#83bee2;stroke-width:0.34480736;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-      </g>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="106.666"
-         y="135.73148"
-         id="text995-0-6-6"><tspan
-           id="tspan993-7-8-4"
-           x="106.666"
-           y="135.73148"
-           style="font-size:4.93888903px;stroke-width:0.26458332">Do handleClent()</tspan></text>
-    </g>
-    <g
-       transform="translate(-30.012096,1.4967093)"
-       id="g5472">
-      <g
-         id="g5182-0-5-1-3"
-         transform="translate(2.899875,-78.485552)">
-        <rect
-           y="92.892113"
-           x="135.87125"
-           height="10.649512"
-           width="61.649513"
-           id="rect987-6-9-9-1-3-5-2"
-           style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.35048801;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-        <rect
-           y="92.892113"
-           x="135.87125"
-           height="10.655192"
-           width="2.6608834"
-           id="rect985-1-9-5-8-8-0-9"
-           style="opacity:1;fill:#83bee2;fill-opacity:1;stroke:#83bee2;stroke-width:0.34480736;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-      </g>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="143.85994"
-         y="21.571556"
-         id="text995"><tspan
-           id="tspan993"
-           x="143.85994"
-           y="21.571556"
-           style="font-size:4.93888903px;stroke-width:0.26458332">Include directive</tspan></text>
-    </g>
-    <g
-       transform="translate(-30.012096,1.4967093)"
-       id="g5457">
-      <g
-         id="g5182-0-5"
-         transform="translate(2.899875,-45.969931)">
-        <rect
-           y="92.892113"
-           x="135.87125"
-           height="10.649512"
-           width="61.649513"
-           id="rect987-6-9-9-1-3"
-           style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.35048801;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-        <rect
-           y="92.892113"
-           x="135.87125"
-           height="10.655192"
-           width="2.6608834"
-           id="rect985-1-9-5-8-8"
-           style="opacity:1;fill:#83bee2;fill-opacity:1;stroke:#83bee2;stroke-width:0.34480736;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-      </g>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="143.76074"
-         y="54.099236"
-         id="text995-0"><tspan
-           id="tspan993-7"
-           x="143.76074"
-           y="54.099236"
-           style="font-size:4.93888903px;stroke-width:0.26458332">URL handler fucntion</tspan></text>
-    </g>
-    <g
-       transform="translate(-30.012096,1.4967093)"
-       id="g5465">
-      <g
-         id="g5182-0-5-1"
-         transform="translate(2.899875,-63.495841)">
-        <rect
-           y="92.892113"
-           x="135.87125"
-           height="10.649512"
-           width="61.649513"
-           id="rect987-6-9-9-1-3-5"
-           style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.35048801;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-        <rect
-           y="92.892113"
-           x="135.87125"
-           height="10.655192"
-           width="2.6608834"
-           id="rect985-1-9-5-8-8-0"
-           style="opacity:1;fill:#83bee2;fill-opacity:1;stroke:#83bee2;stroke-width:0.34480736;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-      </g>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:3.79147911px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="143.13184"
-         y="34.170132"
-         id="text995-9"><tspan
-           id="tspan4983"
-           x="143.13184"
-           y="34.170132"
-           style="font-size:3.88055563px;line-height:3.79147911px;stroke-width:0.26458332">Declare ESP8266WebServer</tspan><tspan
-           id="tspan4987"
-           x="143.13184"
-           y="38.164337"
-           style="font-size:3.88055563px;line-height:3.79147911px;stroke-width:0.26458332">         &amp; AutoConnect</tspan></text>
-    </g>
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/docs/images/login.png b/lib/AutoConnect-master/docs/images/login.png
deleted file mode 100644
index 59b1e3e568ec207f5adc55feb3fc43ee4f419857..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/login.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/login_ani.gif b/lib/AutoConnect-master/docs/images/login_ani.gif
deleted file mode 100644
index b6295454a3cf7695d6c3852394ce0091b5b0c27d..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/login_ani.gif and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/menu.png b/lib/AutoConnect-master/docs/images/menu.png
deleted file mode 100644
index 66f50f0cb3c9fa9bd70ae5a43cd83bc767bf33bf..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/menu.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/menu_home.png b/lib/AutoConnect-master/docs/images/menu_home.png
deleted file mode 100644
index d83862a74a0176bc447c2275a58fd499c7729e7e..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/menu_home.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/menu_login.png b/lib/AutoConnect-master/docs/images/menu_login.png
deleted file mode 100644
index 3a0352780fe0fb0479411770e019723fa5bd4b3a..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/menu_login.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/menu_login.svg b/lib/AutoConnect-master/docs/images/menu_login.svg
deleted file mode 100644
index 05e8d84701b319a850c6f302a6a0a67ba13d6d2f..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/images/menu_login.svg
+++ /dev/null
@@ -1,667 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="61.254677mm"
-   height="90.411896mm"
-   viewBox="0 0 61.254677 90.411896"
-   version="1.1"
-   id="svg8"
-   inkscape:export-filename="C:\Users\hiero\Documents\Arduino\libraries\AutoConnect\docs\images\menu_home.png"
-   inkscape:export-xdpi="96"
-   inkscape:export-ydpi="96"
-   inkscape:version="0.92.1 r15371"
-   sodipodi:docname="menu_login.svg">
-  <defs
-     id="defs2" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.979899"
-     inkscape:cx="110.46944"
-     inkscape:cy="162.42716"
-     inkscape:document-units="mm"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     inkscape:window-width="1920"
-     inkscape:window-height="1001"
-     inkscape:window-x="-9"
-     inkscape:window-y="-9"
-     inkscape:window-maximized="1" />
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="レイヤー 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-15.436104,-38.574032)">
-    <image
-       y="38.574032"
-       x="15.436104"
-       id="image18"
-       xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAu4AAARTCAYAAAA0maZbAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
-WXMAAAsTAAALEwEAmpwYAAAgAElEQVR42uzdd1xV9R/H8TdTQAEBFUUBNyIO3Nvc2xxZqWmamtlw
-/XJWppm2tNJKc2SpDa20NDU1d+69d04ExYWAgjJ/fyBXLveyccHr+XjweNz7veeec+/3Dt7n3M/3
-eyyKlvKJFwAAAIAnmnVeZxd6AQAAAHjCWdIFAAAAAMEdAAAAAMEdAAAAILgDAAAAILgDAAAAILgD
-AAAABHcAAAAABHcAAAAABHcAAACA4A4AAACA4A4AAAAQ3AEAAAAQ3AEAAAAQ3AEAAACCOwAAAACC
-OwAAAACCOwAAAEBwBwAAAEBwBwAAAEBwBwAAAAjuAAAAAAjuAAAAAMEdAAAAAMEdAAAAAMEdAAAA
-ILgDAAAAILgDAAAAILgDAAAABHcAAAAABHcAAACA4A4AAACA4A4AAACA4A4AAAAQ3AEAAAAQ3AEA
-AAAQ3AEAAICnnDVdgKeBjY2NCri6ys3NVW4uLrp7757CwsMUGhqm4GvXFRsbSycBAPCItWvZXLKw
-0PJV/zzWx9G2ZXPFxsZq1dr1BPecKL+zs6pUqmDSfinosk6fOcsn8TGzsrJSjar+atqooZo2bKCi
-HkVSXDYiIlL7Dx3W3gMHtXz1Gl24GEAHAgDwkHVq31ZDXu8vC0sLOdjb67c/lz6Wx/FCpw5667W+
-io6Okb29vf5ctiLH9rlF2aq143Pjm23ga/30Vv++Ju3HTp5Sp+69+DQ+rsBuaaluz3fWwNf6Kb+z
-c4bvHxcXp3WbNmvG9/N05NhxOhQAgIegVbMmGjboTXkW9ZAkBV+7pm9mznnk4T0xtLsXLChJuhJ8
-VZOmfqPlq9fkyH7PlTXuFhYW6tSujdnbyvuUVZlSJflEPgbVq/jrz1/macyItzMV2iXJ0tJSzRs/
-o9/mfaf+vV+WhYUFHQsAQDazsrKSra2N4bp7wYJ667W+eqFTh8cW2iXJwtJCysH/+3NlqUzNalVT
-Lb3o0KaVJn89/al7XmNGvK1KFcobrt+4cVMDhg5/Kh575/ZtNfH9d2RpmT37klaWlnp74Ovyr+in
-QSPfVUxMDN+y4LMHANlkxeo1yuvgYBScE8O7pId+5N1caE886v+46+0J7g8hJKamXesW+mLaDMXF
-xT1Vz6tkcW9V8nsQHi4HBz8Vj7vrcx01bvSIFI+Onzh1Wus2bdaBw0d0/foN3QgJkbOTkzyLFlWx
-okVU3MtT7Vq1kJOjo8l9mzZqqE/GvafhYz5QfHyurAoDnz0AeCgSw/mjDu+phfbHVWdPcH9I8jo4
-qGXTRqkuU8TdXTWqVtHOPXv5VD5kndq10QfvjDR7294DBzVx8hQdPX7C5Lbgq9d06r8zhutfTp+p
-V3v1UM+uL8jezs5o2fatW+rs+Yua/t33dDgAAE9xeM/NoV3KhTXurZo3kb29vVHb4aOmgxg7tG3F
-p/EhK+pRRGNGvm3SHhcXp/GfTlb3vgPMhnZzwsLC9fnX36p15666EnzV5PY3+vVW6ZIl6HQAAB5C
-eP9m5hwFX7tmaHsYNe+5PbTnyuCevEzm9p07Gjl2vMlyLZs2ll2ePHwaHxILCwt9PPZd5XVwMGqP
-iYnR/955Xz//tjhT670cHKwBQ4cpMjLSqN3GxkbvDhtKxwMA8BSGd0J7Lgzu3p7FVL2Kv1Hb6rXr
-debceR04fMSoPV/evGraqCGfxIekXasWqlW9mkn7F9NmaOWadVla9/GTpzVy7AST9rq1aqi4lxed
-DwDAUxTeCe25NLh3NDMF5JIVqyRJK1avNbmtQxvKZR6WXt1eNGnbf/CwfvhpQbasf/W69Tp7/oJJ
-+3Md2tL5AAA8JeGd0G4s1wxOtbS0VMd2rY3agi5f0e59+yVJK9es1ej/DTKajrB+nVpyc3XRjZsh
-GdqWt5en8iapo4+JjTUaSJkeri75VbhQIaO202fPKTo62nDdJX9+FXF/sEy+fHmNlrextlF5n7JG
-becuBpiUkaTEvVBBNWlYXw3r1pFHkcJyc3NVPgcHhdwK1Y2bITp45Kg2b9uu7bv26F5UVLqfW+UK
-fqro52vSPvHzL7N1Jp9FS/7SiCEDjdr8K1bM8HoeVj9ICXX+zklmwwm/fVsBgUFGyzg42KtJw/qq
-XsVfhQoUkKuri27fvqOr16/rzNlzWrlmnYKuBD/R20xNoYIF1PSZBvL1KauCbm5yccmv0LAwBV2+
-ovMXA7R67QZduXo1294XpUuWUPMmjVSnRjW5FyyoAgXcdOdOhC5eClRAYKACLgVp7cZNqX5mH/Zn
-DwCe9vAuZX3AKqHdVK45c2qdmtU199uvjdpmfD9PX06bYbg+f+Y01ape1ThMTp6i+Qt+zdC2kq8n
-5NYt1W7aOkPreLnrC3p3uHFNdrNnnzMKWN2ff05jRw3L0Hq79umv/QcPpxlUhw96U+1atUjXCYyu
-Xruub+fM1e9L/jLasUjJR++/o+c6tDdqO3HqtDp0ezlbX3M3Vxf98dNcWVk92BkLDQtX2+e7pzuw
-P8x+kKTJEz9Q+1YtDNfXb9qs1/83whCeh745QC906pDqeIv4+Hht2rpN747/WNdv3Hgit2lOJb/y
-GjFkoKpXqZxq/8bFxWnnnn2a+/MCbdyyLdPvhxLeXhoz4m3Vq10zzWXj4+O1et0GfT3zO/139pzJ
-7Q/rswcAOUlWgjeh3bxcUypjbu72pStWGl3/+x/T0+N2zGWzy7Rv3VKr//hV7Vu3TPdZRwsVLKCx
-o4bpt3nfyaNI4TSXr5ls50iSFi1dlu3P5cbNED3TpoPqt2xv+EtvaH8U/ZCaKpUravmvP+vlri+k
-OUjawsJCjerX018Lf5SvT5knfpu2tjaaMGa0fpv3nWpU9U+zfy0tLVWnZnXNnPq5vvhovFxd8mf4
-ub30wnNa/tvP6Qrtic+vVbMmWvbrTxo28A3++wJAJmS2bIbQnsuDe768edWiaWOjtsNHj5vUQK9e
-t1GxsbFGbX6+5VSqRPFc8Wbo1qWzJn041mS6zPQq71NWf/z0g9kymEQF3NzkWbSoSfvWHbtyVT+k
-xr9SBX3/zdRUz+5rjpuri7746MNMzYb0qLZpb2+vmVM+1/Mdn033DlFSbVs219IFP2Zox+j1fq/o
-/ZHDZG2d8cpAS0tLvdq7pwYNeJX/wADwCMI7oT11uaLGvXXzpibBYsmKv02WC7l1S9t27laDurWN
-2p9t08qopOZJcezkSX037yfD9TYtmhkFmjsREVrw+x9G9wm+es3supo1aqhxo01P0R50+Yo2b9+h
-g4ePav+hw7ocfFWFChZQqRLF1aFNKzVr1NAoELnkz6/pn3+mzj1669p10xKKqpVNa8wjIiJ1/mLA
-E9Gnj6ofUlKiuJe++/pLOTg82GkIunJFGzdvVeDlKwoOviovz2Kq5l9ZVStXNNm5KFncWy93e1Gz
-5s5/4rZpaWmpmVMmmZ1N6PjJU9q5Z5+OnjipCxcD5JLfWV6enmrTvKmqJHvPFCpYQHO+maKur/RX
-aFhYqtvs0LaVhrze36Q9NCxcCxf/od37DuhSYJDy5s2rEt5eKu9TVi+92EV5bG2Nlh/Qp5dWrlmn
-02fOZvtnDwByQ3iX0q55J7QT3CWZlsnExMSYnUVGklasXmMa3Fu31JTpMxUf/2QNBzhw6IgOHHow
-jWX5cj5G4SEsPFyTvpqW5nrcXF304XujTdoPHz2uPm8NVlhYuFH7hYsBunAxQOs3bZafbzl9M+lj
-o+0WKlhAUz+dqO59B5iGRG/T6RiPnzqVrYNSM+tR9kOKIdrb23D57r17mjjpS/2xbIViYmLM9uXC
-H2Ypv7OzUXvLpo0yFtwf0Tb79+5pEtpjYmI05dtZmjP/Z7PvgfkLflWdmtU1acI4FXRzM9pZGDPi
-fxr23rgUt+dR2F1jRpie4Ovfrds1ZNR7uhMRYdR+5NhxLVu5Wr/9uVSTJ4xThfIPfjGxsrLS4Nf7
-661ho7L1swcAhPe+hmUI7WnL8aUyxb28VNW/klHb5m07FHLrltnl1278V1FRxgMLPYoUVo2q/jm2
-j4YNetOkbnj/wcPq/fpAk7Ca3NHjJ9S1T3+Fhhof+azmX9lkB0iSnJ2dTNouXgrMdf2QlrDwcL3y
-+iD99udSswFaks5duKjXBg8zmcnGz7ecyYxEj3ubZUqV1MDX+hm1Rd69q659+mv23B9T3XHbvmuP
-uvd5TeG3bxu1t23ZPNWz4Y4cOkiO+fIZtW3dsUtvvD3SJLQnf47mlnmmXl2T9QEAMhbezZXNDB/8
-poYPfpPQTnCXOrU3nbv9z+UrU1w+/PZt/bvNdOaKDm1a58j+cXN1MZphJLEP+r41RLfv3EnXOoKv
-XtMHn042aR/Qp5dJW34n0+B++/adXNcPafly2kztO3gozeUOHD6i9Zs2G7VZWFioTOmST9Q2+/Ts
-blJj/vWM2Tp89Hi6HtvFS4GaMOkL4y8vS0u98lI3s8u7Fyqo5o2fMWqLiorW2I8+TdeMP8FXr+mr
-GbON2mxtbdSwXh3+awBANod3J0dHOSWZppjQnkuDu6WlpTq2NQ7cYeHh2rB5c6r3M1dG07JZY5O6
-15zghU4dZGNjY9S2dMWqVI9ImrNyzTpdu37dqK16FX8VcHU1anMyE9yTH0nNDf2QVkjNyJfVhs1b
-TNpc8mds5pWHuc0Crq4mO0XHTp7S3J8XZugxLl+1RteSTT1Zv04ts8u+2LmjrKysTP5ZJJ+vPjXL
-Vq42KY/zLVtGAIDsCe9h4aa/ZoeFhxPac2twr1uzhgq7FzIJVslLYUxDyVZF3r1r1OaYL5+aPNMg
-x/VRowb1TNoWLv4zw+uJi4vT6nUbTdqrJysxMjdOIL1HtHNSP6Rm2uw5KZaqmBMYdMWkLXkN+uPc
-ZrPGDU12in75bbFiMziuISYmRn/9vcqorbB7IbPjJsyVJ63ZsDFD27txM0R79h/UnYgIw1+xoh78
-1wAAENwfhk5m525fleb9IiMjteFf0yOKHdrmrHIZW1sb+ZXzMWrbf+iwYeaMjEpePiHJZHzBrdBQ
-k2WcnRxzXT+kZt+BQxna3s2QEDMh2ilD63iY26xexXSn5eiJk5nqW3OlNT5lSpu8nsmPjN++c0d7
-9h/M8PZ6vPq6qjZoavgbMuo9/msAQBYlzh6TtDwmkZOjY5rzvBPccyAnx3xq3sS4xjUgMDBdNbxS
-wuwyyTWoUyvDJQhPsvLlfEyOhB4/eSrT6wu6YnoUNvmAxeSDNyWpmIdHruuH1AQGXc7Q9pIPFJUS
-ysQy4mFus2pl452W6OjoTO8Umbtf8rnny/uYvp679+7P0C8KAICHG9qTDkQNCw83KptJz0macqsc
-Ox1kmxbNTGrST57+L0MzfMTGxhrVyVpbW6tty2b66ddFOaKPzIXJy1euZnp9N27eNGlLfhT2lpl5
-tx93+cHj6IfUAnHsI54a82Fu09LSUkUKuxu1xcdL82d8k7n1WZnuHLgXLGB83czreYU51AHgiQzt
-iQNRpbTneUcODu7mymSaNXpGzRo9k6X1dmjbOscEd3MlKpeDgzO9vrDw24qOjjY62pn8Z7Bbt0xL
-ZR73EffH0Q8puXv33iN//g9zm4758pkcibe1tclQ6VBabG3zpPl6pjT9KwDg8Yf2pMGc8J4Lg3up
-EsXlX7HCQ1l3Jb/yKu7lpfMXLz7U52Bj8/BfGnMzvFzJQmC1tLQ0CWlh4cYzxpy7YNpvbq4usre3
-V2RkZLY/x1d791TNqlWM2r6cPlPHktRYP45+SElcXOwj/7w8zG1mtNY+c8HduCzG0dF0rvWQEII7
-ADzpoT29Z1gluOcwndq1eajr79C2laZ+O+uRh2oLC4uH/4awzvxbwtXFxWQKvkuBxidXOnT0mO7e
-uye7PMZHSb2KFdXJ0/9l63OxsLBQr24vqGCBB6UUsXFxevvd9x97P+QW5kpw7t67ZzJlZlbcTjad
-qLmTOUVT3w4AT3RoJ7zn0uBuZWlpMvtLXFyczpw7n6n12dvZmdRgP9u6pb6aMdvs1IbZ5VHMtBJm
-pt486WnbM8q9UEGTtuTzZkdHR2v/wcOqU7O6UXuXju01cdKX2fr8fMuWMQrtUsIZTpMf/X4c/ZBb
-mBuMfDHgktq/2OOhbfPCxQCTtuTTwgIAnrzQTnjPhcG9bu2aKpRssNrOPfvU+/WBmVqfk2M+bVvz
-t1G9crGiHqrmX1l79h94aM8jo/NwZypUhZme+MCjcHYHVtMjzTv37jMJ7i906qCZ38/X9WQn2MkK
-c/Pub9+1+4nph9zg9p07io2Lk1WS0iEvz2KysLB4aDu+5sqxihDcAeCpCO2E99TluOkgO5udu31l
-ptcXFn5bW3fuMmnv0LZVuteRmRKXiuV9H3pfXQgwPTKZlSPN1fwrmwbWS6ZHmjdt2WbSZpcnj/r2
-7J5tzy2vg4N6vNjFTHDf88T0Q24QHx+vi8n61y5PnocapAMCg0xKdIpkckdsQJ9e+njce4a/l7u+
-wH9jAHjIoT1peP9m5hwFX3swM1hunyoyRwV3JydHk1lj7t67p3/Wb8zSev/+Z61JW6tmTUwGxSVK
-Pl+0s5OT8jo4pHt7xYp6mJ0iMbuPUJ46fUYREcYDQhvWrWMyB3Z6d07atGhq0n7xkumR5mMnTmrL
-9p0m7d26dMq2efJ7de9qsq6IiEizJxp6XP2QW5g78VHZ0qUytS5fnzIaNvANo78i7u4mn79LyUqT
-Kvr5ysnMoNXUOObLp7f691Xn9m0Nf7Z5bPmPDACPILQT3nNBcG/borlJmF674V/diYjI0nrXbdys
-qKho450ER0c1blDf7PLJ5/G2sLCQr0/ZdG+vqZkSj8T1ZKfYuDjtP3TYqK2Am6vatWye4XVVrVzJ
-pLxk05ZtKU7D9/Ws70za7O3tNeSN17L8vEqXLKF+vV4yaZ/89TSzJw56nP2QG+zet9+krceLz2dq
-XWNHDdervXsa/vr07K7Q8DCzO4dG7y07O3V+tl2GttW4YX2Tnbd/t27nvzIAPKLQTnjP4cG987Om
-ZTJ//b0qy+u9feeONm8z/YfdoY35cpnrN0xPwFO+nE+6tuWYL58G9On9yPrsz2UrTNp6dX8xw+vp
-1N50Jp9ps79PcfkDh45o6w7TEqSuz3XU4Nf7Z/r5FHB11aypn5v8wrF73wH98vsfT1w/5AZrNmwy
-OiOeJDWoW1t+vuUytJ7mjZ9RlUoVTXaKkv9aIknTv/vBZHaZbs91SvfOr42Njfq9bLzzdyX4qk79
-d4b/zADwCEM74T2HBvcypUqqkl95o7YbN0O0ZcfObFn/32tMy2WeqV/X7CBSc2URz7ZuKXt7+1S3
-YWVpqXGjR8jVJXPlIsmDSnrKc1auXa+r14yn5vP1Kas3X+2T7u1W86+s55IdzdyyY6cOHjma6v0+
-+HSy2VlH3uj3iiaMGS1np4zNAV65gp9+njNDRT2KGLVH3r2rd8dPTLXU6HH2Q04XERGpBYtMd5pG
-DH7TZFrQlDg7OWnYwDdM2mfP+8ns8qf+O6OlyXbai3t7adigN9O1vYGv9ZVPmdJGbZu378jWzx4A
-ENoJ77k2uHc0M3f7in/WKDY2e04us/7fLbp7z/gMk9bW1mrTopnJsms2bDIZHFfRz1fTP/80xbp4
-90IF9c3kT9SuVfNMP8akb2QpoZynRlX/VO8TExOjKd/ONGkfNOBVffjeKKPZQFIKq1M/m2hywqFp
-s9I+ynzhYoDeHDZS0dHRJrc93/FZrf7zV/Xt2d1svX9S5cqW0bvDh2rBD7NU3MvT5PYp02fqQsCl
-J7YfcoMfflpoMnd77RrV9cv3M+VR2D3V+9auUU3Lfv1Jxb29jNp//m2R9h08lOL9pk6fZVIa1e/l
-lzRu9AiT1ynpZ3rga/3Ur1dPk52P73/8JVs/ewBAaCe8Z1SOmA7SysrK7CwvS1esyrZtREREauPm
-rWrVrIlRe4e2rfTL74uN2q7fuKEdu/aoXu2aRu11a9XQP0t+174Dh3Tg8FHdDLmpIoULy6+cj5o3
-fsbopD8//brI7KwoqQm6fMWkbdbUL7Rr3z5duBig+Hjpp19/N5lTfPHS5WrSsL7JwN4XOnVQmZIl
-tXHLVh05fkJHjp1QaFiYXPI7y6dMaXVs20btW7cwOdnQ5m07Ug1USe3ed0CjP5ioyRPGmdzmkj+/
-RgwZqBFDBur0mbM6c+68bty8qZBboXJyclShAgVUtnQplSzuneL6f/1jieYv+C1dj+Vx9kNOF3Lr
-loaOHqN5M6cZ7QT5lfPR4p/matHSv3T85GkdP3lKwdeuqVSJ4ipXpoyq+ldSp3ZtTEpcjp08pU++
-/CrVbV4ODtaPC35Tv17Gc8Z369JJ/hX9tGvffh06clQnT59RkcLuKlOqpJ5t3VLlypYxWde7H36k
-s+cvZPtnDwAI7ZkL71LunCoyRwT3BnVqqaCbm1HbuQsXdOTY8Wzdzso160yCu3/FCvL2LGZyRHfi
-5C+1+MfvTcpjiri7q23L5mqbysDHhYuX6MeFv2c4uK/ZsEkDX+tn1ObgYK9G9esZrq9at95seHjn
-g4/kXrCQKvoZT0NZpXJFVan8oK44JiYm1bOKHj1+QkNHj8nQ4162crWioqI0YcxoOTmaP/FUmVIl
-VaZUyXSvMz4+Xl98M0Oz5s7P0GN5nP2Q0+3ed0BjPvw44ReMJDs5ri751b/3y+leT1h4uIaMfNdk
-wLg5X06fqRLeXmraqKFRu69P2XQPGP/p10VmZ5bKrs8eADyN2rVq8VhCe3rC+52ICK1YvSZH9nuO
-KJXpZHbu9lXZvp1NW7YpMtJ0IFzyM7VK0plz5zVy7AST8pq0/P3PWo3/dLKsrDL+0pw8/Z82btma
-qecWGhamlwe8qW07d6e+p5dKWN2974BeeWOwwpOdgj49Vq/boA7dXtbufVk/qdV/Z8+p/+C3Mxza
-n4R+yOkW/7Vc/Qe/rdt37mTq/gePHFWnl3qnWfqUdAdr0Mh3tWR5xs/lcC8qSt/N/znNI/tZ/ewB
-wFMpPl7xcfGPJbQnDe/Jy2aio2OyrUya4P4Q5Hd2Npk+MT4+Xn+tXJ3t24q8e1fr/91i0t6+dcsU
-wuh6dereK11h9Mix4+rZ/w0NHT1GsbGxKdbgpmXwiHcz/aGJiIhUnzcHa+TY8SYDNVMTfPWahr03
-Tj1efV2hYWGZ7t+gy1fU49XX1bP/m5kaVHzm3Hm988FEPftijyxN2/e4+yGn27J9p1p2elG/L/nL
-ZFBnSi4HB2vKt7PUve8Akzna0xPeR44drz5vDNbpM2fTXD4uLk5/LFuhlh1f0KSp35gdg5Hdnz0A
-eNosX71GU76dpYDAoMcS2s2F96Arwfpm1ndatXZ9ju13i7JVa8fz9nv4PIoUVrNnGsrLs5gKuLkq
-j62tLgRc0rkLF3T6zDntP3Q4W0+w5ObqohLe3vL2KiYLWSgsPFwn/zujiwGX0rUdW1sb1a5RXU0a
-1lcFX1+5ubnI1cVFd+/e1Y2bIbpxM0QHDh/Whn+36uDhIyaDcbNDoYIFVKt6NdWpUU0lvL3l4uJs
-OKnSzZBbunEzRNeuX9euvfv077YdCgy6nO2P4Unoh5yscKFCatqogRrUraNiHkVUwM1VsbFxCr56
-VVeCryrwyhWt37RZO/fsS3fIT0uZUiXVrFFDeXt5qqCbm6ysrHQh4JIuXAzQ+YAAnTh12mzN+qP6
-7AHA06RVsyaysrJ67KUp7Vu3VHx8vJav+idH9zfBHQAAAHgKWNIFAAAAAMEdAAAAAMEdAAAAILgD
-AAAAILgDAAAAILgDAAAABHcAAAAABHcAAAAABHcAAACA4A4AAACA4A4AAAAQ3AEAAAAQ3AEAAAAQ
-3AEAAACCOwAAAACCOwAAAACCOwAAAEBwBwAAAEBwBwAAAEBwBwAAAAjuAAAAAAjuAAAAAMEdAAAA
-AMEdAAAAAMEdAAAAILgDAAAAILgDAAAAILgDAAAABHcAAAAABHcAAACA4A4AAACA4A4AAACA4A4A
-AAAQ3AEAAAAQ3AEAAAAQ3AEAAACCOwAAAACCOwAAAACCOwAAAEBwBwAAAEBwBwAAAAjuAAAAAAju
-AAAAAAjuAAAAAMEdAAAAAMEdAAAAAMEdAAAAILgDAAAAILgDAAAABHcAAAAABHcAAAAABHcAAACA
-4A4AAACA4A4AAACA4A4AAAAQ3AEAAAAQ3AEAAAAQ3AEAAACCOwAAAACCOwAAAEBwBwAAAEBwBwAA
-AEBwBwAAAAjuAAAAAAjuAAAAAAjuAAAAAMEdAAAAAMEdAAAAILgDAAAAILgDAAAAILgDAAAABHcA
-AAAABHcAAAAABHcAAACA4A4AAACA4A4AAACA4A4AAAAQ3AEAAAAQ3AEAAACCOwAAAACCOwAAAICM
-sM7pTzCPra1q1aim4p6ecnNzVXx8vC5cDNC5ixd1/kKAboWGPtXPr1DBAvL2LKZ796J06Ogx3tEA
-AAAE96dLEXd3/e+tAWre+BnZ29unuNz6TZs18fMpuhQY9FQ9v2aNGurD90bL1SW/JOnipUA179BF
-ktT9+ec0YvCbkqQxEz/VspWreacj27m65Nc/S36XtZWVJOnoiZN6qd/r6b7/99OmqmrlimkuFxMb
-q4DAIJ09d0E79+zV4qXLFBsXxwsAACC45wQvdOqgd4YNkb2dXZrLNnmmgerVqaVZP8zXtNnfKz4+
-/ol/frWqV9O0zz9N8XYbG2vDzoqNtTXvcjwU7Vu3lGO+fIbr1av4q4S3l85duJiu+9vZ5Ul1pzqp
-8j5lVd6nrNq1aq7uz3fWexM+0ZFjx3kRAAAE96dZ75e6avT/Bhuu34uK0uq163X0xEkdO3FSIbdC
-5VnUQyVLFFePF7uoiLu78tjaauBr/RQVFa1Zc+c/8c+xZdNGhst7DxzUgkV/KiTkFu9mPFKd27c1
-aXu2TStN/XZWhtd14tRpXbt+w/QLytpaxb09VcTd3dDm61NWs6Z+rrbPd1fILd73AIDcw6Js1drx
-OeXJVPTz1SXt5QsAACAASURBVO/z5sjCwkKSdPb8BQ0Z9Z5Onv7P7PK2tjYaPKC/+vXqIUmKjYtT
-7wFvadfe/U/085w5dbIa1a8nSerx6uvave+A0e2FChZQMQ8PSdKFgADduBnCOx3ZqrxPWf35yzxJ
-UvDVa3IvVFCSFBh0WU2ffS5dv1z9MmeGqvlXliQNHT1Gf/+zNsVl8+XNq5bNGmv8OyNlff9XpJVr
-1mnIqPd4MQAAuUaOmlVm+KC3DKF9645d6tzjlRRDuyRFRUVr0lfTtGT5SkmSlaWlxo4a/sQ/T1sb
-W8Ply8FXTW6/eu269h08pH0HDxHa8VB0evbB0fbJX0/X1WvXJUlFPYoYwnh2un3njhYvXa6RY8cb
-2lo0bSxbWxteDAAAwf1p80y9uqpVvaokKS4uThMnf6nIyMh03fejz6coKipaklS6ZAkVK+qRdsdZ
-Wqq4l5cKuLlly+N3cLA37HRkRFRUVLZsPzPbfthc8ueXlWXab1EnJ8d0LZddMvtaJbKxsVFeB4en
-9rNmY2Oj9q1aSJLuRERozfqNWrnmwdHyDm1bPbRtr93wr2JjYw072iWLF+dbHACQa+SYGvehb75m
-uPzX36t15tz5dN83NCxMy1f/o+aNn5Ek1ape1ewsM1ZWVnrtlV5qWLe2ypUtbRhYd+NmiI6fOqVv
-Zs3R/oOHzW6jRZNG6v78c5KkiZO/1OkzZ/VMvbpq06KZ/Cv6ydvLU7fv3NGRYye0c+8+zfp+ntHM
-GfZ2dvpo7LuSpLKlSxnax44apnv3onT95k19NHmKJKlhvTrq2La1JGnBoj9MSmkSValcUZ3atZF/
-xQoqXbKEbtwM0eGjx/TDzwu0e98B1atVU00bNZAkTf12tkLDwgz37diutTq2bSNJ+m7eT9qyY2fK
-O0Zj35VH4cKKjo7Wq4P+Z3Tbpx+8L/dCBXUh4JLGfvSpHPPl0/DBb6pNi2ZyzJdP/QYO1eZtO4zu
-Y5cnj17p0U1VKlWUn285FXBzVWxsrE79d0Z//b1aCxb9oci7dzP9Xsrqa2VONf/K6ty+rcr7+qhs
-qZKytrZWaGiYNm7Zql9+/0MHDh8xuc8rPbrpmXp177+Of2r1uvUmy/iUKW00pmPQyHcUFhZuslzD
-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
-r1+azp06Fn6e8tG0Gq973U23ZNLkKfmfk75XOJpdXFycnt27pWf3bvnuMUdl/oIFuefv9+X6P9yW
-WbPLj7yXlJSkzfJhGcuWLcuoCkNoavTG1aqV1q3KT6b9aPq0lJWtflbPBQtWTAO5XtOVD3OZ9zXN
-mDJv3rw1Wq9jhXMAmjZpkp23367G69arW/dr2bcAAMJ9LbX3brumtF69JMsvWLSaYR5f9PksJD27
-d83OO2yfbbbsl8022Th165SPgW9Qv35O+M63s2W/zXPMST/KggULU1xcXLiK6KLFi1d7EaFVKSku
-qdFyzSrMyz55ytSVLlOTLwA1sabbWVZhnP648RPyWIUx7Kv9sjB/fuGL09e1bwEAhPta5OAKJzU+
-9tQzq72aZ3XefX9U3n1/VK676ZbUqVM7W26+efbcbZccvP++qVunTnr36J7vHXN0rhlycxYvXpzJ
-U6ambZvWqVe3btZr2rRwNL4mlixZkkmTp6R92zbZoGWLlBQXr/Z5b9iyZeH2h5Mmr5XvxQfjJxRu
-z5k7N5dffe2X3sZX3bcAAGujb/ysMp07dsiWfTcr/Pzgo4/XeN1+m22arfr1Ta/u3ao8tmjR4jw/
-9OWc95v/zU/POLNw/ya9exVufz7LS5J06dRxlb/rtxdfkKFPPpyXnnioEOATPpyYpHxoSOfVrF9c
-XJz+W/atEO5r55U/J06eUhj/3rF9+8KR8+qU1quXrfr1zVb9+qZzxw5f274FABDua5H112ua664c
-VIjD514cmqGvvlbj9c/95S9yx5DB+eNN16VOndrVLvfsCy8VjoY3qjCDyhtvvV24fdhB+1e7freN
-umS/vXZP0yZNMnvOnEydVj4G/533Vwzp+c4Rh67yufbfom9aNCs/Afe1N4et9uTR/5SlS5cWpsxs
-0rhR4QJX1fn+8cfkjiGDc8eQwem/Rd+vbd8CAAj3tUBRUVH22WO33H3bTYUTSj/97LMMvOSyL7Wd
-4e+8l6R8DPsO22xT7XK9e/YozJQy/L33Cvff9qe/FC5ytO+eu2fj3iu/oNHJ3zu+8OXiX8+/WLj/
-1jvvyvwFC5IkB31r3/Ts3nWl6zds0CADTj2l8PPgIX9Yq9+fqwavmEf+Jz84sXD+wRe1bdM6Jx57
-dJLyv3A89NiTX9u+TZIlFcbbN23c2P8tAADh/nXr3aN7rrzkwir/XXfFZfnnn2/Pq888lqsuvSjt
-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
-"
-       preserveAspectRatio="none"
-       height="90.411896"
-       width="61.254677" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#e51c20;fill-opacity:0.74117647;stroke:none;stroke-width:0.26458332"
-       x="38.257114"
-       y="92.108269"
-       id="text23"><tspan
-         sodipodi:role="line"
-         id="tspan21"
-         x="38.257114"
-         y="92.108269"
-         style="font-size:4.23333311px;fill:#e51c20;fill-opacity:0.74117647;stroke-width:0.26458332">Return to HOME</tspan></text>
-    <path
-       sodipodi:type="star"
-       style="fill:#f00308;fill-opacity:0.74117647;stroke-width:0.26458332"
-       id="path4500"
-       sodipodi:sides="3"
-       sodipodi:cx="36.14397"
-       sodipodi:cy="90.530502"
-       sodipodi:r1="2.1800292"
-       sodipodi:r2="1.0900145"
-       sodipodi:arg1="1.0471976"
-       sodipodi:arg2="2.0943951"
-       inkscape:flatsided="false"
-       inkscape:rounded="0"
-       inkscape:randomized="0"
-       d="m 37.233985,92.418463 -1.635022,-0.94398 -1.635022,-0.943981 1.635022,-0.94398 1.635022,-0.94398 0,1.88796 z"
-       inkscape:transform-center-x="0.54500767" />
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/docs/images/menu_r.png b/lib/AutoConnect-master/docs/images/menu_r.png
deleted file mode 100644
index be12585586af93a490a5365291a581539263bbca..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/menu_r.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/newap.png b/lib/AutoConnect-master/docs/images/newap.png
deleted file mode 100644
index ebcb920e09fc47766a17dc8f406db61487e407ce..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/newap.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/open.png b/lib/AutoConnect-master/docs/images/open.png
deleted file mode 100644
index ddc22f3effc801907d027f4ed439d9245c1d0d74..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/open.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/openssid.png b/lib/AutoConnect-master/docs/images/openssid.png
deleted file mode 100644
index fcf0798c73dec4ec9cb4bdca70e118c6c1b1a1da..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/openssid.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/ov.gif b/lib/AutoConnect-master/docs/images/ov.gif
deleted file mode 100644
index c458708392cfd0cce553c59d42f84846061b4c52..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/ov.gif and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/ov.png b/lib/AutoConnect-master/docs/images/ov.png
deleted file mode 100644
index 803cf8e9e9467f4b757d507e351594322c8a57b5..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/ov.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/ov.svg b/lib/AutoConnect-master/docs/images/ov.svg
deleted file mode 100644
index 697fde3eefc4b08e40976b17c1da2e835febb979..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/images/ov.svg
+++ /dev/null
@@ -1,439 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="210mm"
-   height="297mm"
-   viewBox="0 0 210 297"
-   version="1.1"
-   id="svg2563"
-   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
-   sodipodi:docname="ov.svg">
-  <defs
-     id="defs2557">
-    <marker
-       inkscape:isstock="true"
-       id="ExperimentalArrow"
-       refX="5.0"
-       refY="3.0"
-       orient="auto-start-reverse"
-       inkscape:stockid="ExperimentalArrow">
-      <path
-         style="fill:context-stroke;stroke:#000000;stroke-opacity:1"
-         d="m 10,3 -10,3 0,-6 z"
-         id="path1379" />
-    </marker>
-    <marker
-       inkscape:isstock="true"
-       style="overflow:visible;"
-       id="marker1596"
-       refX="0.0"
-       refY="0.0"
-       orient="auto"
-       inkscape:stockid="Arrow2Mend">
-      <path
-         transform="scale(0.6) rotate(180) translate(0,0)"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#d04067;stroke-opacity:1;fill:#d04067;fill-opacity:1"
-         id="path1594" />
-    </marker>
-    <marker
-       inkscape:isstock="true"
-       style="overflow:visible;"
-       id="Arrow2Mend"
-       refX="0.0"
-       refY="0.0"
-       orient="auto"
-       inkscape:stockid="Arrow2Mend">
-      <path
-         transform="scale(0.6) rotate(180) translate(0,0)"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#22801c;stroke-opacity:1;fill:#22801c;fill-opacity:1"
-         id="path1153" />
-    </marker>
-    <marker
-       inkscape:isstock="true"
-       style="overflow:visible"
-       id="marker1596-8"
-       refX="0"
-       refY="0"
-       orient="auto"
-       inkscape:stockid="Arrow2Mend">
-      <path
-         inkscape:connector-curvature="0"
-         transform="scale(-0.6)"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         style="fill:#227f1c;fill-opacity:1;fill-rule:evenodd;stroke:#227f1c;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         id="path1594-9" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.7"
-     inkscape:cx="406.57165"
-     inkscape:cy="597.77837"
-     inkscape:document-units="mm"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1440"
-     inkscape:window-height="810"
-     inkscape:window-x="1457"
-     inkscape:window-y="188"
-     inkscape:window-maximized="0" />
-  <metadata
-     id="metadata2560">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="レイヤー 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <g
-       id="g2849"
-       inkscape:export-xdpi="95.800003"
-       inkscape:export-ydpi="95.800003">
-      <g
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         transform="matrix(0.10931661,0,0,0.10931661,-5.8805339,145.80008)"
-         id="g831"
-         style="opacity:1">
-        <g
-           id="g819">
-          <path
-             inkscape:connector-curvature="0"
-             class="st0"
-             d="M 341.601,0 H 170.397 c -29.29,0 -53.12,23.828 -53.12,53.121 v 405.758 c 0,29.29 23.83,53.121 53.12,53.121 h 171.204 c 29.292,0 53.121,-23.832 53.121,-53.117 V 53.121 C 394.722,23.828 370.893,0 341.601,0 Z m -85.602,480.622 c -11.869,0 -21.526,-9.658 -21.526,-21.526 0,-11.871 9.656,-21.526 21.526,-21.526 11.869,0 21.526,9.655 21.526,21.526 0,11.868 -9.657,21.526 -21.526,21.526 z M 363.274,67.271 V 407.427 H 148.724 V 67.271 Z"
-             style="fill:#4b4b4b"
-             id="path817" />
-        </g>
-      </g>
-      <g
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         transform="matrix(0.09996652,0,0,0.09996652,79.519864,168.06218)"
-         id="g867"
-         style="opacity:1">
-        <g
-           transform="translate(-44.994231,-399.65464)"
-           id="g849">
-          <path
-             inkscape:connector-curvature="0"
-             class="st0"
-             d="m 512,317.461 c 0,-3.031 -2.465,-5.59 -5.594,-5.59 H 5.594 C 2.465,311.871 0,314.43 0,317.461 v 44.183 h 512 z"
-             style="fill:#4b4b4b"
-             id="path835" />
-          <path
-             inkscape:connector-curvature="0"
-             class="st0"
-             d="m 5.594,456.453 h 500.813 c 3.129,0 5.594,-2.562 5.594,-5.594 V 375.863 H 0 v 74.996 c 0,3.032 2.465,5.594 5.594,5.594 z M 304.55,390.5 l -10.8,45.379 h -12.516 l -2.738,-0.035 10.894,-45.378 h 12.418 z m 50.153,0 L 344,435.879 h -12.598 l -2.754,-0.035 10.894,-45.378 h 12.449 z m 50.25,0 -10.801,45.379 h -12.594 l -2.754,-0.035 10.89,-45.378 h 12.496 z"
-             style="fill:#4b4b4b"
-             id="path837" />
-          <path
-             inkscape:connector-curvature="0"
-             class="st0"
-             d="m 41.543,470.672 v 24.887 c 0,3.274 2.652,5.926 5.926,5.926 h 49.774 c 3.274,0 5.926,-2.652 5.926,-5.926 V 470.91 l 0.004,-0.078 h -0.004 v -0.161 H 41.543 Z"
-             style="fill:#4b4b4b"
-             id="path839" />
-          <path
-             inkscape:connector-curvature="0"
-             class="st0"
-             d="m 408.863,495.559 c 0,3.274 2.653,5.926 5.926,5.926 h 49.774 c 3.274,0 5.926,-2.652 5.926,-5.926 v -24.887 h -61.625 v 24.887 z"
-             style="fill:#4b4b4b"
-             id="path841" />
-          <path
-             inkscape:connector-curvature="0"
-             class="st0"
-             d="m 148.621,150.86 c 0,-6.454 -2.621,-12.301 -6.855,-16.535 -4.23,-4.234 -10.078,-6.852 -16.531,-6.852 -6.457,0 -12.301,2.618 -16.535,6.852 -4.234,4.234 -6.851,10.082 -6.851,16.535 0,6.453 2.617,12.301 6.851,16.531 2.45,2.453 5.481,4.266 8.817,5.442 l -3.801,116.05 -0.145,4.152 h 0.008 l -0.004,0.161 h 23.309 L 132.942,172.84 c 3.34,-1.179 6.375,-2.996 8.824,-5.449 4.234,-4.231 6.855,-10.079 6.855,-16.531 z"
-             style="fill:#4b4b4b"
-             id="path843" />
-          <path
-             inkscape:connector-curvature="0"
-             class="st0"
-             d="m 41.672,59.055 c 4.984,4.988 12.914,5.836 18.625,1.699 18.836,-13.645 41.344,-21.008 64.922,-21.008 23.622,0 46.145,7.34 64.965,20.946 5.707,4.133 13.622,3.285 18.602,-1.695 6.352,-6.348 5.563,-16.93 -1.722,-22.18 -23.722,-17.086 -52.09,-26.301 -81.844,-26.301 -29.758,0 -58.121,9.234 -81.835,26.359 -7.27,5.254 -8.059,15.821 -1.727,22.164 z"
-             style="fill:#227fb7;fill-opacity:1"
-             id="path845" />
-          <path
-             inkscape:connector-curvature="0"
-             class="st0"
-             d="m 155.969,105.468 c 0.047,0 0.09,0.016 0.137,0.016 0.05,0 0.094,-0.012 0.141,-0.012 2.738,-0.027 5.355,-0.797 7.687,-2.308 0.133,-0.086 0.254,-0.188 0.386,-0.278 0.688,-0.481 1.43,-0.855 2.039,-1.465 l 0.016,-0.02 c 6.859,-6.859 5.363,-18.59 -3.223,-23.105 -11.578,-6.09 -24.515,-9.317 -37.934,-9.317 -13.43,0 -26.378,3.23 -37.961,9.332 -8.578,4.512 -10.078,16.23 -3.23,23.094 l 0.055,0.059 c 0.598,0.598 1.324,0.961 1.996,1.434 0.156,0.113 0.305,0.23 0.465,0.332 2.324,1.503 4.93,2.266 7.652,2.293 0.051,0 0.102,0.015 0.149,0.015 0.05,0 0.102,-0.019 0.152,-0.019 2.309,-0.02 4.629,-0.402 6.786,-1.516 7.347,-3.785 15.503,-5.789 23.937,-5.789 8.465,0 16.641,1.988 23.985,5.754 2.151,1.102 4.464,1.481 6.765,1.5 z"
-             style="fill:#227fb7;fill-opacity:1"
-             id="path847" />
-        </g>
-      </g>
-      <g
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         style="fill:#227fb7;fill-opacity:1"
-         transform="matrix(0,-0.19438221,-0.19438221,0,10.442449,199.51533)"
-         id="g1039">
-        <path
-           id="path977"
-           style="fill:#227fb7;fill-opacity:1;stroke-width:0.26458332"
-           d="m 269.68852,-166.78045 c 1.32609,-2.29553 2.02803,-4.91226 2.02803,-7.56973 0,-2.65695 -0.70194,-5.27421 -2.02882,-7.57264 -0.66464,-1.14406 -1.47479,-2.19737 -2.40718,-3.13161 -0.9353,-0.93424 -1.98967,-1.7436 -3.13373,-2.40612 -2.29658,-1.32609 -4.91437,-2.02777 -7.56867,-2.02883 -2.65615,0 -5.2742,0.70274 -7.57264,2.02989 -1.17951,0.68421 -2.23573,1.49754 -3.13055,2.40612 -0.93239,0.93107 -1.74254,1.98543 -2.40718,3.13266 -1.32715,2.29526 -2.02882,4.91332 -2.02882,7.57053 0,2.65721 0.70167,5.27526 2.02962,7.57078 0.66357,1.14618 1.47267,2.19949 2.39792,3.12553 0.90117,0.91572 1.95738,1.72799 3.1406,2.41432 2.29658,1.32689 4.91437,2.02883 7.57079,2.02883 2.65403,0 5.27209,-0.70194 7.57158,-2.02989 1.14538,-0.66357 2.19736,-1.47267 3.13081,-2.40612 0.9324,-0.93318 1.74255,-1.98649 2.40824,-3.13372 z"
-           class="st0"
-           inkscape:connector-curvature="0" />
-        <path
-           id="path979"
-           style="fill:#227fb7;fill-opacity:1;stroke-width:0.26458332"
-           d="m 310.36107,-236.52277 c -3.72693,-3.11943 -7.72557,-5.92111 -11.88138,-8.323 -12.69392,-7.35779 -27.18197,-11.24902 -41.90154,-11.24902 -14.73279,0 -29.22719,3.89123 -41.91555,11.24902 -4.1619,2.40507 -8.15367,5.20065 -11.86074,8.31057 -1.70233,1.42531 -2.7358,3.52134 -2.83607,5.74939 -0.0982,2.24076 0.75459,4.43707 2.34103,6.02139 l 0.20373,0.20347 c 1.50786,1.50812 3.51393,2.33785 5.64594,2.33785 1.86664,0 3.68036,-0.6604 5.11096,-1.85817 2.97021,-2.48232 6.17723,-4.72836 9.53426,-6.67755 10.22562,-5.93249 21.90565,-9.06727 33.77671,-9.06727 11.87423,0.002 23.554,3.13875 33.77671,9.06939 3.2639,1.89336 6.39868,4.07723 9.31518,6.49658 1.49146,1.2393 3.37873,1.92034 5.31336,1.92034 2.22092,0 4.30451,-0.86519 5.87137,-2.43496 1.58221,-1.5793 2.4339,-3.76819 2.3368,-6.00895 -0.10133,-2.21774 -1.13189,-4.30874 -2.83077,-5.73908 z"
-           class="st0"
-           inkscape:connector-curvature="0" />
-        <path
-           id="path981"
-           style="fill:#227fb7;fill-opacity:1;stroke-width:0.26458332"
-           d="m 290.39931,-212.69995 c -1.81478,-1.36842 -3.72163,-2.6326 -5.66896,-3.75576 -8.54313,-4.94665 -18.27901,-7.56126 -28.1522,-7.56126 -9.8753,0 -19.61329,2.61461 -28.15431,7.56126 -1.94601,1.12342 -3.84863,2.38416 -5.65335,3.74333 -1.87378,1.41287 -3.04165,3.55864 -3.20807,5.8838 -0.1614,2.30267 0.68103,4.55983 2.31087,6.19072 l 0.19843,0.19844 c 1.50151,1.50283 3.49938,2.33071 5.63272,2.33071 1.76715,0 3.45493,-0.5633 4.87521,-1.63089 1.29699,-0.96943 2.63975,-1.85314 3.99574,-2.62943 6.06054,-3.51922 12.97596,-5.37739 20.00303,-5.37739 7.02283,0 13.93825,1.85817 19.99879,5.37739 1.3933,0.8083 2.73791,1.69386 3.99362,2.63975 1.42293,1.06759 3.1078,1.63089 4.86993,1.63089 2.12301,0 4.1185,-0.82576 5.61736,-2.32436 l 0.22834,-0.22754 c 1.62772,-1.62878 2.47015,-3.8788 2.31087,-6.17512 -0.1614,-2.32118 -1.32715,-4.46378 -3.19802,-5.87454 z"
-           class="st0"
-           inkscape:connector-curvature="0" />
-      </g>
-      <image
-         transform="scale(-1,1)"
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         width="57.037525"
-         height="42.723087"
-         preserveAspectRatio="none"
-         xlink:href="data:image/jpeg;base64,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 QBERAEREAREQBERAEREAREQH/9k= "
-         id="image1049"
-         x="-205.04588"
-         y="151.59091" />
-      <g
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         transform="matrix(0.09873298,0,0,0.09873298,28.129169,69.51901)"
-         id="g1071"
-         style="opacity:1">
-        <g
-           id="g1058">
-          <path
-             inkscape:connector-curvature="0"
-             class="st0"
-             d="m 19.398,413.158 h 473.206 c 13.586,0 21.961,-5.504 18.687,-12.082 l -37.574,-69.058 c -0.175,-1.047 -0.789,-2.035 -1.609,-2.981 V 80.131 c 0,-12.64 -10.34,-22.98 -22.981,-22.98 H 62.874 c -12.64,0 -22.984,10.34 -22.984,22.98 v 248.902 c -0.82,0.946 -1.43,1.938 -1.606,2.985 L 0.711,401.076 c -3.273,6.578 5.102,12.082 18.687,12.082 z M 191.242,380.63 204.883,354.916 H 307.12 l 13.637,25.714 z M 80.75,98.01 H 431.249 V 322.388 H 80.75 Z"
-             style="fill:#4b4b4b"
-             id="path1054" />
-          <path
-             inkscape:connector-curvature="0"
-             class="st0"
-             d="m 0,429.314 v 13.25 c 0,6.785 5.5,12.285 12.285,12.285 h 487.428 c 6.786,0 12.286,-5.5 12.286,-12.285 v -13.25 z"
-             style="fill:#4b4b4b"
-             id="path1056" />
-        </g>
-      </g>
-      <g
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         style="fill:#227fb7;fill-opacity:1"
-         transform="matrix(0,0.19438221,0.19438221,0,173.1742,91.235384)"
-         id="g1039-9">
-        <path
-           id="path977-2"
-           style="fill:#227fb7;fill-opacity:1;stroke-width:0.26458332"
-           d="m 269.68852,-166.78045 c 1.32609,-2.29553 2.02803,-4.91226 2.02803,-7.56973 0,-2.65695 -0.70194,-5.27421 -2.02882,-7.57264 -0.66464,-1.14406 -1.47479,-2.19737 -2.40718,-3.13161 -0.9353,-0.93424 -1.98967,-1.7436 -3.13373,-2.40612 -2.29658,-1.32609 -4.91437,-2.02777 -7.56867,-2.02883 -2.65615,0 -5.2742,0.70274 -7.57264,2.02989 -1.17951,0.68421 -2.23573,1.49754 -3.13055,2.40612 -0.93239,0.93107 -1.74254,1.98543 -2.40718,3.13266 -1.32715,2.29526 -2.02882,4.91332 -2.02882,7.57053 0,2.65721 0.70167,5.27526 2.02962,7.57078 0.66357,1.14618 1.47267,2.19949 2.39792,3.12553 0.90117,0.91572 1.95738,1.72799 3.1406,2.41432 2.29658,1.32689 4.91437,2.02883 7.57079,2.02883 2.65403,0 5.27209,-0.70194 7.57158,-2.02989 1.14538,-0.66357 2.19736,-1.47267 3.13081,-2.40612 0.9324,-0.93318 1.74255,-1.98649 2.40824,-3.13372 z"
-           class="st0"
-           inkscape:connector-curvature="0" />
-        <path
-           id="path979-2"
-           style="fill:#227fb7;fill-opacity:1;stroke-width:0.26458332"
-           d="m 310.36107,-236.52277 c -3.72693,-3.11943 -7.72557,-5.92111 -11.88138,-8.323 -12.69392,-7.35779 -27.18197,-11.24902 -41.90154,-11.24902 -14.73279,0 -29.22719,3.89123 -41.91555,11.24902 -4.1619,2.40507 -8.15367,5.20065 -11.86074,8.31057 -1.70233,1.42531 -2.7358,3.52134 -2.83607,5.74939 -0.0982,2.24076 0.75459,4.43707 2.34103,6.02139 l 0.20373,0.20347 c 1.50786,1.50812 3.51393,2.33785 5.64594,2.33785 1.86664,0 3.68036,-0.6604 5.11096,-1.85817 2.97021,-2.48232 6.17723,-4.72836 9.53426,-6.67755 10.22562,-5.93249 21.90565,-9.06727 33.77671,-9.06727 11.87423,0.002 23.554,3.13875 33.77671,9.06939 3.2639,1.89336 6.39868,4.07723 9.31518,6.49658 1.49146,1.2393 3.37873,1.92034 5.31336,1.92034 2.22092,0 4.30451,-0.86519 5.87137,-2.43496 1.58221,-1.5793 2.4339,-3.76819 2.3368,-6.00895 -0.10133,-2.21774 -1.13189,-4.30874 -2.83077,-5.73908 z"
-           class="st0"
-           inkscape:connector-curvature="0" />
-        <path
-           id="path981-2"
-           style="fill:#227fb7;fill-opacity:1;stroke-width:0.26458332"
-           d="m 290.39931,-212.69995 c -1.81478,-1.36842 -3.72163,-2.6326 -5.66896,-3.75576 -8.54313,-4.94665 -18.27901,-7.56126 -28.1522,-7.56126 -9.8753,0 -19.61329,2.61461 -28.15431,7.56126 -1.94601,1.12342 -3.84863,2.38416 -5.65335,3.74333 -1.87378,1.41287 -3.04165,3.55864 -3.20807,5.8838 -0.1614,2.30267 0.68103,4.55983 2.31087,6.19072 l 0.19843,0.19844 c 1.50151,1.50283 3.49938,2.33071 5.63272,2.33071 1.76715,0 3.45493,-0.5633 4.87521,-1.63089 1.29699,-0.96943 2.63975,-1.85314 3.99574,-2.62943 6.06054,-3.51922 12.97596,-5.37739 20.00303,-5.37739 7.02283,0 13.93825,1.85817 19.99879,5.37739 1.3933,0.8083 2.73791,1.69386 3.99362,2.63975 1.42293,1.06759 3.1078,1.63089 4.86993,1.63089 2.12301,0 4.1185,-0.82576 5.61736,-2.32436 l 0.22834,-0.22754 c 1.62772,-1.62878 2.47015,-3.8788 2.31087,-6.17512 -0.1614,-2.32118 -1.32715,-4.46378 -3.19802,-5.87454 z"
-           class="st0"
-           inkscape:connector-curvature="0" />
-      </g>
-      <image
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         width="23.453875"
-         height="37.184708"
-         preserveAspectRatio="none"
-         xlink:href="data:image/png;base64,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 7W689+Bfd+9FfO6eAgAAVHeYK/N5tG/tu2LRvPL2uT945Ni835axhVcAAABQAUSZz8bI0GBwvz5t fVuYm5lqaWpKJJKXr9Ku3ww78s8Juf1RAAAAoDyIMtWCpqY4P79AdqdaAAAAqAzMlakW8vLyP3cX AAAAeAkrmAAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUA AACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAA AIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAA gMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACA xxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDH EGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQ ZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBl AAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUA AACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAA AIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAA gMcQZQAAAIDHEGUAAACAx1Q+dwcqSyQS1ff0sLGyMDQw0NHWzszKSkvPeBYTe/fefYlU+rl79ykY GRrYWFlaWVqYmpi8SkuLi0+MS0h4EZ9QyebqampWlhbWlhbWVpZCoTA+ITE+MfHZ89jXeXkftdsA AAAfFQ+ijKGBwU/fjurYtlUNfX3Fs1lZ2eevXF27aUtiUvKn79unUdvOdvov45s18lE8dT/y4eYd u85evCwtP8+JRKIh/fuO/W6Uro6O3Kn8/Pz9fx3d9se+pJQUxYad27ddNHsGEd2LfPDVdz/Jnrr4 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 5L86IOLBQyIyq1Vr6IC+3PGeXTq5uTgT0ZF/Tm7evkt2I12JVDp5ph97SOTtUc/aylKxG8GhNydM m8nlGCKKS0jc/9dRVnZ3dank15FIJBOmzeSGNIjI1MSkV9fOv82dff7vQ0Fn/lmzdNGgvr1rGRuX d4Ubt+78PH0W961VVVUbeHmM/e6bXYHrb105d3Dn79MmjmvUwJtFio+H20pYdrTM3cWZiDKzsmRz DLPtj73snrM6AAAAFaiOUcaslgkrxCVUbVSGmyjK9lmRtf+vo4rTe4uKitZv2c7KstNoRo8Yxgr+ awIUP0UilZ67eJmVe3frolhh1fpNigejHpV+eg095fv9K1Xw5s1X3/307bhfLl4Jktsw18jAoEOb Vn7TJ18+eXTzmhVKn3YR0blLV1p36bVh6/ZnMbGyx1VUVOq4uXw9dNCOjeuCTh/7euggVdWPtYg9 9eUrVtDQ0OBmxqipqxGRvp6e4iLt5NRUnzYdG7XpNGX2vI/UJQAA+GJUxyiTlpHBCpriqi2oMTc1 ZQXFJ1MhN8OUNnn8tHRIwMqy9NmHioqKjbUVESUmJb9KS1PaKijkBit41HFTPBsZFa148FlMDCto a1d5wsrla8FjJk5u0KrDV9/9tHbTlqCQULnVPS2aNv5z+2a5xdicV+npq9Zv6tRnYKsuPWfMW3jw yLGnz2NKSkq4CjX09adNHLfYb2ZVO1ZJ3HL0jMwsbvLyjbDbrLB+5VK/6ZPrubuxDYKZ7OycjMzM nNzcj9QlAAD4YlTHuTLccyLZqRWVwVZZE9GLOPnJwuVtrBKfmFTw5o2GurqlhblAICgpKbGyMGf7 x2hqijetXqa0lVBQGgGNjYzkTmXn5BQXFys2UXqwSoqKikLDbrHnTUKh0N3FuUXTxt06tmfBS6yh sX7l0r5DR75KTy/vConJKYeO/nPo6D9EVENfv1ljn1bNm3Zo04o9YOrWsf2Tp882/r7jPfupyNjQ gBVevnrFHVy2JqCeu5uFuZmGuvqgvr0H9e2dlZUddufu1euhV4KvJyQmffBuAADAF6laRpm4eFaw tJCfvVsBkUjEPZlSHJXJzlH+//dSqTQ+IbG2na2aqqq6mlrBmzcsGRCRvp6eb7OmFX+ohrq63BHZ FxJ9PFKp9F7kA7a0qle3zgtmThcKhaYmJh3btf7jz4OVuUJGZuaxk6ePnTxtVstk+cJ57N0FI4YM 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 ABSWacr8yZvP+Ks/fVtK6fKrrnnPBz488oVf+6pXvu/v3pVS+tFPb337O9895GV23mmnvzrzj19x /DFzd9xx23996qmVV11/wyc/+/mHHn5kyKuff+45p5x4fPvnp5955thXvmb9+g0jj+rA/X/3Xy/6 9OAfz/nQBZdeceXgHy/+1CcOXXDwyEvY3Lr16w879hWdXx4ApohMU2ZavT5z5syUUt+0aaNeuF6v tS88va9vyAu88qQTzz3rb3eYM3u4Jeyww5zXvPKUkxcf/6nPXfy5L31l2wv09U1rryKlNHPmzCMP f+nV190w8qhOPuG4wauklGq12ub/OmPG9M3/dVTVLa8OALRlmjI99LpXn3reuWcP/vH2JXf8fMkv 7/zVr5cuu3+P+bvtv99+B+7/uwsPfWFKacb06X/713++ww5zLvzEP4+8zJMXHz9qypx0wnGdDO/R xx5fs3btqBfbsGGUSSAAmJomecoc+dLDPvje/9X++ZnVqz/40Qu/9d3LB//1lttu/2a6LKV0/NGL LvjA+9rTNn/yR2+8/4EH/uOSbw65wP7+/nq9ftyio2ZMn7523brh1vuCAw/YfbddBy8/wgjPev8H b7r5p8VvGQCQ0uR+B1OlUnnP37yjVq2mlO665zennv6mzTtmc1dee/2r3/CmX911d/uPf/Enb+vr G/rE1o0/ujmlNGvWzJcfecQIqx6ckhnMlEql0tWNAABGMplT5phFRz5vn+e2f/7ABR974MGHRrjw Q4/89tzzPtr++dnP2uUPTn3lkBf73tXXtFqtlNLJi48fblGVSuWkxcellO65d+ld9/ym/ZftawEA vTWZU+btb3tz+4crrr72lttuH/Xyty+5Y/BNRme+9U21oV5p+9tHH7vtF0tSSi8/8ojhXre74OAD d332s1NKl33/qmp1Mt/DADDhJu0v2v323WfBQQe2f/74Jz898oUHfeIzF7V/2O05z5m/+27bXmBa vX7pFVellGbOmHHsoiOHXMjJG88uXXrFldXapL2HASAHk/YX7d577dX+YcWTT9637P4Or7V02bJn Vq9u/7zHUClTr9cvv/KqZrOZUjp58RDvUapUKq84/riU0l33/Oaee5fWvYkaAMqU+zuY9n3u3me+ 5Y9GvsyCgw/Y9i/3mD8QIsseeLDQGu+7/4EDnr9fSmmP3Xff9l+r1eqjjz1+y20/X3joC4864vDt t9vu6Wee2fwChy54wbOftUtK6btXXJlSqlRGicX5u+02+IKe4TSbzXvuXVrkRgDAVJF7yjz/efs+ /3n7dnHFwRC5/4GRXu27rfuW3d9OmSFPMLV993vfX3joC6f39R139FFbvStq8L1Ll11xVSer2/wz b4azctWqhUcv7mRpADDVTNoTTLs959ntH+5/sNiszOAsy3CfHZxSuuLqaxoD55i2eB9TtVp9xfHH pJTu/NWvly5bVmi9AEAXcp+V+fFPb/3MF7448mWOWXTkm99w2lZ/+cSKFe0fZs2cUWiNu++6a/uH Ec5MPbF8xY9/cssRhy182WEvmTNn9sqVq9p//+JDFuyy884ppcu+39GUTErpv77z3WX3PzDyZdav X9/h0gBgqsk9ZR5/4olRPwx3rz3mb/uXgy/13XP+EP86gvan9KaUlt0/0ouFL73iyiMOWzht2rQT jn75Jd/+n/ZfnrTZe5c6XN23L73cp/0CQNcm7Qmm+zZOdewxf4hX7w6nVqsNnpka+fXCV1x9bX9/ f9rsHFOtWl187DEppSW/vPP+ET+ODwDolUmbMks3m5XZYc6cDq91wjEvnzZtWkqp0Ww+8NBIOfLU ypXtLzE4/CUvnrvjjimlhS86ZOed5qWULu347BIAMEaTNmXuXXrfUytXpZT6+qa99Yw3dHitt/zh 6e0fvnPp99avH+XLqC/9/pUppVqttvjYl6eUTjphYHqm8xfKAABjNGlTZs3atZ/70lfaP7/p9NfN mTN71KscdMD+hyw4OKXUaDQ+ddEXRr38Vdfe0M6dkxcfX6vVTjzu6JTS7UvueOjhR8YycgCgc5M2 ZVJK//If33j0scdTSttvt935554z3Fcmte05f/d/+uiH2z//93cu7eSD9VY9/fQNP7wppbTwRYee cuIJ7dNMnb/gFwAYu8mcMmvXrRucXFl87NHf+PLnf2fPPYe85O/u97x/u/iz7U/VW716zadHe/v3 oIFzTNXq+979rpRSq9W6/PtX92DoAEBncn8z9hh945vfOfwlC19x/LEppeft89z/+tcvXn/jTb+6 +5677r7n3vuW7bbrc15w4AEHH3jAYS86dNasmSmltevW/dk73/3gQw93uPyrrvvB2nXrZkyfvsMO c1JKP7v9F488+mihEZ71zr9+6qmVnVzyf3/kQh+7BwBbmeQp02g03nX2uY89/sQZp722UqlsN2vW SSccN/jpL1t5+Le/PevcD918y62dL3/NT6TlNQAAHiJJREFUmjXX3nBjO5XSxkmaQtpfktCJ7bab VXThADDpTeYTTG3NZvO8C//hdW/+4x/95Kftb7Te1vIVT37+y/9y0h+8oVDHtA2+OKbZbF5+pbNL ADCuKvsd+tKJHsP4mTd3x6OOeOnee+2107y5M2fMeGL5iseeeOLnS+645We3N4apHAAgZ1MrZQCA SWbyn2ACACYxKQMABCZlAIDApAwAEJiUAQACkzIAQGBSBgAITMoAAIFJGQAgMCkDAAQmZQCAwKQM ABCYlAEAApMyAEBgUgYACEzKAACBSRkAIDApAwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIGAAhMygAA gUkZACAwKQMABCZlAIDApAwAEJiUAQACkzIAQGBSBgAITMoAAIFJGQAgMCkDAAQmZQCAwKQMABCY lAEAApMyAEBgUgYACEzKAACBSRkAIDApAwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZ ACAwKQMABCZlAIDApAwAEJiUAQACkzIAQGBSBgAITMoAAIFJGQAgMCkDAAQmZQCAwKQMABCYlAEA ApMyAEBgUgYACEzKAACBSRkAIDApAwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZACAw KQMABCZlAIDApAwAEJiUAQACkzIAQGBSBgAITMoAAIFJGQAgMCkDAAQmZQCAwKQMABCYlAEAApMy AEBgUgYACEzKAACBSRkAIDApAwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZACAwKQMA BCZlAIDApAwAEJiUAQACkzIAQGBSBgAITMoAAIFJGQAgMCkDAAQmZQCAwKQMABCYlAEAApMyAEBg UgYACEzKAACBSRkAIDApAwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZACAwKQMABCZl AIDApAwAEJiUAQACkzIAQGBSBgAITMoAAIFJGQAgMCkDAAQmZQCAwKQMABCYlAEAApMyAEBgUgYA CEzKAACBSRkAIDApAwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZACAwKQMABCZlAIDA pAwAEJiUAQACkzIAQGBSBgAITMoAAIFJGQAgMCkDAAQmZQCAwKQMABCYlAEAApMyAEBgUgYACEzK AACBSRkAIDApAwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZACAwKQMABCZlAIDApAwA EJiUAQACkzIAQGBSBgAITMoAAIFJGQAgMCkDAAQmZQCAwKQMABCYlAEAApMyAEBgUgYACEzKAACB SRkAIDApAwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZACAwKQMABCZlAIDApAwAEJiU AQACkzIAQGBSBgAITMoAAIFJGQAgMCkDAAQmZQCAwKQMABCYlAEAApMyAEBgUgYACEzKAACBSRkA IDApAwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZACAwKQMABCZlAIDApAwAEJiUAQAC kzIAQGBSBgAITMoAAIFJGQAgMCkDAAQmZQCAwKQMABCYlAEAApMyAEBgUgYACEzKAACBSRkAIDAp AwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZACAwKQMABCZlAIDApAwAEJiUAQACkzIA QGBSBgAITMoAAIFJGQAgMCkDAAQmZQCAwKQMABCYlAEAApMyAEBgUgYACEzKAACBSRkAIDApAwAE JmUAgMCkDAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZACAwKQMABCZlAIDApAwAEJiUAQACkzIAQGBS BgAITMoAAIFJGQAgMCkDAAQmZQCAwKQMABCYlAEAApMyAEBgUgYACEzKAACBSRkAIDApAwAEJmUA gMCkDAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZACAwKQMABCZlAIDApAwAEJiUAQACkzIAQGBSBgAI TMoAAIFJGQAgMCkDAAQmZQCAwKQMABCYlAEAApMyAEBgUgYACEzKAACBSRkAIDApAwAEJmUAgMCk DAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZACAwKQMABCZlAIDApAwAEJiUAQACkzIAQGBSBgAITMoA AIFJGQAgMCkDAAQmZQCAwKQMABCYlAEAApMyAEBgUgYACEzKAACBSRkAIDApAwAEJmUAgMCkDAAQ mJQBAAKTMgBAYFIGAAhMygAAgUkZACAwKQMABCZlAIDApAwAEJiUAQACkzIAQGBSBgAITMoAAIFJ GQAgMCkDAAQmZQCAwKQMABCYlAEAApMyAEBgUgYACEzKAACBSRkAIDApAwAEJmUAgMCkDAAQmJQB AAKTMgBAYFIGAAhMygAAgUkZACAwKQMABCZlAIDApAwAEJiUAQACkzIAQGBSBgAITMoAAIFJGQAg MCkDAAQmZQCAwKQMABCYlAEAApMyAEBgUgYACEzKAACBSRkAIDApAwAEJmUAgMCkDAAQmJQBAAKT MgBAYFIGAAhMygAAgUkZACAwKQMABCZlAIDApAwAEJiUAQACkzIAQGBSBgAITMoAAIFJGQAgMCkD AAQmZQCAwKQMABCYlAEAApMyAEBgUgYACEzKAACBSRkAIDApAwAEJmUAgMCkDAAQmJQBAAKTMgBA YFIGAAhMygAAgUkZACAwKQMABCZlAIDApAwAEJiUAQACkzIAQGBSBgAITMoAAIFJGQAgMCkDAAQm ZQCAwKQMABCYlAEAApMyAEBgUgYACEzKAACBSRkAIDApAwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIG AAhMygAAgUkZACAwKQMABCZlAIDApAwAEJiUAQACkzIAQGBSBgAITMoAAIFJGQAgMCkDAAQmZQCA wKQMABCYlAEAApMyAEBgUgYACEzKAACBSRkAIDApAwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIGAAis /sxTKyZ6DAAAXaqsfHrNRI9hdK3UKnqFKapS9OIFr1C2SrHxZDZ6YsjteNL9eArv70WVu4dVCu7v sIXNNp/6CNtS4f23tB2+8G/cgYtPqaLJ7KAQPqomegBkdjxptcoa0MbxdLz8bjbOkjfo3Pb3Kbf/ Vkr9fVd86YWflI5x9CO9VqbwxpDd1pPdgEqT2S3N7bhWVGbDmaIyexTKn0Iob/l5dYOO6bXKZv/N YendTK6PcfT1TtZRIJcKX6Fs2Q2o1zLba3M7qBWV2XCmusx233bNlDc9U8INzisaREyvVYb6Y8+2 n+JLH9MrBMYy+o7ewWR6JleZ3a7cjmtFZTYcBmT2uMSZnsmrG3RMrw13g3tzRxRfem9e6djd6Dt9 M7aayU9mtyi341pRmQ2HLWT26ESomby6Qcf02sg3eKx3R/Gl9/IdG12MvsDnyqiZnGR2W3I7rhWV 2XAYQmaPUd41k1c36Jhe6+QGd3+nFF967995WnT0xT4iT83kIbNbkdtxrajMhsOwMnukcq2ZvLpB x/Ra5ze4m7um+NJ73zFdLNen/QIAgRVOGRMzEy2z8ef2FK2ozIbDKDJ7vPKbmMlrCsSUTK+Vuz0U X3rZy++UWRkAILBuUsbEzMTJbOS5PUUrKrPh0JHMHrXyP3y/3NdGFJDb/p7ZllC+cl87VXzplULX KnX0Xc7KqJmJkNmYczuuFZXZcCggs8cuj5rJqxt0TK+V+4627jqm8+uW/X48J5gAgMC6TxkTM+Mr s9Hm9hStqMyGQ2GZPYITPTGT1xSIKZleG/sNHmkJY5mS6WQJ5Y4+pTTGWRk1M14yG2dux7WiMhvO JPbRG+ofvWGUL3rrXmaP48TVTF7doGN6rVc3eOjljL1jRl5OuaPfaKxHmfbSfd9kaTLba3M7qBWV 2XAmt4/eUD//ulr75/cc1V/KOjLbfds1U+LXTW59g/OKBhHTaz2/wVtsP72KmKGXXvbot1Tvyeo2 LqLjPbirdZZ/gJhKCh+kSl5B0aXHnxKc3M67rvbRGwY6ph00Zx/VKGtl7YAoWjSlHU8Ggqbo1Qo/ IyxRbvtXbuMJruQHq9SlD7P83r7sN7etmWHoGMq0ece0nX9d7SNb/k3PFZ4SyG0GIZuNNLf9K7fx kKGen8Yud8K3/PnbyU7EULLBjnn/0Y0PXbvph9LnZjbWTIHpmZLPT4U7/57b/pXbeCaN7c/rG+c1 Pv2+9aUuv6Q3Y+e2fZNS0jGU7kPXDnTMecc1zjpyoFrOOrJx3nGNNC5zM8n0TLdy279yGw85K+3N BalS6pOLSsXcTEE6hpJ96Nrax35QSyl9/MT+ty9sbv5P7zy8MaPeevf36uMwN5NSqqRKsZfOlHu4 Kr74ksczxAoz279yG8+kVPZMSdv4zACVlzJJzWREx1CydsfUKulTv9d/xoLmthd4+8JmX63/HZeq mZKu0L32/rX0ycoVd1dvfrB652PVB1amp9dXapW0w4zW3nNbL3h26+i9myc8tzG9Pji4Ya1vpCvv qV6ztHr7I5V7V1SeWltptNL2fa35c9L+uzQPm99avE9zrx1Hum32d4oqNWWSmsmCjqFkn/zxQMdc 9Kr+1x80RMe0ve3QZl+t/y//p37+dbWdZ7X+9EXDXrIn1EwnGs10yZ21z/20dvODQ7zeYM3TlUee rtx0f/rsT2s7zqi/9ZDGOw9vzJs59KKeXJs+8aP6F26trViz9T8tX1NZvib9/Le1ry1JKaWXzG+e +aLmHxzQqG+zTvs7XSg7ZYDJ7w0HN76+pPo3RzR+f/9R6uSMBc2+Wv+nb6699oByO4ZO3PRA9R2X TvvV45WU0vZ96di9Gy/bs3nY/NZeO7bmTG81mmnF2spvVlR+/ED10l9Xb36w+o831b90W+3ji4cI 1v++s/quy+tPrK6klBbu3jxlv+Zh81vPnduaO7NVq6SV6ypLn0w/ebB6w33Va+6t3vxA9eYHqhfe WPvkyf2H72FLYKwqq55ZW/5ayn1mYWJmJKZkmDjt0+Tjc0p+OOV/3kyxK5S8+E5taKSzvj/t4ltr rZT2mdf6i4X9bzi4MXv6SFe549HqB6+tX3ZXNaX014c1zj+uf3D3fP/V9X+8qZZSWrxP8wPH9L/g 2SMN+un16d9+Xvv0T2r3LK9UUvrjFzX+zwn9fbWU7O/jZTx3zPFZl6+TBJhamq30hkv6vnBrra+W 3ruo/+Yz15354lE6JqV04LOaX3/9hotetWFGPX3yx7X3XT0wqX/u1fV/vKk2vZY+83v9l5y+YeSO SSlt35fOfHHj5jPXv3dRo6+WPn9L7Q//c1rTM1LGYHxSJrcn7lOGKRmmvPLfm13sCjls1Bf/rHbF 3dVdZrWueeu69xw1MCPS4VBOP6h5yekbptfS//1R7bql1avvrf7TTbW+Wvr6aRvOWFDgpdx9tfSe o/qvedv6XbZrfe/u6sW31uzvdG3cZmWKbXM/WFb9wbICY1MzQ8ijY9atW7du3brCy9Yx9I6a2cq/ /6KWUvrY4v6DR5tBGXIQi/Zqvvfl/SmlD1xT/8DV9ZTS+4/uP3bvbl7ycvCzWh9b3J9S+vclRX8Z 2d+79/T71k/sad+ey/EE0wXX10/6at9JX+373t05Do/OrV279vHHH3v88cdWrVw50WMBBtzxaDWl tHjf7t8P/5cvaew2u3XLQ5XbHqnMn9P684XdL+rEfZsppSW/dbSne+P5DqaO3ll4wfX1j9wwMKqn 1hXobm/M3kIeUzKt5sATtZWrVqaUZs+Z0+nSJ/x5K1vq/HOuRn6216vlFFX+G7OLXWFi35i9ekNK Kc0Z7cUxW65+C321dNpBzfZLfV9/ULPjU1RDmN23aUhdj4fNTb7vJRhFZbxnZUbZ/j5yw6aOOe2g xmsPKFb6TjMNyKNjUkozZ82aNXNWJaVKSqtWrexwbkbHUAanmQYW06MVD76J+vD5Y3o3tf2dMamk NBGfK9PeCod4fvGRG+oXXL+pYz77yg3VLn7HVlKaym/PziZiBs2dNy+tSGtWr04prRptbsZBLXNj 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 Xs2U0pF7NUv+GIYoNROyY1JKM2bM2GXnXVJKfdOnF7mejqH3JmvNjH1//887qh+6tv6bFZWU0o4z 0qv3b7ziec0j92zuOGPTZVatS9/6f7WP31j75WOV47/U96XXbDhlv+bgv1766+qb/2vamv70vJ1a 735Z49TnN2dPbw2u7Mm16cZl1cvuqn7zzurPHq786bfqH7m+9f6jG689sNmT8UOOKZPaEdPW3mpL /D624tcYV1EjZpCIIR/Fv2+y5OPD2I5vY9/f71leecel9euWVlNK+85rveuIxmkHNWYM9Wth9vR0 xoLGaw9s/N336l/8We2M/5x22ZsG3nn7o/urZ1wybX0jvfWQxsdP7N/2JTU7zkin7Nc8Zb/m35+Y vrak+g8/rN29vPKW/65f/LPmP5/S2GduiW/xYIqoV0baOortwCXmQOmf+W0X6bHiB1kPAeOkUrhP KimlVtlBU9bFh/Xl22pnXVF/Zn3aaVbrg8c03rSgURvtpM+MevrkKf0z6ukzP6m98ZKBZnnjJfX1 jfTnCxsfP7F/1Ku/+YXNMxY0v3p79f1X169fWj38ouqFizdeyzFgky7ui3J/A2f7dL+t8szqdSNe IJuaIQ4dM/ls9+G+cV7jM+euL30dBQ9YJdbM+NrtwukrNx74X39Q8+9P3DB3ZoGrN5rp5H+ZduOy TeHzsj2bl52xYagSGmrXrqSU0vI16W8vr399ycB15s5MD7y7/Ec8hq6PhwPb50TsraN+ON6gifmI vEqhu7XYpZl0Cm8AlYqOYcIU3F4rqTLiNHYY7zy8v1pJe+7Q+sprNlz86mIdk1KqVdOnTumftvG3 x7Rq+tQp/aPO6KS0xR0+b2b64u/3f/k1/bvPaaWU3vFSb1ZNY/4VOnV/A486KzPI9AyjMBlDVFNv emZtfxryNTGd+6vv1r/0s1pK6S2HND51ynCnlipD/riVVevS7EKvqZuceng87MH22dlLT3I5EdZ5 yhQeQfh9nSJ0DLFNvZoZi0pKy56q/N6/TqtW0v+8ccP8OcPdG5Wt/s8wen4HjWn7HHU0G5ceMmUK D2JK7+tTiY5hMlAznSl2Uq7gFaakku6gLrfPDkfTKnDZba7Xa0U/pajk9wYTkI5hkij8TqKpuCVn +IkPwZV3B3Wz5M6vk9UDm8vXSQIAdKGLlDExwyamZJhUTMyMyJRMr5V9B5X7+zqfh9esDAAQWHcp Y2KGlEzJMCmZmBmG/b0EGb1yvLtHK5PHuOtZGTUz1TmuMWmpmW3Y3ye3MX4w34RzggkAJkpGEzNx jSVlTMxMXZ6iMcmZmNmM/b1kpdbM6I/F2B+tiX68K2OclVEzU5HjGlOCmkkp2d/HyYTNzfTq0Zq4 R72SUhrbl3BsXErnD0OxS5MZBzWmloIHrHbNTJpPAba/j69WaT1QGXIj7vnKxv33+6ZbUO/Rramk lFKrWNCULfThJPwhIbODWl6joQQl7u/dTc90fDycDOzvvdHeZsoY/rbLLGv7HJc7f+uV9PRlv7bm Hok78gG2BMZddo9yZntBiTK7pXmNphvjE8Fx76chRj72E0xbrSKvpyPhzmfF3bgGOKgxcbLb3zM7 Hvae/b0sY99mOrkzsttjRjPsjSrnzdi2765EGeewPO5kILvHPbP9omcyu115jWbidR4oUe65kcZZ 2ufK2MoLyn+Eo/CIk43sHv3M9o4eyOwW5TWaePK//0YZYZkfkWdb71jOY+uIx5rMZLcNZLaPjElm tyWv0WSk0JmjnO/F0cdW8qf92uI7kOeoCvAok6XstoTM9pQuZXYr8hpNbHnelx2N6v8DZU2qo05O JOkAAAAASUVORK5CYII= "
-         id="image1105"
-         x="10.377478"
-         y="153.15398" />
-      <path
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         inkscape:connector-curvature="0"
-         id="path1116"
-         d="M 110.02735,159.366 V 107.50769"
-         style="fill:none;stroke:#4b4b4b;stroke-width:0.96499997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-      <path
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         inkscape:connector-curvature="0"
-         id="path1118"
-         d="M 72.809372,91.851652 H 93.623219"
-         style="fill:none;stroke:#4b4b4b;stroke-width:0.96499997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-      <g
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         transform="matrix(0.06552672,0,0,0.06552672,93.346549,75.376283)"
-         id="g937"
-         style="opacity:1;fill:#227f1c;fill-opacity:1">
-        <g
-           style="fill:#227f1c;fill-opacity:1"
-           id="g925">
-          <path
-             inkscape:connector-curvature="0"
-             class="st0"
-             d="M 510.293,227.203 C 497.145,109.133 402.867,14.859 284.797,1.711 275.328,0.527 265.73,0 256,0 246.27,0 236.672,0.527 227.207,1.711 109,14.859 14.859,109.133 1.578,227.203 0.527,236.672 0,246.27 0,256 0,265.73 0.527,275.328 1.578,284.793 14.859,403 109,497.145 227.207,510.422 236.672,511.473 246.27,512 256,512 c 9.73,0 19.328,-0.527 28.797,-1.578 C 402.867,497.145 497.145,403 510.293,284.793 511.477,275.328 512,265.73 512,256 c 0,-9.73 -0.523,-19.328 -1.707,-28.797 z m -63.547,-26.961 c 1.969,1.23 3.945,2.457 5.824,3.691 3.578,13.156 5.758,26.824 6.484,40.977 0.016,0.422 0.066,0.836 0.078,1.258 h -64.094 l -9,-0.023 c 0,0 0,-0.004 0,-0.008 -0.789,-27.742 -4.734,-54.562 -10.914,-79.942 3.726,1.301 7.387,2.649 10.985,4.031 0.148,0.058 0.301,0.114 0.453,0.172 7.058,2.722 13.855,5.594 20.39,8.566 0.325,0.149 0.649,0.289 0.973,0.438 6.098,2.797 11.93,5.691 17.531,8.637 0.797,0.418 1.602,0.832 2.391,1.258 4.894,2.621 9.55,5.286 14.023,7.969 1.642,0.984 3.271,1.972 4.876,2.976 z m 5.824,107.957 c -2.383,1.562 -4.863,3.129 -7.394,4.687 -0.504,0.309 -1.012,0.618 -1.516,0.922 -5.011,3.046 -10.293,6.074 -15.843,9.046 -0.95,0.504 -1.914,1 -2.871,1.5 -4.75,2.489 -9.688,4.93 -14.797,7.317 -3.86,1.785 -7.727,3.558 -11.68,5.218 -1.77,0.754 -3.582,1.481 -5.386,2.215 -5.91,2.375 -11.875,4.664 -17.934,6.726 6.164,-25.34 10.098,-52.25 10.89,-79.942 h 70.043 l 3.058,0.004 c -0.659,14.589 -2.89,28.776 -6.57,42.307 z m -93.956,123.118 c -6.649,3.843 -13.465,7.445 -20.598,10.538 11.793,-21.386 22.406,-46.035 30.797,-73.042 27.086,-8.414 51.804,-19.066 73.238,-30.898 -17.238,39.261 -46.703,71.902 -83.437,93.402 z M 313.668,68.149 c 3.106,5.121 6.191,10.523 9.222,16.191 0.473,0.886 0.934,1.781 1.402,2.676 2.52,4.804 4.992,9.801 7.41,14.968 1.797,3.864 3.578,7.742 5.25,11.699 0.75,1.754 1.477,3.555 2.211,5.344 2.398,5.922 4.707,11.894 6.797,17.957 -25.344,-6.167 -52.262,-10.101 -80.098,-10.89 -0.008,0 -0.015,0 -0.023,0 V 52.855 c 0.008,0 0.015,0 0.023,0 14.594,0.661 28.793,2.895 42.336,6.574 1.598,2.454 3.199,4.996 4.793,7.602 0.227,0.371 0.455,0.747 0.677,1.118 z m -47.828,77.668 c 0.008,0 0.015,0 0.023,0 31.16,0.922 60.481,5.918 87.172,13.41 7.234,26.09 12.133,54.863 13.18,85.286 0.015,0.55 0.078,1.102 0.094,1.656 H 265.84 Z m 0,220.492 V 265.89 h 97.355 l 3.118,0.004 c -0.922,31.278 -5.914,60.59 -13.278,87.141 -26.207,7.23 -54.981,12.129 -85.516,13.176 -0.558,0.019 -1.121,0.082 -1.679,0.098 z M 441.855,173.984 c -21.386,-11.66 -46.035,-22.406 -73.042,-30.667 -8.282,-27.086 -19.062,-51.934 -30.898,-73.367 39.234,17.226 71.851,46.66 93.355,83.363 3.863,6.671 7.48,13.511 10.585,20.671 z M 265.84,459.133 v -73.094 c 0.008,0 0.015,0 0.023,0 24.118,-0.684 47.477,-3.84 69.793,-8.649 3.461,-0.722 6.922,-1.367 10.379,-2.172 -1.332,3.758 -2.703,7.45 -4.11,11.078 -0.015,0.039 -0.031,0.078 -0.046,0.121 -2.794,7.188 -5.734,14.11 -8.778,20.758 -0.098,0.21 -0.191,0.426 -0.289,0.637 -2.86,6.214 -5.813,12.152 -8.817,17.847 -0.371,0.703 -0.734,1.41 -1.11,2.11 -2.668,4.973 -5.378,9.703 -8.105,14.246 -0.938,1.558 -1.879,3.113 -2.836,4.64 -1.246,2.004 -2.496,4.008 -3.746,5.914 -13.207,3.59 -27.043,5.778 -41.258,6.496 -0.366,0.017 -0.729,0.056 -1.1,0.068 z m -19.726,0.008 c -14.586,-0.66 -28.778,-2.89 -42.313,-6.57 -1.606,-2.45 -3.211,-4.988 -4.813,-7.594 -0.203,-0.332 -0.402,-0.668 -0.605,-1 -3.25,-5.328 -6.481,-10.958 -9.649,-16.898 -0.023,-0.043 -0.043,-0.082 -0.066,-0.126 -3.27,-6.14 -6.481,-12.598 -9.578,-19.347 -0.007,-0.016 -0.011,-0.027 -0.019,-0.043 -4.668,-10.172 -9.098,-21.008 -13.137,-32.438 25.371,6.18 52.32,10.122 80.183,10.91 v 70.266 z M 69.95,337.914 c 21.434,11.832 46.152,22.484 73.238,30.898 6.867,22.113 15.278,42.531 24.555,60.988 2.019,4.09 4.027,8.187 6.156,12.156 C 127.574,421.558 90.305,384.266 69.95,337.914 Z m -4.708,-26.031 c -1.965,-1.227 -3.938,-2.454 -5.813,-3.684 -3.676,-13.535 -5.91,-27.726 -6.57,-42.309 h 73.106 c 0.684,23.996 3.84,47.332 8.649,69.637 0.718,3.461 1.363,6.918 2.171,10.375 -3.706,-1.297 -7.355,-2.637 -10.937,-4.012 -0.126,-0.05 -0.25,-0.098 -0.375,-0.144 -7.07,-2.727 -13.879,-5.602 -20.418,-8.578 -0.328,-0.149 -0.656,-0.293 -0.98,-0.442 -6.094,-2.793 -11.918,-5.683 -17.512,-8.625 -0.809,-0.422 -1.617,-0.84 -2.418,-1.27 -4.887,-2.617 -9.531,-5.278 -14,-7.957 -1.649,-0.988 -3.29,-1.98 -4.903,-2.991 z M 68.18,198.418 c 5.262,-3.202 10.808,-6.382 16.664,-9.503 0.125,-0.066 0.254,-0.133 0.382,-0.199 6.055,-3.215 12.41,-6.367 19.058,-9.41 0.126,-0.058 0.25,-0.114 0.375,-0.168 6.66,-3.039 13.606,-5.973 20.817,-8.75 0.121,-0.05 0.25,-0.098 0.374,-0.144 3.61,-1.387 7.286,-2.738 11.024,-4.047 -6.18,25.379 -10.125,52.199 -10.914,79.942 0,0.012 0,0.019 0,0.031 H 65.703 l -12.844,-0.035 c 0.657,-14.594 2.891,-28.66 6.57,-42.199 2.414,-1.586 4.922,-3.168 7.488,-4.746 0.423,-0.26 0.845,-0.514 1.263,-0.772 z m 110.441,-92.965 c 0.207,-0.449 0.402,-0.906 0.614,-1.355 2.75,-5.969 5.594,-11.683 8.488,-17.183 0.473,-0.895 0.934,-1.794 1.414,-2.684 2.625,-4.89 5.293,-9.547 7.977,-14.027 0.965,-1.61 1.93,-3.211 2.914,-4.793 1.258,-2.024 2.516,-4.051 3.774,-5.981 13.535,-3.679 27.73,-5.91 42.316,-6.57 v 73.234 c -24.14,0.684 -47.519,3.848 -69.851,8.668 -3.434,0.715 -6.867,1.352 -10.297,2.153 1.285,-3.68 2.617,-7.294 3.984,-10.848 0.066,-0.176 0.133,-0.348 0.203,-0.523 2.687,-6.954 5.523,-13.646 8.464,-20.091 z m -32.934,140.68 c 0.918,-31.027 5.914,-60.348 13.278,-86.906 26.684,-7.492 56,-12.488 87.152,-13.41 V 246.168 H 162.543 Z M 174.086,69.95 c -11.832,21.434 -22.617,46.281 -30.898,73.367 -22.32,6.828 -42.906,15.394 -61.496,24.726 -3.902,1.926 -7.816,3.82 -11.648,5.859 20.398,-46.328 57.69,-83.601 104.042,-103.952 z m 72.028,296.363 c -31.153,-0.922 -60.465,-5.918 -87.149,-13.278 -7.359,-26.551 -12.355,-55.863 -13.278,-87.145 h 100.286 0.144 v 97.606 z"
-             style="fill:#227f1c;fill-opacity:1"
-             id="path923" />
-        </g>
-      </g>
-      <text
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         id="text1122"
-         y="72.578178"
-         x="93.759567"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444447px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444447px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:0.26458332"
-           y="72.578178"
-           x="93.759567"
-           id="tspan1120"
-           sodipodi:role="line">INTERNET</tspan></text>
-      <path
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         inkscape:connector-curvature="0"
-         id="path1124"
-         d="M 42.725091,186.61808 H 161.78755"
-         style="fill:none;stroke:#d04067;stroke-width:2.16499996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.33, 2.165;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1596)" />
-      <text
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         id="text1962"
-         y="200.37656"
-         x="153.94832"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444447px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444447px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:0.26458332"
-           y="200.37656"
-           x="153.94832"
-           id="tspan1960"
-           sodipodi:role="line">Soft AP mode</tspan></text>
-      <text
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         id="text1966"
-         y="196.1432"
-         x="69.016968"
-         style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="196.1432"
-           x="69.016968"
-           id="tspan1964"
-           sodipodi:role="line">Configure SSID &amp; Password</tspan></text>
-      <text
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         id="text1962-8"
-         y="131.31322"
-         x="146.54961"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444447px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444447px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:0.26458332"
-           y="131.31322"
-           x="146.54961"
-           id="tspan1960-7"
-           sodipodi:role="line">Station mode</tspan></text>
-      <text
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         id="text2198"
-         y="137.92555"
-         x="146.59502"
-         style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="137.92555"
-           x="146.59502"
-           id="tspan2196"
-           sodipodi:role="line">Establish connection</tspan><tspan
-           id="tspan2202"
-           style="stroke-width:0.26458332"
-           y="143.65819"
-           x="146.59502"
-           sodipodi:role="line">with SSID &amp; Password</tspan><tspan
-           id="tspan2206"
-           style="stroke-width:0.26458332"
-           y="149.39082"
-           x="146.59502"
-           sodipodi:role="line">from smartphone</tspan></text>
-      <text
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         id="text1962-6"
-         y="210.95297"
-         x="6.320375"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444447px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444447px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:0.26458332"
-           y="210.95297"
-           x="6.320375"
-           id="tspan1960-4"
-           sodipodi:role="line">Sketch embedded AutoConnect</tspan></text>
-      <path
-         sodipodi:nodetypes="cc"
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         inkscape:connector-curvature="0"
-         id="path1124-8"
-         d="m 157.67373,159.84557 -22.77547,0"
-         style="fill:none;stroke:#227f1c;stroke-width:2.16499996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.33000005, 2.16500002;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1596-8)" />
-    </g>
-  </g>
-  <style
-     type="text/css"
-     id="style815">
-	.st0{fill:#4B4B4B;}
-</style>
-  <style
-     type="text/css"
-     id="style833">
-	.st0{fill:#374149;}
-</style>
-  <style
-     type="text/css"
-     id="style921">
-	.st0{fill:#374149;}
-</style>
-  <style
-     type="text/css"
-     id="style975">
-	.st0{fill:#374149;}
-</style>
-  <style
-     type="text/css"
-     id="style1052">
-	.st0{fill:#374149;}
-</style>
-</svg>




diff --git a/lib/AutoConnect-master/docs/images/process_begin.svg b/lib/AutoConnect-master/docs/images/process_begin.svg
deleted file mode 100644
index f34b54a106d02b5750982bb968dc4ab2bb784933..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/images/process_begin.svg
+++ /dev/null
@@ -1,1105 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="99.565193mm"
-   height="272.12399mm"
-   viewBox="0 0 99.565193 272.12399"
-   version="1.1"
-   id="svg8776"
-   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
-   sodipodi:docname="process_begin.svg">
-  <defs
-     id="defs8770">
-    <marker
-       inkscape:stockid="Arrow2Mstart"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker10937"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10935"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Mstart"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Mstart"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10498"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="matrix(0.4,0,0,0.4,4,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mstart"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker10931"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10929"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker10927"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10925"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mstart"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker10923"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10921"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker10919"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10917"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker10915"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10913"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Mend"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10501"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="matrix(-0.4,0,0,-0.4,-4,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mstart"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker10909"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10907"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker10905"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10903"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mstart"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mstart"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10516"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10519"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <symbol
-       id="Process">
-      <title
-         id="title2740">Process</title>
-      <desc
-         id="desc2742">Any processing function.</desc>
-      <rect
-         x="3.96875"
-         y="9.260417"
-         width="31.75"
-         height="21.166666"
-         style="stroke-width:2"
-         id="rect2744" />
-    </symbol>
-    <symbol
-       id="Decision">
-      <title
-         id="title2782">Decision</title>
-      <desc
-         id="desc2784">A decision or switching type operation.</desc>
-      <path
-         inkscape:connector-curvature="0"
-         d="m 3.96875,19.84375 15.875,-10.5833333 15.875,10.5833333 -15.875,10.583333 z"
-         style="stroke-width:2"
-         id="path2786" />
-    </symbol>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4142136"
-     inkscape:cx="350.72493"
-     inkscape:cy="591.29489"
-     inkscape:document-units="mm"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:snap-global="true"
-     inkscape:snap-bbox="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-others="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:snap-midpoints="false"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:snap-bbox-midpoints="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1029"
-     inkscape:window-x="1272"
-     inkscape:window-y="-8"
-     inkscape:window-maximized="1"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0">
-    <inkscape:grid
-       type="xygrid"
-       id="grid9104"
-       originx="-23.598344"
-       originy="-16.404155" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata8773">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="レイヤー 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-23.598344,-8.4718652)">
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,32.416658 v 3.96875"
-       id="path9639-1"
-       inkscape:connector-curvature="0" />
-    <g
-       id="g9322"
-       transform="translate(-25.135403,-130.96875)">
-      <rect
-         transform="matrix(0.94594599,0.32432418,-0.94594599,0.32432418,0,0)"
-         ry="3.6888673e-006"
-         rx="3.6888673e-006"
-         y="189.47736"
-         x="277.58359"
-         height="18.355465"
-         width="18.355474"
-         id="rect9184-6-3-4"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.33777279;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9188"
-         y="158.61438"
-         x="70.845284"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1em;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           id="tspan9190"
-           style="line-height:1em;fill:#d40055;fill-opacity:1;stroke-width:0.26458332"
-           y="158.61438"
-           x="70.845284"
-           sodipodi:role="line">immediateStart</tspan></text>
-    </g>
-    <g
-       id="g9353"
-       transform="translate(-15.875002,-80.697917)">
-      <rect
-         transform="matrix(0.94594599,0.32432418,-0.94594599,0.32432418,0,0)"
-         ry="3.6888673e-006"
-         rx="3.6888673e-006"
-         y="159.70068"
-         x="238.01735"
-         height="18.355465"
-         width="18.355474"
-         id="rect9184-6-3-8"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.33777273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9188-0"
-         y="136.09689"
-         x="64.030464"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1em;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           id="tspan9190-3"
-           style="line-height:1em;stroke-width:0.26458332"
-           y="136.09689"
-           x="64.030464"
-           sodipodi:role="line">CONNECTED</tspan></text>
-    </g>
-    <g
-       id="g10108"
-       transform="translate(-42.333331,-3.1749998)">
-      <rect
-         transform="matrix(0.945946,0.32432418,-0.945946,0.32432418,0,0)"
-         ry="3.6888673e-006"
-         rx="3.6888673e-006"
-         y="50.674988"
-         x="156.96188"
-         height="18.355465"
-         width="18.355474"
-         id="rect9184-6-3"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.33777273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9188-0-3"
-         y="74.424942"
-         x="88.69355"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1em;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           id="tspan9190-3-6"
-           style="line-height:1em;fill:#d40055;fill-opacity:1;stroke-width:0.26458332"
-           y="74.424942"
-           x="88.69355"
-           sodipodi:role="line">autoReconnect</tspan></text>
-    </g>
-    <g
-       id="g9385"
-       transform="translate(-1.3229192,-84.66667)">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="164.70833"
-         x="42.333336"
-         height="7.9375019"
-         width="34.395828"
-         id="rect9134-4-7"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-7-3"
-         y="169.55531"
-         x="44.568085"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="169.55531"
-           x="44.568085"
-           id="tspan9136-4-0"
-           sodipodi:role="line">WiFi.scanNetworks</tspan></text>
-    </g>
-    <g
-       id="g1026">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="91.947906"
-         x="41.010418"
-         height="7.9375019"
-         width="34.395828"
-         id="rect9134-4-7-8"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-7-3-4"
-         y="95.511253"
-         x="42.913143"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1em;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="line-height:1em;stroke-width:0.26458332"
-           y="95.511253"
-           x="42.913143"
-           id="tspan9136-4-0-7"
-           sodipodi:role="line">Load BSSID</tspan><tspan
-           id="tspan9414"
-           style="line-height:1em;stroke-width:0.26458332"
-           y="98.686256"
-           x="42.913143"
-           sodipodi:role="line">matched credential</tspan></text>
-    </g>
-    <g
-       id="g1014">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="103.85416"
-         x="31.75"
-         height="7.9375019"
-         width="52.916668"
-         id="rect9134-4-7-5"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-7-3-3"
-         y="108.70114"
-         x="34.534584"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="108.70114"
-           x="34.534584"
-           id="tspan9136-4-0-4"
-           sodipodi:role="line">WiFi.begin(SSID,PASSWORD)</tspan></text>
-    </g>
-    <g
-       id="g9353-2"
-       transform="translate(-15.875002,-13.229167)">
-      <rect
-         transform="matrix(0.94594599,0.32432418,-0.94594599,0.32432418,0,0)"
-         ry="3.6888673e-006"
-         rx="3.6888673e-006"
-         y="159.70068"
-         x="238.01735"
-         height="18.355465"
-         width="18.355474"
-         id="rect9184-6-3-8-8"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.33777273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9188-0-2"
-         y="136.09689"
-         x="64.030464"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1em;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           id="tspan9190-3-8"
-           style="line-height:1em;stroke-width:0.26458332"
-           y="136.09689"
-           x="64.030464"
-           sodipodi:role="line">CONNECTED</tspan></text>
-    </g>
-    <g
-       id="g9622"
-       transform="translate(-68.285876,18.615978)">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="117.08333"
-         x="116.41666"
-         height="7.9375019"
-         width="19.843748"
-         id="rect9134-4-7-4-0"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-5"
-         y="122.16544"
-         x="120.13427"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="122.16544"
-           x="120.13427"
-           id="tspan9136-2"
-           sodipodi:role="line">AP_STA</tspan></text>
-    </g>
-    <g
-       id="g9633"
-       transform="translate(-33.072919,2.6458338)">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="5.958323"
-         x="82.020836"
-         height="7.9375019"
-         width="19.843748"
-         id="rect9134-4-7-4-0-9"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138"
-         y="11.081267"
-         x="88.708801"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="11.081267"
-           x="88.708801"
-           id="tspan9136"
-           sodipodi:role="line">STA</tspan></text>
-    </g>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208334,16.669815 v 3.840593"
-       id="path9639"
-       inkscape:connector-curvature="0" />
-    <g
-       id="g9714"
-       transform="translate(-78.07551,4.0638529)">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="143.5417"
-         x="119.06255"
-         height="7.9375019"
-         width="34.395828"
-         id="rect9134-4-7-4-6"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-7-3-9-0"
-         y="148.7003"
-         x="127.28582"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="148.7003"
-           x="127.28582"
-           id="tspan9136-4-0-9-8"
-           sodipodi:role="line">WiFi.softAP</tspan></text>
-    </g>
-    <g
-       id="g9746"
-       transform="translate(-19.843798,-39.555244)">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="175.2917"
-         x="108.47922"
-         height="7.9375019"
-         width="34.395828"
-         id="rect9134-4-7-4-6-0"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-7-3-9-0-6"
-         y="180.44255"
-         x="110.44085"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="180.44255"
-           x="110.44085"
-           id="tspan9136-4-0-9-8-9"
-           sodipodi:role="line">START Web Server</tspan></text>
-    </g>
-    <g
-       id="g9778"
-       transform="translate(-43.656245,-1.1906199)">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="172.64583"
-         x="84.666664"
-         height="7.9375019"
-         width="34.395828"
-         id="rect9134-4-7-4-6-0-1"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-7-3-9-0-6-5"
-         y="177.79668"
-         x="86.628296"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="177.79668"
-           x="86.628296"
-           id="tspan9136-4-0-9-8-9-7"
-           sodipodi:role="line">START DNS Server</tspan></text>
-    </g>
-    <g
-       id="g9746-3"
-       transform="translate(-67.492182,-15.779896)">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="175.2917"
-         x="108.47922"
-         height="7.9375019"
-         width="34.395828"
-         id="rect9134-4-7-4-6-0-5"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-7-3-9-0-6-3"
-         y="180.44255"
-         x="110.44085"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="180.44255"
-           x="110.44085"
-           id="tspan9136-4-0-9-8-9-2"
-           sodipodi:role="line">START Web Server</tspan></text>
-    </g>
-    <g
-       id="g9834"
-       transform="translate(-79.374976,-2.3812481)">
-      <rect
-         transform="matrix(0.94594599,0.32432418,-0.94594599,0.32432418,0,0)"
-         ry="3.6888673e-006"
-         rx="3.6888673e-006"
-         y="219.95329"
-         x="365.3985"
-         height="18.355465"
-         width="18.355474"
-         id="rect9184-6-3-8-8-4"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.33777273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9188-0-2-2"
-         y="196.68362"
-         x="126.32043"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1em;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           id="tspan9190-3-8-4"
-           style="line-height:1em;fill:#d40055;fill-opacity:1;stroke-width:0.26458332"
-           y="196.68362"
-           x="126.32043"
-           sodipodi:role="line">portalTimeout</tspan></text>
-    </g>
-    <g
-       id="g1006">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="203.33749"
-         x="39.687492"
-         height="10.583351"
-         width="37.041668"
-         id="rect9134-4-7-4-6-9"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-7-3-9-0-0"
-         y="207.53156"
-         x="41.894592"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25em;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="line-height:1.25em;stroke-width:0.26458332"
-           y="207.53156"
-           x="41.894592"
-           id="tspan9136-4-0-9-8-4"
-           sodipodi:role="line">handleClient</tspan><tspan
-           id="tspan9863"
-           style="line-height:1.25em;stroke-width:0.26458332"
-           y="211.50031"
-           x="41.894592"
-           sodipodi:role="line">processNextRequest</tspan></text>
-      <path
-         inkscape:connector-curvature="0"
-         id="path9865"
-         d="m 41.0104,203.33749 v 10.58334"
-         style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;opacity:0.66" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path9865-8"
-         d="m 75.40623,203.3375 v 10.58334"
-         style="fill:none;stroke:#000000;stroke-width:0.26458333;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;opacity:0.66" />
-    </g>
-    <g
-       id="g9353-2-8"
-       transform="translate(-15.875002,88.900003)">
-      <rect
-         transform="matrix(0.94594599,0.32432418,-0.94594599,0.32432418,0,0)"
-         ry="3.6888673e-006"
-         rx="3.6888673e-006"
-         y="159.70068"
-         x="238.01735"
-         height="18.355465"
-         width="18.355474"
-         id="rect9184-6-3-8-8-2"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.33777273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9188-0-2-8"
-         y="136.09689"
-         x="64.030464"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1em;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           id="tspan9190-3-8-5"
-           style="line-height:1em;stroke-width:0.26458332"
-           y="136.09689"
-           x="64.030464"
-           sodipodi:role="line">CONNECTED</tspan></text>
-    </g>
-    <g
-       id="g11043">
-      <rect
-         transform="matrix(0.94594599,0.32432418,-0.94594599,0.32432418,0,0)"
-         ry="3.6888673e-006"
-         rx="3.6888673e-006"
-         y="335.73843"
-         x="397.27298"
-         height="18.355465"
-         width="18.355474"
-         id="rect9184-6-3-8-8-2-6"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.33777273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9188-0-2-8-9"
-         y="244.86855"
-         x="48.93449"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1em;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           id="tspan9190-3-8-5-7"
-           style="line-height:1em;fill:#d40055;fill-opacity:1;stroke-width:0.26458332"
-           y="244.86855"
-           x="48.93449"
-           sodipodi:role="line">retainPortal</tspan></text>
-    </g>
-    <g
-       id="g9980"
-       transform="translate(-9.2604205,-8.8635315)">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="262.60416"
-         x="50.27084"
-         height="7.9375019"
-         width="34.395828"
-         id="rect9134-4-7-4-6-0-1-2"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-7-3-9-0-6-5-3"
-         y="267.755"
-         x="53.199856"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="267.755"
-           x="53.199856"
-           id="tspan9136-4-0-9-8-9-7-5"
-           sodipodi:role="line">STOP DNS Server</tspan></text>
-    </g>
-    <g
-       id="g10054"
-       transform="translate(-1.3229224,65.748961)">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="204.13124"
-         x="41.010422"
-         height="10.583351"
-         width="37.041668"
-         id="rect9134-4-7-4-6-9-9"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-7-3-9-0-6-0"
-         y="208.92632"
-         x="43.674084"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1em;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="line-height:1em;stroke-width:0.26458332"
-           y="208.92632"
-           x="43.674084"
-           id="tspan9136-4-0-9-8-9-71"
-           sodipodi:role="line">EXIT</tspan><tspan
-           id="tspan10009"
-           style="line-height:1em;stroke-width:0.26458332"
-           y="212.10132"
-           x="43.674084"
-           sodipodi:role="line">AutoConnect::begin</tspan></text>
-    </g>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,44.322908 v 3.96875"
-       id="path9639-1-3"
-       inkscape:connector-curvature="0" />
-    <g
-       id="g9659"
-       transform="translate(-34.395836,1.3229159)">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="35.062492"
-         x="75.406258"
-         height="7.9375019"
-         width="34.395828"
-         id="rect9134-4-7-4"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-7-3-9"
-         y="39.909485"
-         x="82.932663"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="39.909485"
-           x="82.932663"
-           id="tspan9136-4-0-9"
-           sodipodi:role="line">WiFi.begin()</tspan></text>
-    </g>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 105.83333,143.8064 V 265.60094 H 92.604167"
-       id="path9639-1-3-9"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458329px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 75.563113,54.244669 30.107867,-0.06083 0.0306,81.420331"
-       id="path10088"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,60.197908 v 3.96875"
-       id="path9639-1-3-1"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,76.072908 v 3.96875"
-       id="path9639-1-3-1-7"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,87.979158 v 3.96875"
-       id="path9639-1-3-1-7-9"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,99.885408 v 3.968752"
-       id="path9639-1-3-1-7-9-4"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,111.79166 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,127.66666 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.184947,143.63681 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.184947,155.54306 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3-9"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,131.63541 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-5"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 40.845696,26.549382 -17.114957,-0.09412 0.08176,105.180148 h 34.395832"
-       id="path10088-9"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker10923)"
-       d="m 24.291915,70.119854 h 16.45392"
-       id="path10088-92"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,167.48646 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3-9-5"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,179.52499 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3-9-5-1"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,199.36877 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3-9-5-1-3"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,213.92085 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3-9-5-1-3-9"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow2Mstart)"
-       d="m 57.679167,183.22916 -33.866667,0.13255 0.0073,40.48128 h 16.92604"
-       id="path10088-92-6"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,183.49374 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3-9-5-1-9"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,229.79582 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3-9-5-1-9-8"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,233.76457 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3-9-5-1-5"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker10931)"
-       d="m 58.7375,234.02852 33.866674,-0.13255 -0.0073,-40.48128 H 75.670833"
-       id="path10088-92-6-8"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,261.81041 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3-9-5-1-9-8-5"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,249.63957 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3-9-5-1-5-8"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,265.77916 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3-9-5-1-9-8-5-4"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker10937)"
-       d="m 58.7375,265.6464 33.734352,-0.0718 -0.007,-21.90474 H 75.538509"
-       id="path10088-92-6-8-3"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="34.062004"
-       y="25.63336"
-       id="text10760"><tspan
-         sodipodi:role="line"
-         id="tspan10758"
-         x="34.062004"
-         y="25.63336"
-         style="stroke-width:0.26458332">YES</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="60.544109"
-       y="35.014442"
-       id="text10760-5"><tspan
-         sodipodi:role="line"
-         id="tspan10758-9"
-         x="60.544109"
-         y="35.014442"
-         style="stroke-width:0.26458332">NO</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="35.860859"
-       y="69.289612"
-       id="text10760-5-4"><tspan
-         sodipodi:role="line"
-         id="tspan10758-9-7"
-         x="35.860859"
-         y="69.289612"
-         style="stroke-width:0.26458332">NO</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="76.719864"
-       y="53.414608"
-       id="text10760-1"><tspan
-         sodipodi:role="line"
-         id="tspan10758-2"
-         x="76.719864"
-         y="53.414608"
-         style="stroke-width:0.26458332">YES</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="60.544109"
-       y="62.554363"
-       id="text10760-5-5"><tspan
-         sodipodi:role="line"
-         id="tspan10758-9-6"
-         x="60.544109"
-         y="62.554363"
-         style="stroke-width:0.26458332">NO</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="60.844864"
-       y="78.423164"
-       id="text10760-1-0"><tspan
-         sodipodi:role="line"
-         id="tspan10758-2-1"
-         x="60.844864"
-         y="78.423164"
-         style="stroke-width:0.26458332">YES</tspan></text>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 75.257782,121.71354 30.310608,0.13228"
-       id="path10088-92-3"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="76.719864"
-       y="120.88336"
-       id="text10760-1-3"><tspan
-         sodipodi:role="line"
-         id="tspan10758-2-13"
-         x="76.719864"
-         y="120.88336"
-         style="stroke-width:0.26458332">YES</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="60.544109"
-       y="130.02312"
-       id="text10760-5-5-6"><tspan
-         sodipodi:role="line"
-         id="tspan10758-9-6-0"
-         x="60.544109"
-         y="130.02312"
-         style="stroke-width:0.26458332">NO</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="60.544109"
-       y="201.46062"
-       id="text10760-5-5-6-4"><tspan
-         sodipodi:role="line"
-         id="tspan10758-9-6-0-0"
-         x="60.544109"
-         y="201.46062"
-         style="stroke-width:0.26458332">NO</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="76.719864"
-       y="192.32086"
-       id="text10760-1-3-5"><tspan
-         sodipodi:role="line"
-         id="tspan10758-2-13-1"
-         x="76.719864"
-         y="192.32086"
-         style="stroke-width:0.26458332">YES</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="60.844864"
-       y="231.8815"
-       id="text10760-1-3-7"><tspan
-         sodipodi:role="line"
-         id="tspan10758-2-13-5"
-         x="60.844864"
-         y="231.8815"
-         style="stroke-width:0.26458332">YES</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="35.860859"
-       y="222.74794"
-       id="text10760-5-5-6-4-8"><tspan
-         sodipodi:role="line"
-         id="tspan10758-9-6-0-0-2"
-         x="35.860859"
-         y="222.74794"
-         style="stroke-width:0.26458332">NO</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="76.719864"
-       y="242.46483"
-       id="text10760-1-3-7-8"><tspan
-         sodipodi:role="line"
-         id="tspan10758-2-13-5-2"
-         x="76.719864"
-         y="242.46483"
-         style="stroke-width:0.26458332">YES</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="60.544109"
-       y="251.73145"
-       id="text10760-5-5-6-4-8-0"><tspan
-         sodipodi:role="line"
-         id="tspan10758-9-6-0-0-2-9"
-         x="60.544109"
-         y="251.73145"
-         style="stroke-width:0.26458332">NO</tspan></text>
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/docs/images/regexp.png b/lib/AutoConnect-master/docs/images/regexp.png
deleted file mode 100644
index 2ee245b228711ec2bc5241118ddc9950e7cfb0b2..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/regexp.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/reset.png b/lib/AutoConnect-master/docs/images/reset.png
deleted file mode 100644
index 7898c68c9e1cbfff991731655e60dca4a0e19bdd..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/reset.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/reset_r.png b/lib/AutoConnect-master/docs/images/reset_r.png
deleted file mode 100644
index 545b67ef92f007f1e90efcdf22cd738eb6cd6937..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/reset_r.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/resetting.png b/lib/AutoConnect-master/docs/images/resetting.png
deleted file mode 100644
index c8a230c811db2bd8129a59beef45cae0c24b8624..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/resetting.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/serial.png b/lib/AutoConnect-master/docs/images/serial.png
deleted file mode 100644
index 0cb54a3b873cd33268b0ffaae3e8e4805f2e2527..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/serial.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/stat.png b/lib/AutoConnect-master/docs/images/stat.png
deleted file mode 100644
index f722b4efa0e5b8799737e8530a5039037267340e..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/stat.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/statistics.png b/lib/AutoConnect-master/docs/images/statistics.png
deleted file mode 100644
index 14fcc6afbb97b3b711849ac60ac1fd75471afa3f..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/statistics.png and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/images/upload.gif b/lib/AutoConnect-master/docs/images/upload.gif
deleted file mode 100644
index 0ebbab3e3bf7a5965101466ee54fb782e87fdf5e..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/images/upload.gif and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/index.html b/lib/AutoConnect-master/docs/index.html
deleted file mode 100644
index dea95ec4cc4bb731153ee697d122694480a1cec0..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/index.html
+++ /dev/null
@@ -1,109 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/index.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#autoconnect-for-esp8266esp32" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">Overview</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">Overview</label><a href="index.html" title="Overview" class="md-nav__link md-nav__link--active">Overview</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#overview" title="Overview" class="md-nav__link">Overview</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#no-need-pre-coded-ssid-password" title=" No need pre-coded SSID &amp; password" class="md-nav__link"> No need pre-coded SSID &amp; password</a></li><li class="md-nav__item"><a href="#simple-usage" title=" Simple usage" class="md-nav__link"> Simple usage</a></li><li class="md-nav__item"><a href="#store-the-established-connection" title=" Store the established connection" class="md-nav__link"> Store the established connection</a></li><li class="md-nav__item"><a href="#easy-to-embed-in" title=" Easy to embed in" class="md-nav__link"> Easy to embed in</a></li><li class="md-nav__item"><a href="#lives-with-your-sketches" title=" Lives with your sketches" class="md-nav__link"> Lives with your sketches</a></li><li class="md-nav__item"><a href="#easy-to-add-the-custom-web-pages-enhanced-wv097" title=" Easy to add the custom Web pages ENHANCED w/v0.9.7" class="md-nav__link"> Easy to add the custom Web pages ENHANCED w/v0.9.7</a></li></ul></nav></li><li class="md-nav__item"><a href="#installation" title="Installation" class="md-nav__link">Installation</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#requirements" title="Requirements" class="md-nav__link">Requirements</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#supported-hardware" title="Supported hardware" class="md-nav__link">Supported hardware</a></li><li class="md-nav__item"><a href="#required-libraries" title="Required libraries" class="md-nav__link">Required libraries</a></li></ul></nav></li><li class="md-nav__item"><a href="#install-the-autoconnect" title="Install the AutoConnect" class="md-nav__link">Install the AutoConnect</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7"><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#overview" title="Overview" class="md-nav__link">Overview</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#no-need-pre-coded-ssid-password" title=" No need pre-coded SSID &amp; password" class="md-nav__link"> No need pre-coded SSID &amp; password</a></li><li class="md-nav__item"><a href="#simple-usage" title=" Simple usage" class="md-nav__link"> Simple usage</a></li><li class="md-nav__item"><a href="#store-the-established-connection" title=" Store the established connection" class="md-nav__link"> Store the established connection</a></li><li class="md-nav__item"><a href="#easy-to-embed-in" title=" Easy to embed in" class="md-nav__link"> Easy to embed in</a></li><li class="md-nav__item"><a href="#lives-with-your-sketches" title=" Lives with your sketches" class="md-nav__link"> Lives with your sketches</a></li><li class="md-nav__item"><a href="#easy-to-add-the-custom-web-pages-enhanced-wv097" title=" Easy to add the custom Web pages ENHANCED w/v0.9.7" class="md-nav__link"> Easy to add the custom Web pages ENHANCED w/v0.9.7</a></li></ul></nav></li><li class="md-nav__item"><a href="#installation" title="Installation" class="md-nav__link">Installation</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#requirements" title="Requirements" class="md-nav__link">Requirements</a><nav class="md-nav"><ul class="md-nav__list"><li class="md-nav__item"><a href="#supported-hardware" title="Supported hardware" class="md-nav__link">Supported hardware</a></li><li class="md-nav__item"><a href="#required-libraries" title="Required libraries" class="md-nav__link">Required libraries</a></li></ul></nav></li><li class="md-nav__item"><a href="#install-the-autoconnect" title="Install the AutoConnect" class="md-nav__link">Install the AutoConnect</a></li></ul></nav></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1 id="autoconnect-for-esp8266esp32">AutoConnect <small>for ESP8266/ESP32</small><a class="headerlink" href="#autoconnect-for-esp8266esp32" title="Permanent link">&para;</a></h1>
-<p>An Arduino library for ESP8266/ESP32 WLAN configuration at run time with web interface.</p>
-<h2 id="overview">Overview<a class="headerlink" href="#overview" title="Permanent link">&para;</a></h2>
-<p>To the dynamic configuration for joining to WLAN with SSID and PSK accordingly. It an Arduino library united with <em>ESP8266WebServer</em> class for ESP8266 or <em>WebServer</em> class for ESP32.
-Easy implementing the Web interface constituting the WLAN for ESP8266/ESP32 WiFi connection. With this library to make a sketch easily which connects from ESP8266/ESP32 to the access point at runtime by the web interface without hard-coded SSID and password.</p>
-<p><img style="display:inline-block;width:460px;margin-right:30px;" src="images/ov.png" /><span style="display:inline-block;width:182px;height:322px;border:solid 1px lightgrey;"><img data-gifffer="images/ov.gif" data-gifffer-width="180" style="width:180px;" /></span></p>
-<h3 id="no-need-pre-coded-ssid-password"><i class="fa fa-arrow-circle-right" aria-hidden="true"></i> No need pre-coded SSID &amp; password<a class="headerlink" href="#no-need-pre-coded-ssid-password" title="Permanent link">&para;</a></h3>
-<p><span class="lead">It is no needed hard-coding in advance the SSID and Password into the sketch to connect between ESP8266/ESP32 and WLAN. You can input SSID &amp; Password from a smartphone via the web interface at runtime.</span></p>
-<h3 id="simple-usage"><i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Simple usage<a class="headerlink" href="#simple-usage" title="Permanent link">&para;</a></h3>
-<p><span class="lead">AutoConnect control screen will be displayed automatically for establishing new connections. It aids by the <a href="https://en.wikipedia.org/wiki/Captive_portal">captive portal</a> when vested the connection cannot be detected.<br>By using the <a href="menu.html">AutoConnect menu</a>, to manage the connections convenient.</span></p>
-<h3 id="store-the-established-connection"><i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Store the established connection<a class="headerlink" href="#store-the-established-connection" title="Permanent link">&para;</a></h3>
-<p><span class="lead">The connection authentication data as credentials are saved automatically in EEPROM of ESP8266/ESP32 and You can select the past SSID from the <a href="menu.html">AutoConnect menu</a>.</span></p>
-<h3 id="easy-to-embed-in"><i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Easy to embed in<a class="headerlink" href="#easy-to-embed-in" title="Permanent link">&para;</a></h3>
-<p><span class="lead">AutoConnect can be placed easily in your sketch. It's "<strong>begin</strong>" and "<strong>handleClient</strong>" only.</span></p>
-<h3 id="lives-with-your-sketches"><i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Lives with your sketches<a class="headerlink" href="#lives-with-your-sketches" title="Permanent link">&para;</a></h3>
-<p><span class="lead">The sketches which provide the web page using ESP8266WebServer there is, AutoConnect will not disturb it. AutoConnect can use an already instantiated ESP8266WebServer object, or itself can assign it. This effect also applies to ESP32. The corresponding class for ESP32 will be the WebServer.</span></p>
-<h3 id="easy-to-add-the-custom-web-pages-enhanced-wv097"><i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Easy to add the <a href="acintro.html">custom Web pages</a> <sup><sub>ENHANCED w/v0.9.7</sub></sup><a class="headerlink" href="#easy-to-add-the-custom-web-pages-enhanced-wv097" title="Permanent link">&para;</a></h3>
-<p><span class="lead">You can easily add your owned web pages that can consist of representative HTML elements and invoke them from the menu. Further it possible importing the custom Web pages declarations described with JSON which stored in PROGMEM, SPIFFS, or SD.</span></p>
-<div style="display:block;height:425px;">
-<img style="float:left;width:380px;" src="images/aux_json.png">
-<img style="float:left;margin-top:200px;margin-left:10px;margin-right:10px;width:32px;" src="images/arrow_right.png">
-<span style="float:left;width:242px;height:425px;border:1px solid lightgrey;"><img data-gifffer="images/aux_ov.gif" data-gifffer-width="240" data-gifffer-height="423" /></span>
-</div>
-
-<h2 id="installation">Installation<a class="headerlink" href="#installation" title="Permanent link">&para;</a></h2>
-<h3 id="requirements">Requirements<a class="headerlink" href="#requirements" title="Permanent link">&para;</a></h3>
-<h4 id="supported-hardware">Supported hardware<a class="headerlink" href="#supported-hardware" title="Permanent link">&para;</a></h4>
-<ul class="task-list">
-<li class="task-list-item"><input type="checkbox" disabled checked/> Generic ESP8266 modules (applying the ESP8266 Community's Arduino core)</li>
-<li class="task-list-item"><input type="checkbox" disabled checked/> Adafruit HUZZAH ESP8266 (ESP-12)</li>
-<li class="task-list-item"><input type="checkbox" disabled checked/> ESP-WROOM-02</li>
-<li class="task-list-item"><input type="checkbox" disabled checked/> Heltec WiFi Kit 8</li>
-<li class="task-list-item"><input type="checkbox" disabled checked/> NodeMCU 0.9 (ESP-12) / NodeMCU 1.0 (ESP-12E)</li>
-<li class="task-list-item"><input type="checkbox" disabled checked/> Olimex MOD-WIFI-ESP8266</li>
-<li class="task-list-item"><input type="checkbox" disabled checked/> SparkFun Thing</li>
-<li class="task-list-item"><input type="checkbox" disabled checked/> SweetPea ESP-210</li>
-<li class="task-list-item"><input type="checkbox" disabled checked/> ESP32Dev Board (applying the Espressif's arduino-esp32 core)</li>
-<li class="task-list-item"><input type="checkbox" disabled checked/> SparkFun ESP32 Thing</li>
-<li class="task-list-item"><input type="checkbox" disabled checked/> WEMOS LOLIN D32</li>
-<li class="task-list-item"><input type="checkbox" disabled checked/> Ai-Thinker NodeMCU-32S</li>
-<li class="task-list-item"><input type="checkbox" disabled checked/> Heltec WiFi Kit 32</li>
-<li class="task-list-item"><input type="checkbox" disabled checked/> M5Stack</li>
-<li class="task-list-item"><input type="checkbox" disabled checked/> And other ESP8266/ESP32 modules supported by the Additional Board Manager URLs of the Arduino-IDE.</li>
-</ul>
-<div class="admonition info">
-<p class="admonition-title">About flash size on the module</p>
-<p>The AutoConnect sketch size is relatively large. Large flash capacity is necessary. 512Kbyte (4Mbits) flash inclusion module such as ESP-01 is not recommended.</p>
-</div>
-<h4 id="required-libraries">Required libraries<a class="headerlink" href="#required-libraries" title="Permanent link">&para;</a></h4>
-<p>AutoConnect requires the following environment and libraries.</p>
-<p><i class="fa fa-download"></i> <strong>Arduino IDE</strong></p>
-<p>The current upstream at the 1.8 level or later is needed. Please install from the <a href="https://www.arduino.cc/en/Main/Software">official Arduino IDE download page</a>. This step is not required if you already have a modern version.</p>
-<p><i class="fa fa-download"></i> <strong>ESP8266 Arduino core</strong></p>
-<p>AutoConnect targets sketches made on the assumption of <a href="https://github.com/esp8266/Arduino">ESP8266 Community's Arduino core</a>. Stable 2.4.0 or higher required and the <a href="https://github.com/esp8266/Arduino/releases/latest">latest release</a> is recommended.<br />
-Install third-party platform using the <em>Boards Manager</em> of Arduino IDE. Package URL is <a href="http://arduino.esp8266.com/stable/package_esp8266com_index.json">http://arduino.esp8266.com/stable/package_esp8266com_index.json</a></p>
-<p><i class="fa fa-download"></i> <strong>ESP32 Arduino core</strong></p>
-<p>Also, to apply AutoConnect to ESP32, the <a href="https://github.com/espressif/arduino-esp32">arduino-esp32 core</a> provided by Espressif is needed. Stable 1.0.1 or required and the <a href="https://github.com/espressif/arduino-esp32/releases/latest">latest release</a> is recommended.<br />
-Install third-party platform using the <em>Boards Manager</em> of Arduino IDE. You can add multiple URLs into <em>Additional Board Manager URLs</em> field, separating them with commas. Package URL is <a href="https://dl.espressif.com/dl/package_esp32_index.json">https://dl.espressif.com/dl/package_esp32_index.json</a> for ESP32.</p>
-<p><i class="fa fa-download"></i> <strong>Additional library (Required)</strong></p>
-<p>The <a href="https://github.com/Hieromon/PageBuilder">PageBuilder</a> library to build HTML for ESP8266WebServer is needed.<br />
-To install the PageBuilder library into your Arduino IDE, you can use the <em>Library Manager</em>. Select the board of ESP8266 series in the Arduino IDE, open the library manager and search keyword '<strong>PageBuilder</strong>' with the topic '<strong>Communication</strong>', then you can see the <em>PageBuilder</em>. The latest version is required <strong>1.3.3</strong> <strong>later</strong>.<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup></p>
-<p><img src="images/lm.png" width="640"/></p>
-<p><i class="fa fa-download"></i> <strong>Additional library (Optional)</strong></p>
-<p>By adding the <a href="https://github.com/bblanchon/ArduinoJson">ArduinoJson</a> library, AutoConnect will be able to handle the <a href="acintro.html"><strong>custom Web pages</strong></a> described with JSON. Since AutoConnect v0.9.7 you can insert user-owned web pages that can consist of representative HTML elements as styled TEXT, INPUT, BUTTON, CHECKBOX, SELECT, SUBMIT and invoke them from the AutoConnect menu. These HTML elements can be added by sketches using the AutoConnect API. Further it possible importing the custom Web pages declarations described with JSON which stored in PROGMEM, SPIFFS, or SD. <a href="https://arduinojson.org/">ArduinoJson</a> is required to use this feature.<sup id="fnref:2"><a class="footnote-ref" href="#fn:2" rel="footnote">2</a></sup> AutoConnect can work with ArduinoJson both <a href="https://arduinojson.org/v5/doc/">version 5</a> and <a href="https://arduinojson.org/v6/doc/">version 6</a>.</p>
-<h3 id="install-the-autoconnect">Install the AutoConnect<a class="headerlink" href="#install-the-autoconnect" title="Permanent link">&para;</a></h3>
-<p>Clone or download from the <a href="https://github.com/Hieromon/AutoConnect">AutoConnect GitHub repository</a>.</p>
-<p><img src="images/gitrepo.png" width="640"/></p>
-<p>When you select Download, you can import it to Arduino IDE immediately. After downloaded, the AutoConnect-master.zip file will be saved in your download folder. Then in the Arduino IDE, navigate to <em>"Sketch &gt; Include Library"</em>. At the top of the drop down list, select the option to <em>"Add .ZIP Library..."</em>. Details for <a href="https://www.arduino.cc/en/Guide/Libraries#toc4">Arduino official page</a>.</p>
-<p><img src="images/ins_lib.png" /></p>
-<div class="admonition info">
-<p class="admonition-title">Supported by Library manager.</p>
-<p>AutoConnect was added to the Arduino IDE library manager. It can be used with the PlatformIO library also.</p>
-</div>
-<script>
-  window.onload = function() {
-    Gifffer();
-  };
-</script>
-
-<div class="footnote">
-<hr />
-<ol>
-<li id="fn:1">
-<p>Since AutoConnect v0.9.8, PageBuilder v1.3.3 later is required.&#160;<a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p>
-</li>
-<li id="fn:2">
-<p>Using the AutoConnect API natively allows you to sketch custom Web pages without JSON.&#160;<a class="footnote-backref" href="#fnref:2" rev="footnote" title="Jump back to footnote 2 in the text">&#8617;</a></p>
-</li>
-</ol>
-</div></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="gettingstarted.html" title="Getting started" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>Getting started</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/js/gifffer.min.js b/lib/AutoConnect-master/docs/js/gifffer.min.js
deleted file mode 100644
index c46ec7d28d6a45c3e383ffd3c99670aaa4407109..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/js/gifffer.min.js
+++ /dev/null
@@ -1 +0,0 @@
-(function webpackUniversalModuleDefinition(root,factory){if(typeof exports==="object"&&typeof module==="object")module.exports=factory();else if(typeof define==="function"&&define.amd)define("Gifffer",[],factory);else if(typeof exports==="object")exports["Gifffer"]=factory();else root["Gifffer"]=factory()})(this,function(){if(typeof window==="undefined"||typeof document==="undefined"){return}var d=document;var playSize=60;var Gifffer=function(options){var images,i=0,gifs=[];images=d.querySelectorAll("[data-gifffer]");for(;i<images.length;++i)process(images[i],gifs,options);return gifs};function formatUnit(v){return v+(v.toString().indexOf("%")>0?"":"px")}function parseStyles(styles){var stylesStr="";for(prop in styles)stylesStr+=prop+":"+styles[prop]+";";return stylesStr}function createContainer(w,h,el,altText,opts){var alt;var con=d.createElement("BUTTON");var cls=el.getAttribute("class");var id=el.getAttribute("id");var playButtonStyles=opts&&opts.playButtonStyles?parseStyles(opts.playButtonStyles):["width:"+playSize+"px","height:"+playSize+"px","border-radius:"+playSize/2+"px","background:rgba(0, 0, 0, 0.3)","position:absolute","top:50%","left:50%","margin:-"+playSize/2+"px"].join(";");var playButtonIconStyles=opts&&opts.playButtonIconStyles?parseStyles(opts.playButtonIconStyles):["width: 0","height: 0","border-top: 14px solid transparent","border-bottom: 14px solid transparent","border-left: 14px solid rgba(0, 0, 0, 0.5)","position: absolute","left: 26px","top: 16px"].join(";");cls?con.setAttribute("class",el.getAttribute("class")):null;id?con.setAttribute("id",el.getAttribute("id")):null;con.setAttribute("style","position:relative;cursor:pointer;background:none;border:none;padding:0;");con.setAttribute("aria-hidden","true");var play=d.createElement("DIV");play.setAttribute("class","gifffer-play-button");play.setAttribute("style",playButtonStyles);var trngl=d.createElement("DIV");trngl.setAttribute("style",playButtonIconStyles);play.appendChild(trngl);if(altText){alt=d.createElement("p");alt.setAttribute("class","gifffer-alt");alt.setAttribute("style","border:0;clip:rect(0 0 0 0);height:1px;overflow:hidden;padding:0;position:absolute;width:1px;");alt.innerText=altText+", image"}con.appendChild(play);el.parentNode.replaceChild(con,el);altText?con.parentNode.insertBefore(alt,con.nextSibling):null;return{c:con,p:play}}function calculatePercentageDim(el,w,h,wOrig,hOrig){var parentDimW=el.parentNode.offsetWidth;var parentDimH=el.parentNode.offsetHeight;var ratio=wOrig/hOrig;if(w.toString().indexOf("%")>0){w=parseInt(w.toString().replace("%",""));w=w/100*parentDimW;h=w/ratio}else if(h.toString().indexOf("%")>0){h=parseInt(h.toString().replace("%",""));h=h/100*parentDimW;w=h*ratio}return{w:w,h:h}}function process(el,gifs,options){var url,con,c,w,h,duration,play,gif,playing=false,cc,isC,durationTimeout,dims,altText;url=el.getAttribute("data-gifffer");w=el.getAttribute("data-gifffer-width");h=el.getAttribute("data-gifffer-height");duration=el.getAttribute("data-gifffer-duration");altText=el.getAttribute("data-gifffer-alt");el.style.display="block";c=document.createElement("canvas");isC=!!(c.getContext&&c.getContext("2d"));if(w&&h&&isC)cc=createContainer(w,h,el,altText,options);el.onload=function(){if(!isC)return;w=w||el.width;h=h||el.height;if(!cc)cc=createContainer(w,h,el,altText,options);con=cc.c;play=cc.p;dims=calculatePercentageDim(con,w,h,el.width,el.height);gifs.push(con);con.addEventListener("click",function(){clearTimeout(durationTimeout);if(!playing){playing=true;gif=document.createElement("IMG");gif.setAttribute("style","width:100%;height:100%;");gif.setAttribute("data-uri",Math.floor(Math.random()*1e5)+1);setTimeout(function(){gif.src=url},0);con.removeChild(play);con.removeChild(c);con.appendChild(gif);if(parseInt(duration)>0){durationTimeout=setTimeout(function(){playing=false;con.appendChild(play);con.removeChild(gif);con.appendChild(c);gif=null},duration)}}else{playing=false;con.appendChild(play);con.removeChild(gif);con.appendChild(c);gif=null}});c.width=dims.w;c.height=dims.h;c.getContext("2d").drawImage(el,0,0,dims.w,dims.h);con.appendChild(c);con.setAttribute("style","position:relative;cursor:pointer;width:"+dims.w+"px;height:"+dims.h+"px;background:none;border:none;padding:0;");c.style.width="100%";c.style.height="100%";if(w.toString().indexOf("%")>0&&h.toString().indexOf("%")>0){con.style.width=w;con.style.height=h}else if(w.toString().indexOf("%")>0){con.style.width=w;con.style.height="inherit"}else if(h.toString().indexOf("%")>0){con.style.width="inherit";con.style.height=h}else{con.style.width=dims.w+"px";con.style.height=dims.h+"px"}};el.src=url}return Gifffer});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/license.html b/lib/AutoConnect-master/docs/license.html
deleted file mode 100644
index 2cf904fb9bee97c51c6ac46ee438d6f3d6786b9b..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/license.html
+++ /dev/null
@@ -1,31 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/license.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>License - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">License</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7"><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><a href="license.html" title="License" class="md-nav__link md-nav__link--active">License</a></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>License</h1><p><strong>MIT License</strong></p>
-<p>Copyright &copy; 2018-2019 Hieromon Ikasamo</p>
-<p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:</p>
-<p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</p>
-<p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.</p>
-<p><strong>Acknowledgments</strong></p>
-<p>Each of the following libraries used by AutoConnect is under its license:</p>
-<ul>
-<li>The <strong>Luxbar</strong> is licensed under the MIT License. <a href="https://github.com/balzss/luxbar">https://github.com/balzss/luxbar</a></li>
-<li><strong>ArduinoJson</strong> is licensed under the MIT License. <a href="https://arduinojson.org/">https://arduinojson.org/</a></li>
-</ul></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="changelog.html" title="Change log" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>Change log</span></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/lsbegin.html b/lib/AutoConnect-master/docs/lsbegin.html
deleted file mode 100644
index 4dcddc47091c837e80d9dfaa3ddbe351d330e586..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/lsbegin.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/lsbegin.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>Inside AutoConnect::begin - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#autoconnectbegin-logic-sequence" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">Inside AutoConnect::begin</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7"><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--active md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9" checked><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">Inside AutoConnect::begin</label><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link md-nav__link--active">Inside AutoConnect::begin</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#autoconnectbegin-logic-sequence" title="AutoConnect::begin logic sequence" class="md-nav__link">AutoConnect::begin logic sequence</a></li></ul></nav></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#autoconnectbegin-logic-sequence" title="AutoConnect::begin logic sequence" class="md-nav__link">AutoConnect::begin logic sequence</a></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>Inside AutoConnect::begin</h1><h2 id="autoconnectbegin-logic-sequence">AutoConnect::begin logic sequence<a class="headerlink" href="#autoconnectbegin-logic-sequence" title="Permanent link">&para;</a></h2>
-<p>Several parameters as follows of <a href="apiconfig.html">AutoConnectConfig</a> affect the behavior of <a href="api.html#begin">AutoConnect::begin</a> function. Each parameter affects the behaves in interacted order with the priority and apply to the logic sequence of <a href="api.html#begin">AutoConnect::begin</a>.</p>
-<ul>
-<li><a href="apiconfig.html#immediatestart">immediateStart</a> : The captive portal start immediately, without first WiFi.begin.</li>
-<li><a href="apiconfig.html#autoreconnect">autoReconenct</a> : Attempt re-connect with past SSID by saved credential.</li>
-<li><a href="apiconfig.html#portaltimeout">portalTimeout</a> : Time out limit for the portal.</li>
-<li><a href="apiconfig.html#retainportal">retainPortal</a> : Keep DNS server functioning for the captive portal.</li>
-</ul>
-<p>You can use these parameters in combination with sketch requirements and need to understand correctly the behavior caused by the parameters. The following chart shows the AutoConnect::begin logic sequence including the effect of these parameters.</p>
-<p><img align="center" src="images/process_begin.svg"></p>
-<p>For example, <a href="api.html#begin">AutoConnect::begin</a> will not exits without the <a href="apiconfig.html#portaltimeout"><strong>portalTimeout</strong></a> while the connection not establishes, but WebServer will start to work. A DNS server that detects the probe of the captive portal is also effective. So, your sketch may work seemingly, but it will close with inside a loop of the <a href="api.html#begin">AutoConnect::begin</a> function. Especially when invoking <a href="api.html#begin">AutoConnect::begin</a> in the <strong>setup()</strong>, execution control does not pass to the <strong>loop()</strong>.</p>
-<p>As different scenes, you may use the <a href="apiconfig.html#immediatestart"><strong>immediateStart</strong></a> effectively. Equipped the external switch to activate the captive portal with the ESP module, combined with the <a href="apiconfig.html#portaltimeout"><strong>portalTime</strong></a> and the <a href="apiconfig.html#retainportal"><strong>retainPortal</strong></a> it will become WiFi active connection feature. You can start <a href="api.html#begin">AutoConnect::begin</a> at any point in the <strong>loop()</strong>, which allows your sketch can behave both the offline mode and the online mode.</p>
-<p>The <a href="apiconfig.html#retainportal"><strong>retainPortal</strong></a> option allows the DNS server to continue operation after exiting from <a href="api.html#begin">AutoConnect::begin</a>. AutoConnect traps captive portal detection from the client and redirects it to the AutoConnect menu. That trap will answer all unresolved addresses with SoftAP's IP address. If the URI handler for the source request is undefined, it returns a 302 response with <code>SoftAPIP/_ac</code> to the client. This is the mechanism of AutoConnect's captive portal. Captive portal probes will frequently occur while you are attempting on the client device's WiFi connection Apps and these implementations are varied each OS, so it not realistic to identify all probing URIs. Therefore, while retainPortal is enabled, it is not preferable to executing the sketch under the WiFi connection Apps on the client device. (Probably not work correctly) You need to exit from the WiFi connection Apps once.</p>
-<p>Please consider these kinds of influence when you make sketches.</p>
-<div class="admonition info">
-<p class="admonition-title">The AutoConnect::begin 3<sup>rd</sup> parameter</p>
-<p>Another parameter as the <a href="api.html#begin">3<sup>rd</sup> parameter</a> of AutoConnect::begin related to timeout constrains the connection wait time after WiFi.begin. It is the <strong>CONNECTED</strong> judgment of the above chart that it has an effect.</p>
-</div></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>Custom Web pages w/o JSON</span></div></a><a href="credit.html" title="Saved credentail access" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>Saved credentail access</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/menu.html b/lib/AutoConnect-master/docs/menu.html
deleted file mode 100644
index a09cd36692ff759452528eddea9b6e06e1560b58..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/menu.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/menu.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>AutoConnect menu - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#where-the-from" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">AutoConnect menu</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">AutoConnect menu</label><a href="menu.html" title="AutoConnect menu" class="md-nav__link md-nav__link--active">AutoConnect menu</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#where-the-from" title=" Where the from" class="md-nav__link"> Where the from</a></li><li class="md-nav__item"><a href="#right-on-top" title=" Right on top" class="md-nav__link"> Right on top</a></li><li class="md-nav__item"><a href="#configure-new-ap" title=" Configure new AP" class="md-nav__link"> Configure new AP</a></li><li class="md-nav__item"><a href="#open-ssids" title=" Open SSIDs" class="md-nav__link"> Open SSIDs</a></li><li class="md-nav__item"><a href="#disconnect" title=" Disconnect" class="md-nav__link"> Disconnect</a></li><li class="md-nav__item"><a href="#reset" title=" Reset..." class="md-nav__link"> Reset...</a></li><li class="md-nav__item"><a href="#custom-menu-items" title=" Custom menu items" class="md-nav__link"> Custom menu items</a></li><li class="md-nav__item"><a href="#home" title=" HOME" class="md-nav__link"> HOME</a></li><li class="md-nav__item"><a href="#by-attaching-autoconnect-menu" title=" by attaching AutoConnect menu" class="md-nav__link"> by attaching AutoConnect menu</a></li></ul></nav></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7"><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8"><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#where-the-from" title=" Where the from" class="md-nav__link"> Where the from</a></li><li class="md-nav__item"><a href="#right-on-top" title=" Right on top" class="md-nav__link"> Right on top</a></li><li class="md-nav__item"><a href="#configure-new-ap" title=" Configure new AP" class="md-nav__link"> Configure new AP</a></li><li class="md-nav__item"><a href="#open-ssids" title=" Open SSIDs" class="md-nav__link"> Open SSIDs</a></li><li class="md-nav__item"><a href="#disconnect" title=" Disconnect" class="md-nav__link"> Disconnect</a></li><li class="md-nav__item"><a href="#reset" title=" Reset..." class="md-nav__link"> Reset...</a></li><li class="md-nav__item"><a href="#custom-menu-items" title=" Custom menu items" class="md-nav__link"> Custom menu items</a></li><li class="md-nav__item"><a href="#home" title=" HOME" class="md-nav__link"> HOME</a></li><li class="md-nav__item"><a href="#by-attaching-autoconnect-menu" title=" by attaching AutoConnect menu" class="md-nav__link"> by attaching AutoConnect menu</a></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>AutoConnect menu</h1><div class="admonition info">
-<p class="admonition-title">Luxbar</p>
-<p>The AutoConnect menu is developed using the <a href="https://github.com/balzss/luxbar">LuxBar</a> which is licensed under the MIT License. See the <a href="license.html">License</a>.</p>
-</div>
-<h2 id="where-the-from"><i class="fa fa-external-link"></i> Where the from<a class="headerlink" href="#where-the-from" title="Permanent link">&para;</a></h2>
-<p>The AutoConnect menu appears when you access the <strong>AutoConnect root path</strong>. It is assigned "<strong>/_ac</strong>" located on the <em>local IP address</em> of ESP8266/ESP32 module by default. This location can be changed in the sketch. The following screen will appear at access to <code>http://{localIP}/_ac</code> as the root path. This is the statistics of the current WiFi connection. You can access the menu from the here, to invoke it tap <i class="fa fa-bars"></i> at right on top. (e.g. <code>http://192.168.244.1/_ac</code> for SoftAP mode.)</p>
-<p><img src="images/ac.png" style="border-style:solid;border-width:1px;border-color:lightgrey;width:280px;" /></p>
-<div class="admonition note">
-<p class="admonition-title">What's the local IP?</p>
-<p>A local IP means Local IP at connection established or SoftAP's IP.</p>
-</div>
-<h2 id="right-on-top"><i class="fa fa-bars"></i> Right on top<a class="headerlink" href="#right-on-top" title="Permanent link">&para;</a></h2>
-<p>Currently, AutoConnect supports four menus. Undermost menu as "HOME" returns to the home path of its sketch.</p>
-<ul>
-<li><strong>Configure new AP</strong>: Configure SSID and Password for new access point.</li>
-<li><strong>Open SSIDs</strong>: Opens the past SSID which has been established connection from EEPROM.</li>
-<li><strong>Disconnect</strong>: Disconnects current connection.</li>
-<li><strong>Reset...</strong>: Rest the ESP8266/ESP32 module.</li>
-<li><strong>HOME</strong>: Return to user home page.</li>
-</ul>
-<p><img src="images/menu.png" style="width:280px;" /></p>
-<h2 id="configure-new-ap"><i class="fa fa-bars"></i> Configure new AP<a class="headerlink" href="#configure-new-ap" title="Permanent link">&para;</a></h2>
-<p>Scan all available access point in the vicinity and display it. Strength and security of the detected AP are marked. The <i class="fa fa-lock"></i> is indicated for the SSID that needs a security key. "<strong>Hidden:</strong>" means the number of hidden SSIDs discovered.<br />
-Enter SSID and Passphrase and tap "<strong>apply</strong>" to starts WiFi connection. </p>
-<p><img src="images/newap.png" style="border-style:solid;border-width:1px;border-color:lightgrey;width:280px;" /></p>
-<h2 id="open-ssids"><i class="fa fa-bars"></i> Open SSIDs<a class="headerlink" href="#open-ssids" title="Permanent link">&para;</a></h2>
-<p>Once it was established WiFi connection, its SSID and password will be saved in EEPROM of ESP8266/ESP32 automatically. The <strong>Open SSIDs</strong> menu reads the saved SSID credentials from the EEPROM. The stored credential data are listed by the SSID as shown below. Its label is a clickable button. Tap the SSID button, starts WiFi connection it.</p>
-<p><img src="images/open.png" style="border-style:solid;border-width:1px;border-color:lightgrey;width:280px;" /></p>
-<h2 id="disconnect"><i class="fa fa-bars"></i> Disconnect<a class="headerlink" href="#disconnect" title="Permanent link">&para;</a></h2>
-<p>Disconnect ESP8266/ESP32 from the current connection. It can also reset the ESP8266/ESP32 automatically after disconnection by instructing with using <a href="api.html#autoreset">API</a> in the sketch.</p>
-<p>After tapping "Disconnect", you will not be able to reach the AutoConnect menu. Once disconnected, you will need to set the SSID again for connecting the WLAN. </p>
-<h2 id="reset"><i class="fa fa-bars"></i> Reset...<a class="headerlink" href="#reset" title="Permanent link">&para;</a></h2>
-<p>Reset the ESP8266/ESP32 module, it will start rebooting. After rebooting complete, the ESP8266/ESP32 module begins establishing the previous connection with WIFI_STA mode, and <em>esp8266ap</em> or <em>esp32ap</em> of an access point will disappear from WLAN.</p>
-<p><img src="images/resetting.png" style="width:280px;" /></p>
-<div class="admonition warning">
-<p class="admonition-title">Not every ESP8266 module will be rebooted normally</p>
-<p>The Reset menu is using the <strong>ESP.reset()</strong> function for ESP8266. This is an almost hardware reset. In order to resume the sketch normally, the <a href="https://github.com/esp8266/esp8266-wiki/wiki/Boot-Process#esp-boot-modes">state of GPIO0</a> is important. Since this depends on the circuit implementation for each module, not every module will be rebooted normally. See also <a href="faq.html#hang-up-after-reset">FAQ</a>.</p>
-</div>
-<h2 id="custom-menu-items"><i class="fa fa-bars"></i> Custom menu items<a class="headerlink" href="#custom-menu-items" title="Permanent link">&para;</a></h2>
-<p>The menu items of the custom Web page line up at the below in the AutoConnect menu if the custom Web pages are joined. Details for <a href="acintro.html#custom-web-pages-in-autoconnectmenu">Custom Web pages in AutoConnect menu</a>.</p>
-<h2 id="home"><i class="fa fa-bars"></i> HOME<a class="headerlink" href="#home" title="Permanent link">&para;</a></h2>
-<p>A <strong>HOME</strong> item located at the bottom of the menu list is a link to the home path. The URI as the home path is <code>/</code> by default, and it is defined by <code>AUTOCONNECT_HOMEURI</code> with <strong>AutoConnectDefs.h</strong> file.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">#define AUTOCONNECT_HOMEURI     &quot;/&quot;</span>
-</pre></div>
-
-<p>You can change the HOME path using the AutoConnect API. The <a href="api.html#home"><strong>AutoConnect::home</strong></a> function sets the URI as a link of the HOME item of the AutoConnect menu.</p>
-<h2 id="by-attaching-autoconnect-menu"><i class="fa fa-bars"></i> by attaching AutoConnect menu<a class="headerlink" href="#by-attaching-autoconnect-menu" title="Permanent link">&para;</a></h2>
-<p>The AutoConnect menu can contain HTML pages of your owns sketch as custom items. It works for HTML pages implemented by <strong>ESP8266WebServer::on</strong> handler or <strong>WebServer::on</strong> handler for ESP32. That is, you can make it as menu items to invoke the legacy web page. The below screenshot is the result of adding an example sketch for the ESP8266WebServer library known as <a href="https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer/examples/FSBrowser">FSBrowser</a> to the AutoConnect menu item. It adds Edit and List items with little modification to the legacy sketch code.</p>
-<div style="float:left;width:auto;height:420px;"><img style="width:auto;height:420px;" src="images/fsbmenu.png"></div>
-
-<p><img style="margin-left:70px;width:auto;height:420px;" src="images/fsbmenu_expand.png"></p>
-<p>You can extend the AutoConnect menu to improve the original sketches and according to the procedure described in section <a href="advancedusage.html#casts-the-html-pages-to-be-add-on-into-the-menu"><em>Advanced Usage</em></a>.</p></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="gettingstarted.html" title="Getting started" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>Getting started</span></div></a><a href="basicusage.html" title="Basic usage" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>Basic usage</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/menuize.html b/lib/AutoConnect-master/docs/menuize.html
deleted file mode 100644
index 68da3265ed9ce334bf6051e1aa456dcf9b082d66..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/menuize.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/menuize.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>Attach the menu - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#what-menus-can-be-made-using-autoconnect" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">Attach the menu</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7"><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--active md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8" checked><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">Attach the menu</label><a href="menuize.html" title="Attach the menu" class="md-nav__link md-nav__link--active">Attach the menu</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#what-menus-can-be-made-using-autoconnect" title="What menus can be made using AutoConnect" class="md-nav__link">What menus can be made using AutoConnect</a></li><li class="md-nav__item"><a href="#basic-mechanism-of-menu-generation" title="Basic mechanism of menu generation" class="md-nav__link">Basic mechanism of menu generation</a></li><li class="md-nav__item"><a href="#place-the-item-for-the-legacy-sketches-on-the-menu" title="Place the item for the legacy sketches on the menu" class="md-nav__link">Place the item for the legacy sketches on the menu</a></li></ul></nav></li><li class="md-nav__item"><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link">Custom Web pages w/o JSON</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#what-menus-can-be-made-using-autoconnect" title="What menus can be made using AutoConnect" class="md-nav__link">What menus can be made using AutoConnect</a></li><li class="md-nav__item"><a href="#basic-mechanism-of-menu-generation" title="Basic mechanism of menu generation" class="md-nav__link">Basic mechanism of menu generation</a></li><li class="md-nav__item"><a href="#place-the-item-for-the-legacy-sketches-on-the-menu" title="Place the item for the legacy sketches on the menu" class="md-nav__link">Place the item for the legacy sketches on the menu</a></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>Attach the menu</h1><h2 id="what-menus-can-be-made-using-autoconnect">What menus can be made using AutoConnect<a class="headerlink" href="#what-menus-can-be-made-using-autoconnect" title="Permanent link">&para;</a></h2>
-<p>AutoConnect generates a menu dynamically depending on the instantiated <a href="acintro.html#how-it-works">AutoConnectAux</a> at the sketch executing time. Usually, it is a collection of <a href="acelements.html">AutoConnectElement</a>. In addition to this, you can generate a menu from only AutoConnectAux, without AutoConnectElements.<br>In other words, you can easily create a built-in menu featuring the WiFi connection facility embedding the legacy web pages.</p>
-<h2 id="basic-mechanism-of-menu-generation">Basic mechanism of menu generation<a class="headerlink" href="#basic-mechanism-of-menu-generation" title="Permanent link">&para;</a></h2>
-<p>The sketch can display the <a href="menu.html">AutoConnect menu</a> by following three patterns depending on AutoConnect-API usage.</p>
-<dl>
-<dt><i class="fa fa-desktop"></i>&ensp;<strong>Basic menu</strong></dt>
-<dd>It is the most basic menu for only connecting WiFi. Sketch can automatically display this menu with the basic call sequence of the AutoConnect API which invokes <a href="api.html#begin">AutoConnect::begin</a> and <a href="api.html#handleclient">AutoConnect::handleClient</a>.</dd>
-<dt><i class="fa fa-desktop"></i>&ensp;<strong>Extra menu with custom Web pages which is consisted by <a href="acelements.html">AutoConnectElements</a></strong></dt>
-<dd>It is an extended menu that appears when the sketch consists of the custom Web pages with <a href="acintro.html#how-it-works">AutoConnectAux</a> and AutoConnectElements. Refer to section <a href="acintro.html#custom-web-pages-in-autoconnect-menu"><em>Custom Web pages section</em></a>.</dd>
-<dt><i class="fa fa-desktop"></i>&ensp;<strong>Extra menu which contains legacy pages</strong></dt>
-<dd>It is for the legacy sketches using the <strong>on</strong> handler of ESP8266WebServer/WebServer(for ESP32) class natively and looks the same as the extra menu as above.</dd>
-</dl>
-<p>The mechanism to generate the AutoConnect menu is simple. It will insert the item as <code>&lt;li&gt;</code> tag generated from the <a href="apiaux.html#autoconnectaux"><strong>title</strong></a> and <a href="apiaux.html#autoconnectaux"><strong>uri</strong></a> member variable of the AutoConnectAux object to the menu list of AutoConnect's built-in HTML. Therefore, the legacy sketches can invoke the web pages from the AutoConnect menu with just declaration the title and URI to AutoConnectAux.</p>
-<h2 id="place-the-item-for-the-legacy-sketches-on-the-menu">Place the item for the legacy sketches on the menu<a class="headerlink" href="#place-the-item-for-the-legacy-sketches-on-the-menu" title="Permanent link">&para;</a></h2>
-<p>To implement this with your sketch, use only the <a href="apiaux.html#autoconnectaux">AutoConnectAux</a> constructed with the title and URI of that page. <a href="acelements.html">AutoConnectElements</a> is not required.</p>
-<p>The AutoConnect library package contains an example sketch for ESP8266WebServer known as FSBrowser. Its example is a sample implementation that supports AutoConnect without changing the structure of the original FSBrowser and has the menu item for <strong>Edit</strong> and <strong>List</strong>.</p>
-<p><span style="display:block;margin-left:auto;margin-right:auto;width:282px;height:492px;border:1px solid lightgrey;"><img data-gifffer="images/aux_fsbrowser.gif" data-gifffer-height="490" data-gifffer-width="280" /></span></p>
-<p>The changes I made to adapt the FSBrowser to the AutoConnect menu are slight as follows:</p>
-<ol>
-<li>Add AutoConnect declaration.</li>
-<li>Add the menu item named "<strong>Edit</strong>" and "<strong>List</strong>" of AutoConnectAux as each page.</li>
-<li>Replace the instance of ESP8266WebServer to AutoConnect.</li>
-<li>Change the menu title to FSBrowser using <a href="apiconfig.html#title">AutoConnectConfig::title</a>.</li>
-<li>Join the legacy pages to AutoConnect declared at step #1 using <a href="api.html#join">AutoConnect::join</a>.<br>Joining multiple at one time with the <a href="https://en.cppreference.com/w/cpp/language/list_initialization">list initialization</a> for <a href="https://ja.cppreference.com/w/cpp/container/vector/vector">std::vector</a>.</li>
-<li>According to the basic procedure of AutoConnect.<br>Establish a connection with <a href="api.html#begin">AutoConnect::begin</a> and perform <a href="api.html#handleclient">AutoConnect::handleClient</a> in <strong>loop()</strong>.</li>
-</ol>
-<p><i class="fa fa-code"></i>&ensp;<strong>Modification for FSBrowser</strong> <small>(a part  of sketch code)</small></p>
-<div style="overflow:auto"><img style="width:auto;max-width:none;height:840px" src="images/fsbrowser_ba.svg" /></div>
-
-<p>... and embeds a hyperlink with an <a href="apiextra.html#icons">icon</a> in the bottom of the body section of <em>index.htm</em> contained in the data folder to jump to the AutoConnect menu.</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">p</span> <span style="color: #a6e22e">style</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;padding-top:15px;text-align:center&quot;</span><span style="color: #f8f8f2">&gt;</span>
-  <span style="color: #f8f8f2">&lt;</span><span style="color: #f92672">a</span> <span style="color: #a6e22e">href</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;/_ac&quot;</span><span style="color: #f8f8f2">&gt;&lt;</span><span style="color: #f92672">img</span> <span style="color: #a6e22e">src</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAC2klEQVRIS61VvWsUQRSfmU2pon9BUIkQUaKFaCBKgooSb2d3NSSFKbQR/KrEIiIKBiGF2CgRxEpjQNHs7mwOUcghwUQ7g58IsbGxEBWsb2f8zR177s3t3S2cA8ftzPu993vzvoaSnMu2vRKlaqgKp74Q/tE8qjQPyHGcrUrRjwlWShmDbFMURd/a6TcQwNiYUmpFCPElUebcuQ2vz6aNATMVReHEPwzfSSntDcNwNo2rI+DcvQzhpAbA40VKyV0p1Q9snzBG1qYVcYufXV1sREraDcxpyHdXgkfpRBj6Uwm2RsC5dxxmZ9pdOY9cKTISRcHTCmGiUCh4fYyplTwG2mAUbtMTBMHXOgK9QfyXEZr+TkgQ1oUwDA40hEgfIAfj+HuQRaBzAs9eKyUZ5Htx+T3ZODKG8DzOJMANhmGomJVMXPll+hx9UUAlzZrJJ4QNCDG3VEfguu7mcpmcB/gkBOtShhQhchAlu5jlLUgc9ENgyP5gf9+y6LTv+58p5zySkgwzLNOIGc8sEoT1Lc53NMlbCQQuvMxeCME1NNPVVkmH/i3IzzXDtCSA0qQQwZWOCJDY50jsQRjJmkslEOxvTcDRO6zPxOh5xZglKkYLhWM9jMVnkIsTyMT6NBj7IbOCEjm6HxNVVTo2WXqEWJZ1T8rytB6GxizyDkPhWVpBqfiXUtbo/HywYJSpA9kMamNNPZ71R9Hcm+TMHHZNGw3EuraXEUldbfvw25UdOjqOt+JhMwJd7+jSTpZaEiIcaCDwPK83jtWnTkwnunFMtxeL/ge9r4XItt1RNNaj/0GAcV2bR3U5sG3nEh6M61US+Qrfd9Bs31GGulI2GOS/8dgcQZV1w+ApjIxB7TDwF9GcNzJzoA+rD0/8HvPnXQJCt2qFCwbBTfRI7UyXumWVt+HJ9NO4XI++bdsb0YyrqXmlh+AWOLHaLqS5CLQR5EggR3YlcVS9gKeH2hnX8r8Kmi1CAsl36QAAAABJRU5ErkJggg==&quot;</span> <span style="color: #a6e22e">border</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;0&quot;</span> <span style="color: #a6e22e">title</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;AutoConnect menu&quot;</span> <span style="color: #a6e22e">alt</span><span style="color: #f92672">=</span><span style="color: #e6db74">&quot;AutoConnect menu&quot;</span><span style="color: #f8f8f2">/&gt;&lt;/</span><span style="color: #f92672">a</span><span style="color: #f8f8f2">&gt;</span>
-<span style="color: #f8f8f2">&lt;/</span><span style="color: #f92672">p</span><span style="color: #f8f8f2">&gt;</span>
-</pre></div>
-
-<script>
-  window.onload = function() {
-    Gifffer();
-  };
-</script></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="datatips.html" title="Tips for data conversion" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>Tips for data conversion</span></div></a><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>Custom Web pages w/o JSON</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/search/search_index.json b/lib/AutoConnect-master/docs/search/search_index.json
deleted file mode 100644
index 87138ebfd53708c384364ee467289cf99d2897bc..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/search/search_index.json
+++ /dev/null
@@ -1 +0,0 @@
-{"config":{"lang":["en"],"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"index.html","text":"AutoConnect for ESP8266/ESP32 \u00b6 An Arduino library for ESP8266/ESP32 WLAN configuration at run time with web interface. Overview \u00b6 To the dynamic configuration for joining to WLAN with SSID and PSK accordingly. It an Arduino library united with ESP8266WebServer class for ESP8266 or WebServer class for ESP32. Easy implementing the Web interface constituting the WLAN for ESP8266/ESP32 WiFi connection. With this library to make a sketch easily which connects from ESP8266/ESP32 to the access point at runtime by the web interface without hard-coded SSID and password. No need pre-coded SSID & password \u00b6 It is no needed hard-coding in advance the SSID and Password into the sketch to connect between ESP8266/ESP32 and WLAN. You can input SSID & Password from a smartphone via the web interface at runtime. Simple usage \u00b6 AutoConnect control screen will be displayed automatically for establishing new connections. It aids by the captive portal when vested the connection cannot be detected. By using the AutoConnect menu , to manage the connections convenient. Store the established connection \u00b6 The connection authentication data as credentials are saved automatically in EEPROM of ESP8266/ESP32 and You can select the past SSID from the AutoConnect menu . Easy to embed in \u00b6 AutoConnect can be placed easily in your sketch. It's \" begin \" and \" handleClient \" only. Lives with your sketches \u00b6 The sketches which provide the web page using ESP8266WebServer there is, AutoConnect will not disturb it. AutoConnect can use an already instantiated ESP8266WebServer object, or itself can assign it. This effect also applies to ESP32. The corresponding class for ESP32 will be the WebServer. Easy to add the custom Web pages ENHANCED w/v0.9.7 \u00b6 You can easily add your owned web pages that can consist of representative HTML elements and invoke them from the menu. Further it possible importing the custom Web pages declarations described with JSON which stored in PROGMEM, SPIFFS, or SD. Installation \u00b6 Requirements \u00b6 Supported hardware \u00b6 Generic ESP8266 modules (applying the ESP8266 Community's Arduino core) Adafruit HUZZAH ESP8266 (ESP-12) ESP-WROOM-02 Heltec WiFi Kit 8 NodeMCU 0.9 (ESP-12) / NodeMCU 1.0 (ESP-12E) Olimex MOD-WIFI-ESP8266 SparkFun Thing SweetPea ESP-210 ESP32Dev Board (applying the Espressif's arduino-esp32 core) SparkFun ESP32 Thing WEMOS LOLIN D32 Ai-Thinker NodeMCU-32S Heltec WiFi Kit 32 M5Stack And other ESP8266/ESP32 modules supported by the Additional Board Manager URLs of the Arduino-IDE. About flash size on the module The AutoConnect sketch size is relatively large. Large flash capacity is necessary. 512Kbyte (4Mbits) flash inclusion module such as ESP-01 is not recommended. Required libraries \u00b6 AutoConnect requires the following environment and libraries. Arduino IDE The current upstream at the 1.8 level or later is needed. Please install from the official Arduino IDE download page . This step is not required if you already have a modern version. ESP8266 Arduino core AutoConnect targets sketches made on the assumption of ESP8266 Community's Arduino core . Stable 2.4.0 or higher required and the latest release is recommended. Install third-party platform using the Boards Manager of Arduino IDE. Package URL is http://arduino.esp8266.com/stable/package_esp8266com_index.json ESP32 Arduino core Also, to apply AutoConnect to ESP32, the arduino-esp32 core provided by Espressif is needed. Stable 1.0.1 or required and the latest release is recommended. Install third-party platform using the Boards Manager of Arduino IDE. You can add multiple URLs into Additional Board Manager URLs field, separating them with commas. Package URL is https://dl.espressif.com/dl/package_esp32_index.json for ESP32. Additional library (Required) The PageBuilder library to build HTML for ESP8266WebServer is needed. To install the PageBuilder library into your Arduino IDE, you can use the Library Manager . Select the board of ESP8266 series in the Arduino IDE, open the library manager and search keyword ' PageBuilder ' with the topic ' Communication ', then you can see the PageBuilder . The latest version is required 1.3.3 later . 1 Additional library (Optional) By adding the ArduinoJson library, AutoConnect will be able to handle the custom Web pages described with JSON. Since AutoConnect v0.9.7 you can insert user-owned web pages that can consist of representative HTML elements as styled TEXT, INPUT, BUTTON, CHECKBOX, SELECT, SUBMIT and invoke them from the AutoConnect menu. These HTML elements can be added by sketches using the AutoConnect API. Further it possible importing the custom Web pages declarations described with JSON which stored in PROGMEM, SPIFFS, or SD. ArduinoJson is required to use this feature. 2 AutoConnect can work with ArduinoJson both version 5 and version 6 . Install the AutoConnect \u00b6 Clone or download from the AutoConnect GitHub repository . When you select Download, you can import it to Arduino IDE immediately. After downloaded, the AutoConnect-master.zip file will be saved in your download folder. Then in the Arduino IDE, navigate to \"Sketch > Include Library\" . At the top of the drop down list, select the option to \"Add .ZIP Library...\" . Details for Arduino official page . Supported by Library manager. AutoConnect was added to the Arduino IDE library manager. It can be used with the PlatformIO library also. window.onload = function() { Gifffer(); }; Since AutoConnect v0.9.8, PageBuilder v1.3.3 later is required. \u21a9 Using the AutoConnect API natively allows you to sketch custom Web pages without JSON. \u21a9","title":"Overview"},{"location":"index.html#autoconnect-for-esp8266esp32","text":"An Arduino library for ESP8266/ESP32 WLAN configuration at run time with web interface.","title":"AutoConnect for ESP8266/ESP32"},{"location":"index.html#overview","text":"To the dynamic configuration for joining to WLAN with SSID and PSK accordingly. It an Arduino library united with ESP8266WebServer class for ESP8266 or WebServer class for ESP32. Easy implementing the Web interface constituting the WLAN for ESP8266/ESP32 WiFi connection. With this library to make a sketch easily which connects from ESP8266/ESP32 to the access point at runtime by the web interface without hard-coded SSID and password.","title":"Overview"},{"location":"index.html#no-need-pre-coded-ssid-password","text":"It is no needed hard-coding in advance the SSID and Password into the sketch to connect between ESP8266/ESP32 and WLAN. You can input SSID & Password from a smartphone via the web interface at runtime.","title":" No need pre-coded SSID &amp; password"},{"location":"index.html#simple-usage","text":"AutoConnect control screen will be displayed automatically for establishing new connections. It aids by the captive portal when vested the connection cannot be detected. By using the AutoConnect menu , to manage the connections convenient.","title":" Simple usage"},{"location":"index.html#store-the-established-connection","text":"The connection authentication data as credentials are saved automatically in EEPROM of ESP8266/ESP32 and You can select the past SSID from the AutoConnect menu .","title":" Store the established connection"},{"location":"index.html#easy-to-embed-in","text":"AutoConnect can be placed easily in your sketch. It's \" begin \" and \" handleClient \" only.","title":" Easy to embed in"},{"location":"index.html#lives-with-your-sketches","text":"The sketches which provide the web page using ESP8266WebServer there is, AutoConnect will not disturb it. AutoConnect can use an already instantiated ESP8266WebServer object, or itself can assign it. This effect also applies to ESP32. The corresponding class for ESP32 will be the WebServer.","title":" Lives with your sketches"},{"location":"index.html#easy-to-add-the-custom-web-pages-enhanced-wv097","text":"You can easily add your owned web pages that can consist of representative HTML elements and invoke them from the menu. Further it possible importing the custom Web pages declarations described with JSON which stored in PROGMEM, SPIFFS, or SD.","title":" Easy to add the custom Web pages ENHANCED w/v0.9.7"},{"location":"index.html#installation","text":"","title":"Installation"},{"location":"index.html#requirements","text":"","title":"Requirements"},{"location":"index.html#supported-hardware","text":"Generic ESP8266 modules (applying the ESP8266 Community's Arduino core) Adafruit HUZZAH ESP8266 (ESP-12) ESP-WROOM-02 Heltec WiFi Kit 8 NodeMCU 0.9 (ESP-12) / NodeMCU 1.0 (ESP-12E) Olimex MOD-WIFI-ESP8266 SparkFun Thing SweetPea ESP-210 ESP32Dev Board (applying the Espressif's arduino-esp32 core) SparkFun ESP32 Thing WEMOS LOLIN D32 Ai-Thinker NodeMCU-32S Heltec WiFi Kit 32 M5Stack And other ESP8266/ESP32 modules supported by the Additional Board Manager URLs of the Arduino-IDE. About flash size on the module The AutoConnect sketch size is relatively large. Large flash capacity is necessary. 512Kbyte (4Mbits) flash inclusion module such as ESP-01 is not recommended.","title":"Supported hardware"},{"location":"index.html#required-libraries","text":"AutoConnect requires the following environment and libraries. Arduino IDE The current upstream at the 1.8 level or later is needed. Please install from the official Arduino IDE download page . This step is not required if you already have a modern version. ESP8266 Arduino core AutoConnect targets sketches made on the assumption of ESP8266 Community's Arduino core . Stable 2.4.0 or higher required and the latest release is recommended. Install third-party platform using the Boards Manager of Arduino IDE. Package URL is http://arduino.esp8266.com/stable/package_esp8266com_index.json ESP32 Arduino core Also, to apply AutoConnect to ESP32, the arduino-esp32 core provided by Espressif is needed. Stable 1.0.1 or required and the latest release is recommended. Install third-party platform using the Boards Manager of Arduino IDE. You can add multiple URLs into Additional Board Manager URLs field, separating them with commas. Package URL is https://dl.espressif.com/dl/package_esp32_index.json for ESP32. Additional library (Required) The PageBuilder library to build HTML for ESP8266WebServer is needed. To install the PageBuilder library into your Arduino IDE, you can use the Library Manager . Select the board of ESP8266 series in the Arduino IDE, open the library manager and search keyword ' PageBuilder ' with the topic ' Communication ', then you can see the PageBuilder . The latest version is required 1.3.3 later . 1 Additional library (Optional) By adding the ArduinoJson library, AutoConnect will be able to handle the custom Web pages described with JSON. Since AutoConnect v0.9.7 you can insert user-owned web pages that can consist of representative HTML elements as styled TEXT, INPUT, BUTTON, CHECKBOX, SELECT, SUBMIT and invoke them from the AutoConnect menu. These HTML elements can be added by sketches using the AutoConnect API. Further it possible importing the custom Web pages declarations described with JSON which stored in PROGMEM, SPIFFS, or SD. ArduinoJson is required to use this feature. 2 AutoConnect can work with ArduinoJson both version 5 and version 6 .","title":"Required libraries"},{"location":"index.html#install-the-autoconnect","text":"Clone or download from the AutoConnect GitHub repository . When you select Download, you can import it to Arduino IDE immediately. After downloaded, the AutoConnect-master.zip file will be saved in your download folder. Then in the Arduino IDE, navigate to \"Sketch > Include Library\" . At the top of the drop down list, select the option to \"Add .ZIP Library...\" . Details for Arduino official page . Supported by Library manager. AutoConnect was added to the Arduino IDE library manager. It can be used with the PlatformIO library also. window.onload = function() { Gifffer(); }; Since AutoConnect v0.9.8, PageBuilder v1.3.3 later is required. \u21a9 Using the AutoConnect API natively allows you to sketch custom Web pages without JSON. \u21a9","title":"Install the AutoConnect"},{"location":"acelements.html","text":"The elements for the custom Web pages \u00b6 Representative HTML elements for making the custom Web page are provided as AutoConnectElements. AutoConnectButton : Labeled action button AutoConnectCheckbox : Labeled checkbox AutoConnectElement : General tag AutoConnectFile : File uploader AutoConnectInput : Labeled text input box AutoConnectRadio : Labeled radio button AutoConnectSelect : Selection list AutoConnectSubmit : Submit button AutoConnectText : Style attributed text Layout on a custom Web page \u00b6 The elements of the page created by AutoConnectElements are aligned vertically exclude the AutoConnectRadio . You can specify the direction to arrange the radio buttons as AutoConnectRadio vertically or horizontally. This basic layout depends on the CSS of the AutoConnect menu so you can not change drastically. Form and AutoConnectElements \u00b6 All AutoConnectElements placed on custom web pages will be contained into one form. Its form is fixed and created by AutoConnect. The form value (usually the text or checkbox you entered) is sent by AutoConnectSubmit using the POST method with HTTP. The post method sends the actual form data which is a query string whose contents are the name and value of AutoConnectElements. You can retrieve the value for the parameter with the sketch from the query string with ESP8266WebServer::arg function or PageArgument class of the AutoConnect::on handler when the form is submitted. AutoConnectElement - A basic class of elements \u00b6 AutoConnectElement is a base class for other element classes and has common attributes for all elements. It can also be used as a variant of each element. The following items are attributes that AutoConnectElement has and are common to other elements. Sample AutoConnectElement element(\"element\", \"<hr>\"); On the page: Constructor \u00b6 AutoConnectElement( const char * name, const char * value) name \u00b6 Each element has a name. The name is the String data type. You can identify each element by the name to access it with sketches. value \u00b6 The value is the string which is a source to generate an HTML code. Characteristics of Value vary depending on the element. The value of AutoConnectElement is native HTML code. A string of value is output as HTML as it is. type \u00b6 The type indicates the type of the element and represented as the ACElement_t enumeration type in the sketch. Since AutoConnectElement also acts as a variant of other elements, it can be applied to handle elements collectively. At that time, the type can be referred to by the typeOf() function. The following example changes the font color of all AutoConnectText elements of a custom Web page to gray. AutoConnectAux customPage; AutoConnectElementVT & elements = customPage.getElements(); for (AutoConnectElement & elm : elements) { if (elm.typeOf() == AC_Text) { AutoConnectText & text = reinterpret_cast < AutoConnectText &> (elm); text.style = \"color:gray;\" ; } } The enumerators for ACElement_t are as follows: AutoConnectButton: AC_Button AutoConnectCheckbox: AC_Checkbox AutoConnectElement: AC_Element AutoConnectFile: AC_File AutoConnectInput: AC_Input AutoConnectRadio: AC_Radio AutoConnectSelect: AC_Select AutoConnectSubmit: AC_Submit AutoConnectText: AC_Text Uninitialized element: AC_Unknown Furthermore, to convert an entity that is not an AutoConnectElement to its native type, you must re-interpret that type with c++. Or, you can be coding the sketch more easily with using the as<T> function. AutoConnectAux customPage; AutoConnectElementVT & elements = customPage.getElements(); for (AutoConnectElement & elm : elements) { if (elm.type() == AC_Text) { AutoConnectText & text = customPage[elm.name].as < AutoConnectText > (); text.style = \"color:gray;\" ; // Or, it is also possible to write the code further reduced as follows. // customPage[elm.name].as<AutoConnectText>().style = \"color:gray;\"; } } AutoConnectButton \u00b6 AutoConnectButton generates an HTML < button type = \"button\" > tag and locates a clickable button to a custom Web page. Currently AutoConnectButton corresponds only to name, value, an onclick attribute of HTML button tag. An onclick attribute is generated from an action member variable of the AutoConnectButton, which is mostly used with a JavaScript to activate a script. Sample AutoConnectButton button(\"button\", \"OK\", \"myFunction()\"); On the page: Constructor \u00b6 AutoConnectButton( const char * name, const char * value, const String & action) name \u00b6 It is the name of the AutoConnectButton element and matches the name attribute of the button tag. It also becomes the parameter name of the query string when submitted. value \u00b6 It becomes a value of the value attribute of an HTML button tag. action \u00b6 action is String data type and is an onclick attribute fire on a mouse click on the element. It is mostly used with a JavaScript to activate a script. 1 For example, the following code defines a custom Web page that copies a content of Text1 to Text2 by clicking Button . const char * scCopyText = R\"( <script> function CopyText() { document.getElementById(\"Text2\").value = document.getElementById(\"Text1\").value; } </script> )\" ; ACInput(Text1, \"Text1\" ); ACInput(Text2, \"Text2\" ); ACButton(Button, \"COPY\" , \"CopyText()\" ); ACElement(TextCopy, scCopyText); AutoConnectCheckbox \u00b6 AutoConnectCheckbox generates an HTML < input type = \"checkbox\" > tag and a < label > tag. It places horizontally on a custom Web page by default. Sample AutoConnectCheckbox checkbox(\"checkbox\", \"uniqueapid\", \"Use APID unique\", false); On the page: Constructor \u00b6 AutoConnectCheckbox( const char * name, const char * value, const char * label, const bool checked) name \u00b6 It is the name of the AutoConnectCheckbox element and matches the name attribute of the input tag. It also becomes the parameter name of the query string when submitted. value \u00b6 It becomes a value of the value attribute of an HTML < input type = \"checkbox\" > tag. label \u00b6 A label is an optional string. A label is always arranged on the right side of the checkbox. Specification of a label will generate an HTML <label> tag with an id attribute. The checkbox and the label are connected by the id attribute. Only will be displayed if a label is not specified. checked \u00b6 A checked is a Boolean value and indicates the checked status of the checkbox. The value of the checked checkbox element is packed in the query string and sent. AutoConnectFile \u00b6 AutoConnectFile generates asn HTML < input type = \"file\" > tag and a < label > tag. AutoConnectFile enables file upload from the client through the web browser to ESP8266/ESP32 module. You can select the flash in the module, external SD device or any output destination as the storage of the uploaded file. Sample AutoConnectFile file(\"file\", \"\", \"Upload:\", AC_File_FS) On the page: Constructor \u00b6 AutoConnectFile( const char * name, const char * value, const char * label, const ACFile_t store) name \u00b6 It is the name of the AutoConnectFile element and matches the name attribute of the input tag. It also becomes the parameter name of the query string when submitted. value \u00b6 File name to be upload. The value contains the value entered by the client browser to the < input type = \"file\" > tag and is read-only. Even If you give a value to the constructor, it does not affect as an initial value like a default file name. label \u00b6 A label is an optional string. A label is always arranged on the left side of the input box. Specification of a label will generate an HTML < label > tag with an id attribute. The input box and the label are connected by the id attribute. store \u00b6 Specifies the destination to save the uploaded file. The destination can be specified the following values \u200b\u200bin the ACFile_t enumeration type. AC_File_FS : Save as the SPIFFS file in flash of ESP8266/ESP32 module. AC_File_SD : Save to an external SD device connected to ESP8266/ESP32 module. AC_File_Extern : Pass the content of the uploaded file to the uploader which is declared by the sketch individually. Its uploader must inherit AutoConnectUploadHandler class and implements _open , _write and _close function. Built-in uploader is ready. AutoConnect already equips the built-in uploader for saving to the SPIFFS as AC_File_FS and the external SD as AC_File_SD. It is already implemented inside AutoConnect and will store uploaded file automatically. AutoConnectInput \u00b6 AutoConnectInput generates an HTML < input type = \"text\" > tag and a < label > tag. It can also have a placeholder. The value of the input box is passed to the destination in the query string and can be retrieved programmatically. You can also update from the sketches. Sample AutoConnectInput input(\"input\", \"\", \"Server\", \"MQTT broker server\"); On the page: Constructor \u00b6 AutoConnectInput( const char * name, const char * value, const char * label, const char * pattern, const char * placeholder) name \u00b6 It is the name of the AutoConnectInput element and matches the name attribute, the id attribute of the input tag. It also becomes the parameter name of the query string when submitted. value \u00b6 It becomes a string value of the value attribute of an HTML < input type = \"text\" > tag. The text entered from the custom Web page will be grouped in the query string of the form submission and the string set before accessing the page will be displayed as the initial value. label \u00b6 A label is an optional string. A label is always arranged on the left side of the input box. Specification of a label will generate an HTML < label > tag with an id attribute. The input box and the label are connected by the id attribute. pattern \u00b6 A pattern specifies a regular expression that the AutoConnectInput element's value is checked against on form submission. If it is invalid, the background color will change, but it will be sent even if the data format does not match. To check whether the entered value matches the pattern, use the isValid function. The password that must contain 8 or more characters that are of at least one number, and one uppercase and lowercase letter: (?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,} Email address as [email protected] : [a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,} IP address: (([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]) Host name of Internet: (([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]) Date (MM/DD/YYYY) as range 1900-2099: (0[1-9]|1[012])[- \\/.](0[1-9]|[12][0-9]|3[01])[- \\/.](19|20)\\d\\d Twitter account: ^@?(\\w){1,15}$ placeholder \u00b6 A placeholder is an option string. Specification of a placeholder will generate a placeholder attribute for the input tag. AutoConnectRadio \u00b6 AutoConnectRadio generates few HTML < input type = \"radio\" > tags as grouped and the same number of < label > tags. AutoConnectRadio can keep the value of a radio button as a collection. The grouped values will be placed in the custom Web page to select only one exclusively. Sample AutoConnectRadio radio(\"radio\", { \"30 sec.\", \"60 sec.\", \"180 sec.\" }, \"Update period\", AC_Vertical, 1); On the page: Constructor \u00b6 AutoConnectRadio( const char * name, std :: vector < String > const & values, const char * label, const ACArrange_t order, const uint8_t checked) name \u00b6 It is the name of the AutoConnectRadio element and matches the name attribute of the input tags. It also becomes the parameter name of the query string when submitted. values \u00b6 A values is an array of String type for the radio button options which as actually std::vector . It is an initialization list can be used. The input tags will be generated from each entry in the values, the amount of which is the same as the number of items in values . label \u00b6 A label is an optional string. A label will be arranged in the left or top of the radio buttons according to the order . Specification of a label will generate an HTML < label > tag with an id attribute. The radio buttons and the label are connected by the id attribute. order \u00b6 A order specifies the direction to arrange the radio buttons. It is a value of type ACArrange_t and accepts one of the following: AC_Horizontal : Horizontal arrangement. AC_Vertical : Vertical arrangement. A label will place in the left or the top according to the order . checked \u00b6 A checked specifies the index number (1-based) of the values to be checked. If this parameter is not specified neither item is checked. AutoConnectSelect \u00b6 AutoConnectSelect generates an HTML < select > tag (drop-down list) and few < option > tags. Sample AutoConnectSelect select(\"select\", { String(\"Europe/London\"), String(\"Europe/Berlin\"), String(\"Europe/Helsinki\"), String(\"Europe/Moscow\"), String(\"Asia/Dubai\") }, \"Select TZ name\"); On the page: Constructor \u00b6 AutoConnectSelect( const char * name, std :: vector < String > const & options, const char * label, const uint8_t selected) name \u00b6 It is the name of the AutoConnectSelect element and matches the name attribute of the select tags. options \u00b6 An options is an array of String type for the options which as actually std::vector for an HTML < option > tag. It is an initialization list can be used. The option tags will be generated from each entry in the options, the amount of which is the same as the number of items in an options . label \u00b6 A label is an optional string. A label is always arranged on the left side of the drop-down list. Specification of a label will generate an HTML < label > tag with an id attribute. The select tag and the label are connected by the id attribute. selected \u00b6 A selected is an optional value. Specifies that an option should be pre-selected when the page loads. AutoConnectSubmit \u00b6 AutoConnectSubmit generates an HTML < input type = \"button\" > tag attached onclick attribute. The native code of the onclick attribute is the submission of the form with the POST method. Sample AutoConnectSubmit submit(\"submit\", \"Save\", \"/mqtt_save\"); On the page: Constructor \u00b6 AutoConnectSubmit( const char * name, const char * value, const char * uri) name \u00b6 It is the name of the AutoConnectSubmit element and matches the name attribute of the input tag. value \u00b6 It becomes a string of the value attribute of an HTML < input type = \"button\" > tag. The value will be displayed as a label of the button. uri \u00b6 A uri specifies the URI to send form data when the button declared by AutoConnectSubmit is clicked. The query string of the form data sent with AutoConnectSubmit contains the URI of the page. Its parameter name is _acuri . In Sketch, you can know the called URI by referring to the _acuri parameter with the destination page handler. The actual query string is as follows: _acuri= CALLER_URI AutoConnectText \u00b6 AutoConnectText generates an HTML < div > tag. A style attribute will be attached if a style parameter is passed. Sample AutoConnectText text(\"text\", \"Publishing the WiFi signal strength to MQTT channel. RSSI value of ESP8266 to the channel created on ThingSpeak\", \"font-family:serif;color:#4682b4;\"); On the page: Constructor \u00b6 AutoConnectText( const char * name, const char * value, const char * style, const char * format) name \u00b6 A name does not exist in the generated HTML. It provides only a means of accessing elements with the sketches. value \u00b6 It becomes content and also can contain the native HTML code, but remember that your written code is enclosed by the div tag. style \u00b6 A style specifies the qualification style to give to the content and can use the style attribute format as it is. format \u00b6 A format is a pointer to a null-terminated multibyte string specifying how to interpret the value. It specifies the conversion format when outputting values. The format string conforms to C-style printf library functions, but depends on the espressif sdk implementation. The conversion specification is valid only in %s format. (Left and Right justification, width are also valid.) How to coding for the elements \u00b6 Declaration for the elements in Sketches \u00b6 Variables of each AutoConnetElement can be declared with macros. By using the macros, you can treat element name that is String type as variable in sketches. 2 ACElement ( name [ , value ] ) ACButton ( name [ , value ] [ , action ] ) ACCheckbox ( name [ , value ] [ , label ] [ , true | false ] ) ACFile ( name [ , value ] [ , label ] [ , AC_File_FS | AC_File_SD | AC_File_Extern ] ) ACInput ( name [ , value ] [ , label ] [ , pattern ] [ , placeholder ] ) ACRadio ( name [ , values ] [ , label ] [ , AC_Horizontal | AC_Vertical ] [ , checked ] ) ACSelect ( name [ , options ] [ , label ] ) ACSubmit ( name [ , value ] [ , uri ] ) ACText ( name [ , value ] [ , style ] [ , format ] ) Declaration macro usage For example, AutoConnectText can be declared using macros. AutoConnectText caption( \"caption\" , \"hello, world\" , \"color:blue;\" ) equals by using ACText macro. ACText(caption, \"hello, world\" , \"color:blue;\" ) Variant for AutoConnectElements \u00b6 Some AutoConnectAux APIs specify AutoConnectElements as an argument. There are also functions that return a pointer to AutoConnectElements. AutoConnectElement behaves as a variant type of each element class to make these interfaces a single. Use reinterpret_cast to cast from a variant pointer to an Actual type pointer of AutoConnectElements. AutoConnectAux aux; ACText(Text1, \"hello, world\" ); aux.add(Text1); AutoConnectText * text_p = reinterpret_cast < AutoConnectText *> (aux.getElement( \"Text1\" )); AutoConnectText & text = aux.getElement < AutoConnectText > ( \"Text1\" ); JavaScript can be inserted into a custom Web page using AutoConnectElement. \u21a9 The square brackets in the syntax are optional parameters, the stroke is a selection parameter, the bold fonts are literal. \u21a9","title":"AutoConnectElements"},{"location":"acelements.html#the-elements-for-the-custom-web-pages","text":"Representative HTML elements for making the custom Web page are provided as AutoConnectElements. AutoConnectButton : Labeled action button AutoConnectCheckbox : Labeled checkbox AutoConnectElement : General tag AutoConnectFile : File uploader AutoConnectInput : Labeled text input box AutoConnectRadio : Labeled radio button AutoConnectSelect : Selection list AutoConnectSubmit : Submit button AutoConnectText : Style attributed text","title":"The elements for the custom Web pages"},{"location":"acelements.html#layout-on-a-custom-web-page","text":"The elements of the page created by AutoConnectElements are aligned vertically exclude the AutoConnectRadio . You can specify the direction to arrange the radio buttons as AutoConnectRadio vertically or horizontally. This basic layout depends on the CSS of the AutoConnect menu so you can not change drastically.","title":"Layout on a custom Web page"},{"location":"acelements.html#form-and-autoconnectelements","text":"All AutoConnectElements placed on custom web pages will be contained into one form. Its form is fixed and created by AutoConnect. The form value (usually the text or checkbox you entered) is sent by AutoConnectSubmit using the POST method with HTTP. The post method sends the actual form data which is a query string whose contents are the name and value of AutoConnectElements. You can retrieve the value for the parameter with the sketch from the query string with ESP8266WebServer::arg function or PageArgument class of the AutoConnect::on handler when the form is submitted.","title":"Form and AutoConnectElements"},{"location":"acelements.html#autoconnectelement-a-basic-class-of-elements","text":"AutoConnectElement is a base class for other element classes and has common attributes for all elements. It can also be used as a variant of each element. The following items are attributes that AutoConnectElement has and are common to other elements. Sample AutoConnectElement element(\"element\", \"<hr>\"); On the page:","title":"AutoConnectElement - A basic class of elements"},{"location":"acelements.html#constructor","text":"AutoConnectElement( const char * name, const char * value)","title":" Constructor"},{"location":"acelements.html#name","text":"Each element has a name. The name is the String data type. You can identify each element by the name to access it with sketches.","title":" name"},{"location":"acelements.html#value","text":"The value is the string which is a source to generate an HTML code. Characteristics of Value vary depending on the element. The value of AutoConnectElement is native HTML code. A string of value is output as HTML as it is.","title":" value"},{"location":"acelements.html#type","text":"The type indicates the type of the element and represented as the ACElement_t enumeration type in the sketch. Since AutoConnectElement also acts as a variant of other elements, it can be applied to handle elements collectively. At that time, the type can be referred to by the typeOf() function. The following example changes the font color of all AutoConnectText elements of a custom Web page to gray. AutoConnectAux customPage; AutoConnectElementVT & elements = customPage.getElements(); for (AutoConnectElement & elm : elements) { if (elm.typeOf() == AC_Text) { AutoConnectText & text = reinterpret_cast < AutoConnectText &> (elm); text.style = \"color:gray;\" ; } } The enumerators for ACElement_t are as follows: AutoConnectButton: AC_Button AutoConnectCheckbox: AC_Checkbox AutoConnectElement: AC_Element AutoConnectFile: AC_File AutoConnectInput: AC_Input AutoConnectRadio: AC_Radio AutoConnectSelect: AC_Select AutoConnectSubmit: AC_Submit AutoConnectText: AC_Text Uninitialized element: AC_Unknown Furthermore, to convert an entity that is not an AutoConnectElement to its native type, you must re-interpret that type with c++. Or, you can be coding the sketch more easily with using the as<T> function. AutoConnectAux customPage; AutoConnectElementVT & elements = customPage.getElements(); for (AutoConnectElement & elm : elements) { if (elm.type() == AC_Text) { AutoConnectText & text = customPage[elm.name].as < AutoConnectText > (); text.style = \"color:gray;\" ; // Or, it is also possible to write the code further reduced as follows. // customPage[elm.name].as<AutoConnectText>().style = \"color:gray;\"; } }","title":" type"},{"location":"acelements.html#autoconnectbutton","text":"AutoConnectButton generates an HTML < button type = \"button\" > tag and locates a clickable button to a custom Web page. Currently AutoConnectButton corresponds only to name, value, an onclick attribute of HTML button tag. An onclick attribute is generated from an action member variable of the AutoConnectButton, which is mostly used with a JavaScript to activate a script. Sample AutoConnectButton button(\"button\", \"OK\", \"myFunction()\"); On the page:","title":"AutoConnectButton"},{"location":"acelements.html#constructor_1","text":"AutoConnectButton( const char * name, const char * value, const String & action)","title":" Constructor"},{"location":"acelements.html#name_1","text":"It is the name of the AutoConnectButton element and matches the name attribute of the button tag. It also becomes the parameter name of the query string when submitted.","title":" name"},{"location":"acelements.html#value_1","text":"It becomes a value of the value attribute of an HTML button tag.","title":" value"},{"location":"acelements.html#action","text":"action is String data type and is an onclick attribute fire on a mouse click on the element. It is mostly used with a JavaScript to activate a script. 1 For example, the following code defines a custom Web page that copies a content of Text1 to Text2 by clicking Button . const char * scCopyText = R\"( <script> function CopyText() { document.getElementById(\"Text2\").value = document.getElementById(\"Text1\").value; } </script> )\" ; ACInput(Text1, \"Text1\" ); ACInput(Text2, \"Text2\" ); ACButton(Button, \"COPY\" , \"CopyText()\" ); ACElement(TextCopy, scCopyText);","title":" action"},{"location":"acelements.html#autoconnectcheckbox","text":"AutoConnectCheckbox generates an HTML < input type = \"checkbox\" > tag and a < label > tag. It places horizontally on a custom Web page by default. Sample AutoConnectCheckbox checkbox(\"checkbox\", \"uniqueapid\", \"Use APID unique\", false); On the page:","title":"AutoConnectCheckbox"},{"location":"acelements.html#constructor_2","text":"AutoConnectCheckbox( const char * name, const char * value, const char * label, const bool checked)","title":" Constructor"},{"location":"acelements.html#name_2","text":"It is the name of the AutoConnectCheckbox element and matches the name attribute of the input tag. It also becomes the parameter name of the query string when submitted.","title":" name"},{"location":"acelements.html#value_2","text":"It becomes a value of the value attribute of an HTML < input type = \"checkbox\" > tag.","title":" value"},{"location":"acelements.html#label","text":"A label is an optional string. A label is always arranged on the right side of the checkbox. Specification of a label will generate an HTML <label> tag with an id attribute. The checkbox and the label are connected by the id attribute. Only will be displayed if a label is not specified.","title":" label"},{"location":"acelements.html#checked","text":"A checked is a Boolean value and indicates the checked status of the checkbox. The value of the checked checkbox element is packed in the query string and sent.","title":" checked"},{"location":"acelements.html#autoconnectfile","text":"AutoConnectFile generates asn HTML < input type = \"file\" > tag and a < label > tag. AutoConnectFile enables file upload from the client through the web browser to ESP8266/ESP32 module. You can select the flash in the module, external SD device or any output destination as the storage of the uploaded file. Sample AutoConnectFile file(\"file\", \"\", \"Upload:\", AC_File_FS) On the page:","title":"AutoConnectFile"},{"location":"acelements.html#constructor_3","text":"AutoConnectFile( const char * name, const char * value, const char * label, const ACFile_t store)","title":" Constructor"},{"location":"acelements.html#name_3","text":"It is the name of the AutoConnectFile element and matches the name attribute of the input tag. It also becomes the parameter name of the query string when submitted.","title":" name"},{"location":"acelements.html#value_3","text":"File name to be upload. The value contains the value entered by the client browser to the < input type = \"file\" > tag and is read-only. Even If you give a value to the constructor, it does not affect as an initial value like a default file name.","title":" value"},{"location":"acelements.html#label_1","text":"A label is an optional string. A label is always arranged on the left side of the input box. Specification of a label will generate an HTML < label > tag with an id attribute. The input box and the label are connected by the id attribute.","title":" label"},{"location":"acelements.html#store","text":"Specifies the destination to save the uploaded file. The destination can be specified the following values \u200b\u200bin the ACFile_t enumeration type. AC_File_FS : Save as the SPIFFS file in flash of ESP8266/ESP32 module. AC_File_SD : Save to an external SD device connected to ESP8266/ESP32 module. AC_File_Extern : Pass the content of the uploaded file to the uploader which is declared by the sketch individually. Its uploader must inherit AutoConnectUploadHandler class and implements _open , _write and _close function. Built-in uploader is ready. AutoConnect already equips the built-in uploader for saving to the SPIFFS as AC_File_FS and the external SD as AC_File_SD. It is already implemented inside AutoConnect and will store uploaded file automatically.","title":" store"},{"location":"acelements.html#autoconnectinput","text":"AutoConnectInput generates an HTML < input type = \"text\" > tag and a < label > tag. It can also have a placeholder. The value of the input box is passed to the destination in the query string and can be retrieved programmatically. You can also update from the sketches. Sample AutoConnectInput input(\"input\", \"\", \"Server\", \"MQTT broker server\"); On the page:","title":"AutoConnectInput"},{"location":"acelements.html#constructor_4","text":"AutoConnectInput( const char * name, const char * value, const char * label, const char * pattern, const char * placeholder)","title":" Constructor"},{"location":"acelements.html#name_4","text":"It is the name of the AutoConnectInput element and matches the name attribute, the id attribute of the input tag. It also becomes the parameter name of the query string when submitted.","title":" name"},{"location":"acelements.html#value_4","text":"It becomes a string value of the value attribute of an HTML < input type = \"text\" > tag. The text entered from the custom Web page will be grouped in the query string of the form submission and the string set before accessing the page will be displayed as the initial value.","title":" value"},{"location":"acelements.html#label_2","text":"A label is an optional string. A label is always arranged on the left side of the input box. Specification of a label will generate an HTML < label > tag with an id attribute. The input box and the label are connected by the id attribute.","title":" label"},{"location":"acelements.html#pattern","text":"A pattern specifies a regular expression that the AutoConnectInput element's value is checked against on form submission. If it is invalid, the background color will change, but it will be sent even if the data format does not match. To check whether the entered value matches the pattern, use the isValid function. The password that must contain 8 or more characters that are of at least one number, and one uppercase and lowercase letter: (?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,} Email address as [email protected] : [a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,} IP address: (([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]) Host name of Internet: (([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9]) Date (MM/DD/YYYY) as range 1900-2099: (0[1-9]|1[012])[- \\/.](0[1-9]|[12][0-9]|3[01])[- \\/.](19|20)\\d\\d Twitter account: ^@?(\\w){1,15}$","title":" pattern"},{"location":"acelements.html#placeholder","text":"A placeholder is an option string. Specification of a placeholder will generate a placeholder attribute for the input tag.","title":" placeholder"},{"location":"acelements.html#autoconnectradio","text":"AutoConnectRadio generates few HTML < input type = \"radio\" > tags as grouped and the same number of < label > tags. AutoConnectRadio can keep the value of a radio button as a collection. The grouped values will be placed in the custom Web page to select only one exclusively. Sample AutoConnectRadio radio(\"radio\", { \"30 sec.\", \"60 sec.\", \"180 sec.\" }, \"Update period\", AC_Vertical, 1); On the page:","title":"AutoConnectRadio"},{"location":"acelements.html#constructor_5","text":"AutoConnectRadio( const char * name, std :: vector < String > const & values, const char * label, const ACArrange_t order, const uint8_t checked)","title":" Constructor"},{"location":"acelements.html#name_5","text":"It is the name of the AutoConnectRadio element and matches the name attribute of the input tags. It also becomes the parameter name of the query string when submitted.","title":" name"},{"location":"acelements.html#values","text":"A values is an array of String type for the radio button options which as actually std::vector . It is an initialization list can be used. The input tags will be generated from each entry in the values, the amount of which is the same as the number of items in values .","title":" values"},{"location":"acelements.html#label_3","text":"A label is an optional string. A label will be arranged in the left or top of the radio buttons according to the order . Specification of a label will generate an HTML < label > tag with an id attribute. The radio buttons and the label are connected by the id attribute.","title":" label"},{"location":"acelements.html#order","text":"A order specifies the direction to arrange the radio buttons. It is a value of type ACArrange_t and accepts one of the following: AC_Horizontal : Horizontal arrangement. AC_Vertical : Vertical arrangement. A label will place in the left or the top according to the order .","title":" order"},{"location":"acelements.html#checked_1","text":"A checked specifies the index number (1-based) of the values to be checked. If this parameter is not specified neither item is checked.","title":" checked"},{"location":"acelements.html#autoconnectselect","text":"AutoConnectSelect generates an HTML < select > tag (drop-down list) and few < option > tags. Sample AutoConnectSelect select(\"select\", { String(\"Europe/London\"), String(\"Europe/Berlin\"), String(\"Europe/Helsinki\"), String(\"Europe/Moscow\"), String(\"Asia/Dubai\") }, \"Select TZ name\"); On the page:","title":"AutoConnectSelect"},{"location":"acelements.html#constructor_6","text":"AutoConnectSelect( const char * name, std :: vector < String > const & options, const char * label, const uint8_t selected)","title":" Constructor"},{"location":"acelements.html#name_6","text":"It is the name of the AutoConnectSelect element and matches the name attribute of the select tags.","title":" name"},{"location":"acelements.html#options","text":"An options is an array of String type for the options which as actually std::vector for an HTML < option > tag. It is an initialization list can be used. The option tags will be generated from each entry in the options, the amount of which is the same as the number of items in an options .","title":" options"},{"location":"acelements.html#label_4","text":"A label is an optional string. A label is always arranged on the left side of the drop-down list. Specification of a label will generate an HTML < label > tag with an id attribute. The select tag and the label are connected by the id attribute.","title":" label"},{"location":"acelements.html#selected","text":"A selected is an optional value. Specifies that an option should be pre-selected when the page loads.","title":" selected"},{"location":"acelements.html#autoconnectsubmit","text":"AutoConnectSubmit generates an HTML < input type = \"button\" > tag attached onclick attribute. The native code of the onclick attribute is the submission of the form with the POST method. Sample AutoConnectSubmit submit(\"submit\", \"Save\", \"/mqtt_save\"); On the page:","title":"AutoConnectSubmit"},{"location":"acelements.html#constructor_7","text":"AutoConnectSubmit( const char * name, const char * value, const char * uri)","title":" Constructor"},{"location":"acelements.html#name_7","text":"It is the name of the AutoConnectSubmit element and matches the name attribute of the input tag.","title":" name"},{"location":"acelements.html#value_5","text":"It becomes a string of the value attribute of an HTML < input type = \"button\" > tag. The value will be displayed as a label of the button.","title":" value"},{"location":"acelements.html#uri","text":"A uri specifies the URI to send form data when the button declared by AutoConnectSubmit is clicked. The query string of the form data sent with AutoConnectSubmit contains the URI of the page. Its parameter name is _acuri . In Sketch, you can know the called URI by referring to the _acuri parameter with the destination page handler. The actual query string is as follows: _acuri= CALLER_URI","title":" uri"},{"location":"acelements.html#autoconnecttext","text":"AutoConnectText generates an HTML < div > tag. A style attribute will be attached if a style parameter is passed. Sample AutoConnectText text(\"text\", \"Publishing the WiFi signal strength to MQTT channel. RSSI value of ESP8266 to the channel created on ThingSpeak\", \"font-family:serif;color:#4682b4;\"); On the page:","title":"AutoConnectText"},{"location":"acelements.html#constructor_8","text":"AutoConnectText( const char * name, const char * value, const char * style, const char * format)","title":" Constructor"},{"location":"acelements.html#name_8","text":"A name does not exist in the generated HTML. It provides only a means of accessing elements with the sketches.","title":" name"},{"location":"acelements.html#value_6","text":"It becomes content and also can contain the native HTML code, but remember that your written code is enclosed by the div tag.","title":" value"},{"location":"acelements.html#style","text":"A style specifies the qualification style to give to the content and can use the style attribute format as it is.","title":" style"},{"location":"acelements.html#format","text":"A format is a pointer to a null-terminated multibyte string specifying how to interpret the value. It specifies the conversion format when outputting values. The format string conforms to C-style printf library functions, but depends on the espressif sdk implementation. The conversion specification is valid only in %s format. (Left and Right justification, width are also valid.)","title":" format"},{"location":"acelements.html#how-to-coding-for-the-elements","text":"","title":"How to coding for the elements"},{"location":"acelements.html#declaration-for-the-elements-in-sketches","text":"Variables of each AutoConnetElement can be declared with macros. By using the macros, you can treat element name that is String type as variable in sketches. 2 ACElement ( name [ , value ] ) ACButton ( name [ , value ] [ , action ] ) ACCheckbox ( name [ , value ] [ , label ] [ , true | false ] ) ACFile ( name [ , value ] [ , label ] [ , AC_File_FS | AC_File_SD | AC_File_Extern ] ) ACInput ( name [ , value ] [ , label ] [ , pattern ] [ , placeholder ] ) ACRadio ( name [ , values ] [ , label ] [ , AC_Horizontal | AC_Vertical ] [ , checked ] ) ACSelect ( name [ , options ] [ , label ] ) ACSubmit ( name [ , value ] [ , uri ] ) ACText ( name [ , value ] [ , style ] [ , format ] ) Declaration macro usage For example, AutoConnectText can be declared using macros. AutoConnectText caption( \"caption\" , \"hello, world\" , \"color:blue;\" ) equals by using ACText macro. ACText(caption, \"hello, world\" , \"color:blue;\" )","title":" Declaration for the elements in Sketches"},{"location":"acelements.html#variant-for-autoconnectelements","text":"Some AutoConnectAux APIs specify AutoConnectElements as an argument. There are also functions that return a pointer to AutoConnectElements. AutoConnectElement behaves as a variant type of each element class to make these interfaces a single. Use reinterpret_cast to cast from a variant pointer to an Actual type pointer of AutoConnectElements. AutoConnectAux aux; ACText(Text1, \"hello, world\" ); aux.add(Text1); AutoConnectText * text_p = reinterpret_cast < AutoConnectText *> (aux.getElement( \"Text1\" )); AutoConnectText & text = aux.getElement < AutoConnectText > ( \"Text1\" ); JavaScript can be inserted into a custom Web page using AutoConnectElement. \u21a9 The square brackets in the syntax are optional parameters, the stroke is a selection parameter, the bold fonts are literal. \u21a9","title":" Variant for AutoConnectElements"},{"location":"achandling.html","text":"Page, Container, Component \u00b6 AutoConnectAux is the container for a custom Web page, AutoConnectElement is the component of a page. AutoConnectElements must be contained in AutoConnectAux object. (ie. they are the elements displayed on the custom Web page.) Then AutoConnect makes an AutoConnectAux to a page. AutoConnectElements declared in sketch must be programmed to add to AutoConnectAux one after another. Elements are automatically included in AutoConnectAux by AutoConnect if you load it from the JSON document. In either method, it is common to use the function of AutoConnectAux to access an element with a sketch. Handing AutoConnectElements with the sketches \u00b6 The AutoConnectAux class has several functions to manipulate AutoConnectElements. The functions can add, delete, retrieve elements, and get and set values. Add AutoConnectElements to the AutoConnectAux object \u00b6 To add AutoConnectElment(s) to an AutoConnectAux object, use the add function. void AutoConnectAux :: add(AutoConenctElement & addon) void AutoConnectAux :: add(AutoConenctElementVT addons) The add function adds the specified AutoConnectElement to AutoConnectAux. The AutoConnectElementVT type is the std::vector of the reference wrapper to AutoConnectElements, and you can add these elements in bulk by using the list initialization with the sketch. typedef std :: vector < std :: reference_wrapper < AutoConnectElement >> AutoConnectElementVT; AutoConnectElements contained in AutoConnectAux object are uniquely identified by name. When adding an AutoConnectElement, if an element with the same name already exists in the AutoConnectAux, checking the type, and if it is the same, the value will be replaced. If another type of AutoConnectElement exists with the same name, that add operation will be invalid. 1 In the following example, AutoConnectButton button addition will invalid because hello with the same name already exists as AutoConnectText. AutoConnectAux aux; AutoConnectText text ( \"hello\" , \"hello, world\" ); AutoConnectButton button ( \"hello\" , \"hello, world\" , \"alert('Hello world!')\") ; // This is invalid. aux.add({ text, button }); Similarly this, the uniqueness of the name is also necessary within the JSON document { \"name\" : \"aux\" , \"uri\" : \"/aux\" , \"menu\" : true , \"element\" : [ { \"name\" : \"hello\" , \"type\" : \"ACText\" , \"value\" : \"hello, world\" }, { \"name\" : \"hello\" , \"type\" : \"ACButton\" , \"value\" : \"hello, world\" , \"action\" : \"alert('Hello world!')\" } ] } Load all elements from JSON document If you load all AutoConnectElements from JSON document into AutoConnect, you do not need to sketch the population process of the AutoConnectElements. It is managed by the AutoConnect library automatically. Get AutoConnectElement from the AutoConnectAux \u00b6 To retrieve an element from AutoConnectAux, use the getElement or getElements function. Normally, the getElement is needed when accessing the value of AutoConnectElement in the sketch. AutoConnectElement * AutoConnectAux :: getElement( const String & name) T & AutoConenctAux :: getElement < T > ( const String & name) AutoConnectElementVT * AutoConnectAux :: getElements( void ) The getElement function returns an AutoConnectElement with the specified name as a key. When you use this function, you need to know the type of AutoConnectElement in advance and specify its type <T> to an argument of the getElement. A type of <T> can be specified as follows. AutoConnectButton & AutoConnectAux :: getElement < AutoConnectButton > ( const String & name) AutoConnectCheckbox & AutoConnectAux :: getElement < AutoConnectCheckbox > ( const String & name) AutoConnectElement & AutoConnectAux :: getElement < AutoConnectElement > ( const String & name) AutoConnectFile & AutoConnectAux :: getElement < AutoConnectFile > ( const String & name) AutoConnectInput & AutoConnectAux :: getElement < AutoConnectInput > ( const String & name) AutoConnectRadio & AutoConnectAux :: getElement < AutoConnectRadio > ( const String & name) AutoConnectSelect & AutoConnectAux :: getElement < AutoConnectSelect > ( const String & name) AutoConnectSubmit & AutoConnectAux :: getElement < AutoConnectSubmit > ( const String & name) AutoConnectText & AutoConnectAux :: getElement < AutoConnectText > ( const String & name) To retrieve an AutoConnectElement by specifying its type, use the following method. AutoConnectAux aux; aux.load( \"SOME_JSON_DOCUMENT\" ); // Retrieve the pointer of the AutoConnectText AutoConnectText * text = reinterpret_cast < AutoConnectText *> (aux.getElement( \"TEXT_ELEMENT_NAME\" )); // Retrieve the reference of the AutoConnectText AutoConnectText & text = aux.getElement < AutoConnectText > ( \"TEXT_ELEMENT_NAME\" ); The AutoConnectElement type behaves as a variant of other element types. Therefore use cast or template to convert to actual type as above. In the sketch, you access the real type of AutoConnectElement after casting it and storing into the variable. const String auxJson = String( \"{ \\\" title \\\" : \\\" Page 1 title \\\" , \\\" uri \\\" : \\\" /page1 \\\" , \\\" menu \\\" :true, \\\" element \\\" :[{ \\\" name \\\" : \\\" caption \\\" , \\\" type \\\" : \\\" ACText \\\" , \\\" value \\\" : \\\" hello, world \\\" }]}\" ); AutoConenct portal; portal.load(auxJson); AutoConnectAux * aux = portal.aux( \"/page1\" ); // Identify the AutoConnectAux instance with uri AutoConenctText & text = aux -> getElement < AutoConnectText > ( \"caption\" ); // Cast to real type and access members Serial.println(text.value); You can also use the operator [] of AutoConnectAux as another way to get the desired element. An operator [] is a shortcut for getElement function with the reference casting and makes simplify the sketch code and treats like an array with the elements placed on a custom Web page. Its argument is the name of the element to be acquired similarly to getElement function. In the sketch, by combining the AutoConnectElement::as<T> function with the operator [] , you can access the AutoConnectElements reference according to its actual type. For example, the following sketch code returns the same as a reference of AutoConnectText element as the caption . AutoConnect portal; portal.load(auxJson); AutoConnectAux & aux = * portal.aux( \"/page1\" ); AutoConnectText & text1 = aux.getElement < AutoConnectElement > ( \"caption\" ); AutoConnectText & text2 = aux[ \"caption\" ].as < AutoConnectText > (); Need cast to convert to the actual type An operator [] returns a reference of an AutoConnectElement. It is necessary to convert the type according to the actual element type with AutoConnectElement::as<T> function. AutoConnectButton & AutoConnectElement :: as < AutoConnectButton > () AutoConnectCheckbox & AutoConnectElement :: as < AutoConnectCheckbox > () AutoConnectElement & AutoConnectElement :: as < AutoConnectElement > () AutoConnectFile & AutoConnectElement :: as < AutoConnectFile > () AutoConnectInput & AutoConnectElement :: as < AutoConnectInput > () AutoConnectRadio & AutoConnectElement :: as < AutoConnectRadio > () AutoConnectSelect & AutoConnectElement :: as < AutoConnectSelect > () AutoConnectSubmit & AutoConnectElement :: as < AutoConnectSubmit > () AutoConnectText & AutoConnectElement :: as < AutoConnectText > () To get all the AutoConnectElements in an AutoConnectAux object use the getElements function. This function returns the vector of the reference wrapper as AutoConnectElementVT to all AutoConnectElements registered in the AutoConnectAux. AutoConnectElementVT & AutoConnectAux :: getElements( void ) Enable AutoConnectElements during the sketch execution \u00b6 AutoConnectElemets have an enable attribute to activate its own HTML generation. Sketches can change the HTMLization of their elements dynamically by setting or resetting the enable value. An element whose the enable attribute is true will generate itself HTML and place on the custom Web page. And conversely, it will not generate the HTML when the value is false. For example, to enable the submit button only when the ESP module is connected to the access point in STA mode, you can sketch the following: #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <AutoConnect.h> static const char AUX[] PROGMEM = R\"( { \"uri\" : \"/aux\", \"title\" : \"Aux.\", \"menu\" : true, \"element\" : [ { \"name\": \"input\", \"type\": \"ACInput\", \"label\": \"Input\" }, { \"name\": \"send\", \"type\": \"ACSubmit\", \"value\": \"SEND\", \"uri\": \"/send\" } ] } )\" ; AutoConnect portal; AutoConnectAux page; String onPage (AutoConnectAux & aux, PageArgument & args) { AutoConnectSubmit & send = aux[ \"send\" ].as < AutoConnectSubmit > (); if (WiFi.isConnected()) send.enable = (WiFi.getMode() == WIFI_STA); else send.enable = false; return String(); } void setup () { page.load(AUX); page.on(onPage); portal.join(page); portal.begin(); } void loop () { portal.handleClient(); } Desirable to set or reset the enable attribute in the page handler The enable attribute can be set at any time during the sketch execution. The page handler with the AC_EXIT_AHEAD option is sure to handle it. Loading & saving AutoConnectElements with JSON \u00b6 AutoConnect supports reading the custom Web page definitions written in JSON and also supports loading and saving of AutoConnectAux or AutoConnectElements. In both cases, the target object is a JSON document for AutoConnect . However, it can not save all AutoConnectElements contained in the page as a custom Web page. (ie. AutoConnectAux) Loading AutoConnectAux & AutoConnectElements with JSON \u00b6 To load a JSON document as AutoConnectAux use the AutoConnect::load function and load the JSON document of each AutoConnectElement using the AutoConnectAux::loadElement function. Although the functions of both are similar, the structure of the target JSON document is different. The AutoConnect::load function loads the entire AutoConnectAux and creates both the AutoConnectAux instance and each AutoConnectElement instance. A single JSON document can contain multiple custom Web pages. If you write JSON of AutoConnectAux as an array, the load function generates all the pages contained in that array. Therefore, it is necessary to supply the JSON document of AutoConnectAux as an input of the load function and must contain the elements described section JSON document structure for AutoConnectAux . The AutoConnectAux::loadElement function loads the elements individually into an AutoConnectAux object. The structure of its supplying JSON document is not AutoConnectAux. It must be a JSON structure for AutoConnectElement , but you can specify an array. // AutoConnectAux as a custom Web page. const char page[] PROGMEM = R\"raw( { \"title\": \"Settings\", \"uri\": \"/settings\", \"menu\": true, \"element\": [ { \"name\": \"server\", \"type\": \"ACInput\", \"label\": \"Server\" }, { \"name\": \"set\", \"type\": \"ACSubmit\", \"value\": \"SET\", \"uri\" : \"/set\" } ] } )raw\" ; // Additional AutoConnectElements. const char addons[] PROGMEM = R\"raw( [ { \"name\": \"notes\", \"type\": \"ACText\", \"value\": \"An update period as the below optionally.\" }, { \"name\": \"period\", \"type\": \"ACRadio\", \"value\": [ \"30 sec.\", \"60 sec.\", \"180 sec.\" ], \"arrange\": \"vertical\", \"checked\": 1 } ] )raw\" ; AutoConnect portal; AutoConnectAux * auxPage; // Load a custom Web page. portal.load(page); // Get a '/settings' page auxPage = portal.aux( \"/settings\" ); // Also, load only AutoConnectRadio named the period. auxPage -> loadElement(addons, \"period\" ); // Retrieve a server name from an AutoConnectText value. AutoConnectText & serverName = auxPage -> getElement < AutoConnectText > ( \"server\" ); Serial.println(serverName.value); Saving AutoConnectElements with JSON \u00b6 To save the AutoConnectAux or the AutoConnectElement as a JSON document, use the AutoConnectAux::saveElement function. It serializes the contents of the object based on the type of the AutoConnectElement. You can persist a serialized AutoConnectElements as a JSON document to a stream. // Open a parameter file on the SPIFFS. SPIFFS.begin(); FILE param = SPIFFS.open( \"/param\" , \"w\" ); // Save elements as the parameters. auxPage -> saveElement(param, { \"server\" , \"period\" }); // Close a parameter file. param.close(); SPIFFS.end(); The example above saves server and period elements from the AutoConnectAux object as mentioned above to the /param file on SPIFFS. Its JSON document of AutoConnectElements saved by its code looks like this: [ { \"name\" : \"server\" , \"type\" : \"ACInput\" , \"value\" : \"An inputted server name\" , \"label\" : \"Server\" , \"placeholder\" : \"\" }, { \"name\" : \"period\" , \"type\" : \"ACRadio\" , \"value\" : [ \"30 sec.\" , \"60 sec.\" , \"180 sec.\" ], \"arrange\" : \"vertical\" , \"checked\" : 2 } ] Above JSON document can be loaded as it is into a custom Web page using the loadElement function. The loadElement function also loads the value of the element, so the saved value can be restored on the custom Web page. Custom field data handling \u00b6 A sketch can access variables of AutoConnectElements in the custom Web page. The value entered into the AutoConnectElements on the page is stored in the member variable of each element by AutoConnect whenever GET/POST transmission occurs. The following diagram shows the flow of the input values of a custom Web page into a sketch and is the basis for actions to manipulate the values of custom Web pages using sketches. Where to pick up the values \u00b6 A sketch composed of handlers can receive the value of AutoConnectElements entered in a custom Web page after sending, but that handler is different from the page where the value was entered. It is necessary to be aware that can accept the entered values by the next page handler after the transition. Usually, two ways to retrieve entered values we have. One is to use the ESP8266WebServer::arg (or WebServer::arg for ESP32) function in the on handler attached by ESP8266WebServer (WebServer w/ESP32 also). #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <AutoConnect.h> static const char addonJson[] PROGMEM = R\"raw( { \"title\": \"Hello\", \"uri\": \"/hello\", \"menu\": true, \"element\": [ { \"name\": \"feels\", \"type\": \"ACInput\", \"label\": \"What's up?\" }, { \"name\": \"send\", \"type\": \"ACSubmit\", \"value\": \"Just it!\", \"uri\": \"/feels\" } ] } )raw\" ; ESP8266WebServer webServer; AutoConnect portal (webServer); // Here, /feels handler void feelsOn () { // Retrieve the value of a input-box named \"feels\" String feel = webServer.arg( \"feels\" ); // Echo back the value String echo = \"<html><p style= \\\" color:blue;font-family:verdana;font-size:300%; \\\" >\" + feel + String( \" and a bold world!</p></html>\" ); webServer.send( 200 , \"text/html\" , echo); } void setup () { delay( 1000 ); webServer.on( \"/feels\" , feelsOn); // Register /feels handler portal.load(addonJson); // Load a custom Web page portal.begin(); } void loop () { portal.handleClient(); } An above example is the most simple sketch of handling values entered into a custom Web page. This sketch obtains the string entered in the AutoConnectInput named feels with the /feels handler after page transition, and the AutoConnectInput is an <input type=\"text\" name=\"feels\"> element wrapped in the form as the actual HTML code. Should be accessed /_ac first When you actually try the above sketch, there is no a root handler. So the URL that should be accessed first is /_ac concatenated with the local IP address of the esp8266 module. Another method is effective when custom Web pages have complicated page transitions. It is a way to straight access the AutoConnectElements member value. You can get the AutoConnectElement with the specified name using the getElement function. The following sketch executes the above example with AutoConnect only, without using the function of ESP8266WebServer. #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <AutoConnect.h> const static char addonJson[] PROGMEM = R\"raw( [ { \"title\": \"Hello\", \"uri\": \"/hello\", \"menu\": true, \"element\": [ { \"name\": \"feels\", \"type\": \"ACInput\", \"label\": \"What's up?\" }, { \"name\": \"send\", \"type\": \"ACSubmit\", \"value\": \"Just it!\", \"uri\": \"/feels\" } ] }, { \"title\": \"Hello\", \"uri\": \"/feels\", \"menu\": false, \"element\": [ { \"name\": \"echo\", \"type\": \"ACText\", \"style\": \"color:blue;font-family:verdana;font-size:300%;\" } ] } ] )raw\" ; AutoConnect portal; // Here, /feels handler String feelsOn (AutoConnectAux & aux, PageArgument & args) { // Get the AutoConnectInput named \"feels\". // The where() function returns an uri string of the AutoConnectAux that triggered this handler. AutoConnectAux * hello = portal.aux(portal.where()); AutoConnectInput & feels = hello -> getElement < AutoConnectInput > ( \"feels\" ); // Get the AutoConnectText named \"echo\". AutoConnectText & echo = aux.getElement < AutoConnectText > ( \"echo\" ); // Echo back from input-box to /feels page. echo.value = feels.value + String( \" and a bold world!\" ); return String( \"\" ); } void setup () { delay( 1000 ); portal.load(addonJson); // Load custom Web pages portal.on( \"/feels\" , feelsOn, AC_EXIT_AHEAD); // Register /feels handler portal.begin(); } void loop () { portal.handleClient(); } The above example handles in the handler for the values of a custom Web page. An AutoConnect::on function registers a handler for the AutoConnectAux page of the specified uri. The argument of the custom Web page handler is an AutoConnectAux of the page itself and the PageArgument object. To retrieve the values entered in a custom Web page you need to access the AutoConnectElement of the page that caused the request to this page and to do this, you use the AutoConnect::where function. The AutoConnect::where function returns an uri string of the AutoConnectAux object of the custom Web page that caused the HTTP request. The where() function is available for only AutoConnectAux. The AutoConnect::where function is available only for the AutoConnectAux object. It is invalid for HTTP requests from individual pages registered with the on handler of ESP8266WebServer/WebServer for ESP32. In other words, the AutoConnect::where function only returns the last AutoConnecAux page called. When setting the initial values \u00b6 An AutoConnectAux page is dynamically created by AutoConnect when its uri is requested. The initial value of AutoConnectElements can be set before its page request. It is also possible during loop() . To set the initial value when the page is accessed it needs by the handler of its page. The AutoConnect::on and AutoConnectAux::on functions register a handler for a custom Web page and also specify when to call that handler. The behavior of the two on functions is the same, only the class and arguments are different. bool AutoConnect :: on( const String & uri, const AuxHandlerFunctionT handler, AutoConnectExitOrder_t order) void AutoConnectAux :: on( const AuxHandlerFunctionT handler, const AutoConnectExitOrder_t order) Parameter uri specifies an URI of the custom Web page, but an AutoConnectAux object with its URI must be registered with AutoConnect via the AutoConnect::join function beforehand. AutoConnect::on/AutoConnectAux::on is not ESP8266WebServer::on The on function for AutoConnect is different from the on function of Arduino core ESP8266WebServer (WebServer for ESP32). You can share the same handler via wrapper, but access to AutoConnectElements is valid only for handlers registered with on function for AutoConnect . AuxHandlerFunctionT type is a handler declaration using with std::function . String handler(AutoConnectAux & aux, PageArgument & args) The handler of the custom Web page has two arguments by a reference of AutoConnectAux and a reference of PageArgument, it returns String. AutoConnect appends the string returned from the handler to the generated HTML. This allows you to add an HTML part before displaying the page. AutoConnectExitOrder_t specifies when the handler is called with the following enumeration value. AC_EXIT_AHEAD : Called before AutoConnect generates the HTML of the page. You set the value of AutoConnectElements in the handler then its value will be displayed on the page. AC_EXIT_LATER : Called after AutoConnect generates the HTML of the page. You can append to HTML generated by AutoConnect. AC_EXIT_BOTH : Called even before generating HTML and after generated. The following example is a part of sketch contained the handlers. // AutoConnect object declarations ACInput(input1); AutoConnectAux aux ( \"/aux\" , { input1 }); AutoConnect portal; // Pre-declare handlers String initialize (AutoConnectAux & , PageArgument & ); String append (AutoConnectAux & , PageArgument & ); // Register handlers and launch the portal. aux.on(initialize, AC_AHEAD); aux.on(append, AC_LATER); portal.join(aux); portal.begin(); // Some code here... // The handler called before HTML generating String initialize (AutoConnectAux & aux, PageArgument & args) { AutoConnectInput & input1 = aux.getElement < AutoConnectInput > ( \"input1\" ); // Set initial value for the input box in a custom Web page. input1.value = \"Initial value\" ; // Nothing appendix for a generated HTML. return String(); } // The handler called after HTML generated String append (AutoConnectAux & aux, PageArgument & args) { // Append an HTML return String( \"<p>This text has been added.</p>\" ); } How you can reach the values \u00b6 AutoConnectSubmit uses the POST method to send HTTP requests. A value of AutoConnectInput sent to the ESP8266 or ESP32 with POST is stored in the request body of the HTTP request: POST /feels HTTP/1.1 Host: ESP8266_IP_ADDRESS name1=value1&name2=value2&name3=value3 ESP8266WebServer class will parse the query string and rebuilds its arguments when the above request arrives. A custom page handler registered with the ESP8266WebServer::on function can access the value of AutoConnectElements with ESP8266WebServe::arg function. It reaches the values of AutoConnectElements without the intermediation of AutoConnect. Therefore, its handler will not be AutoConnectAux and can send a response to the client directly. The following example is part of a server sketch which has two web pages. The /hello page is a custom Web page of AutoConnectAux which has an input box named \"input1\". Another /echo page is a page handler for ESP8266WebServer, which uses the ESP8266WebServer::send function to echo back the value of an input1 as an http response. ESP8266WebServer server; AutoConnect portal (server); ACInput(input1, \"\" , \"INPUT\" ); ACSubmit(send, \"HELLO\" , \"/echo\" ); AutoConnectAux aux ( \"/hello\" , { input1, send }); server.on( \"/echo\" , []() { String echo = server.arg( \"input1\" ); Serial.println(echo); server.send( 200 , \"text/plain\" , echo); }); portal.join(aux); portal.begin(); Also, you can choose another way to access arguments without going through the ESP8266WebServer class. The PageArgument object of the custom Web page handler argument is a copy of the arg object of the ESP8266WebServer class. Either of these methods is a simple and easy way to access parameters in custom Web page handlers. However, if you need to access from outside of the handler to the value of AutoConnectElements, you need to accomplish it using with the AutoConnectAux::getElement function. The following sketch code replaces the above example with JSON and PageArgument, and its behaves is equivalent basically to the above sketch. const static char auxPage[] PROGMEM = R\"raw( [ { \"title\":\"Hello\", \"uri\":\"/hello\", \"menu\":true, \"element\":[ { \"name\":\"input1\", \"type\": \"ACInput\", \"label\": \"INPUT\" }, { \"name\":\"send\", \"type\":\"ACSubmit\", \"value\":\"HELLO\", \"uri\":\"/echo\" }] }, { \"title\":\"Echo\", \"uri\":\"/echo\", \"menu\":false, \"element\":[ { \"name\":\"echo\", \"type\":\"ACText\" }] } ] )raw\" ; AutoConnect portal; portal.load(auxPage); portal.on( \"/echo\" , [](AutoConnectAux & aux, PageArgument & args) { AutoConnectText & ac_echo = aux.getElement < AutoConnectText > ( \"echo\" ); ac_echo.value = args.arg( \"input1\" ); return String (); }); portal.begin(); Overwrite the AutoConnectElements \u00b6 Sketches can update the attributes of AutoConnectElements with two approaches. A one is to assign directly to the attributes of a member variable of its element. The other is to overwrite them with loading the element by AutoConnectAux::loadElement . The elements for attributes described in the JSON document for AutoConnectElements overwrites the member variables of the target AutoConnectElements. However, AutoConnectAux::loadElement keeps the member variables unchanged if there is no element in the JSON document. This overwriting behavior is the same for the AutoConnect::load function. For example, the combination of the sketch and JSON document as follows updates only the style while keeping Caption (ie. \"Hello, world\") as AutoConnectText value. External JSON document for the below sketch to modify the text style. { \"name\" : \"Caption\" , \"type\" : \"ACText\" , \"style\" : \"text-align:center;font-size:24px;font-family:'Impact','Futura',sans-serif;color:tomato;\" } The sketch (a part of code), load above JSON. ACText(Caption, \"Hello, world\" ); AutoConnectAux helloPage ( \"/hello\" , \"Hello\" , true, { Caption }); AutoConnect portal; String onHello (AutoConnectAux & aux, PageArgument & args) { aux.loadElement(JSON); return String(); } void setup () { helloPage.on(onHello); portal.join(helloPage); portal.begin(); } void loop () { portal.handleClient(); } It's shown as like: Check data against on submission \u00b6 By giving a pattern to AutoConnectInput , you can find errors in data styles while typing in custom Web pages. The pattern is specified by regular expression . 2 If the value during input of AutoConnectInput does not match the regular expression specified in the pattern, its background color changes to pink. The following example shows the behavior when checking the IP address in the AutoConnectInput field. { \"title\" : \"Page-1\" , \"uri\" : \"/page1\" , \"menu\" : true , \"element\" : [ { \"name\" : \"Server\" , \"type\" : \"ACInput\" , \"label\" : \"Server address\" , \"pattern\" : \"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$\" } ] } If you are not familiar with regular expressions, you may feel that description very strange. And matter of fact, it is a strange description for those unfamiliar with formal languages. If your regular expression can not interpret the intended syntax and semantics, you can use an online tester. The regex101 is an exceptional online site for testing and debugging regular expressions. Validate input data \u00b6 The pattern attribute of AutoConnectInput only determines the data consistency on the web browser based on the given regular expression. In order to guarantee the validity of input data, it is necessary to verify it before actually using it. You can validate input data from AutoConnectInput using the isValid function before actually processing it. The isValid function determines whether the value currently stored in AutoConnectInput matches the pattern . Convert data to actually type \u00b6 The values in the AutoConnectElements field of the custom Web page are all typed as String. A sketch needs to be converted to an actual data type if the data type required for sketch processing is not a String type. For the typical data type conversion method, refer to section Tips for data conversion . Transitions of the custom Web pages \u00b6 Scope & Lifetime of AutoConnectAux \u00b6 AutoConnectAux and AutoConnectElements must live while the custom Web pages are available. The implementation of the custom Web page inherits from requestHandler driven from ESP8266WebServer (WebServer for ESP32), so the instance of AutoConnectAux and AutoConnectElements must exist for the duration of effect of handleClient. The following example is incorrect for manipulating custom Web pages. Its AutoConnectAux instance will be destructed at the exit of the setup(). #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <AutoConnect.h> static const auxPage[] PROGMEM = R\"raw( { \"title\": \"Page-1\", \"uri\": \"/page1\", \"menu\": true, \"element\": [ { \"name\":\"Server\", \"type\":\"ACText\", \"label\":\"Server address\" } ] } )raw\" ; AutoConnect portal; void setup () { // This declaration is wrong. AutoConnectAux aux; aux.load(auxPage); portal.join(aux); portal.begin(); } void loop () { portal.handleClient(); } The URI of the custom Web pages \u00b6 The transition of the custom Web page follows the URI of the page, but the ESP8266WebServer class does not know the URI of an AutoConnectAux page. (Registering a custom Web page does not use the ESP8266WebServer::on / WebServer::on function.) Therefore ESP8266WebServer class does not detect its URI access. If you want to detect an http request to AutoConnectAux's custom Web page, you need to register its URI with the AutoConnectAux::on function. In addition to this, there are restrictions in the handler for the custom Web page as shown in the following section. Limitations \u00b6 The custom Web pages handler has the following limitations. Do not send HTTP responses from the handler. If the handler returns its own response, the custom Web page will be lost. Use AutoConnectSubmit whenever possible. AutoConnect will hold the values of a custom Web Page is sent by AutoConnectSubmit. Can not handle the custom Web pages during a connection is not established yet. During the connection attempt, the web browser of the client will send a probe for a captive portal. Its request will cause unintended custom Web page transitions. Can not place URI of the custom Web pages to AUTOCONNECT_URI. AutoConnect will not work if you place a custom Web page to AUTOCONNECT_URI . Can not use the element named SUBMIT . You can not use 'SUBMIT' as the element name of AutoConnectElements in a custom Web page that declares the AutoConnectSubmit element. (Case sensitive ignored) AutoConnect does not rely on the input type=submit element for the form submission and uses HTML form element submit function instead. So, the submit function will fail if there is an element named 'submit' in the form. Do not handle for the same page Do not duplicate AutoConnect::on with ESP8266WebServer::on (also WebServer::on) for the same custom web page. window.onload = function() { Gifffer(); }; The valid scope of the name is within an AutoConnectAux. \u21a9 Regular expression specification as a pattern of AutoConnectInput is JavaScript compliant . \u21a9","title":"Handling the custom Web pages"},{"location":"achandling.html#page-container-component","text":"AutoConnectAux is the container for a custom Web page, AutoConnectElement is the component of a page. AutoConnectElements must be contained in AutoConnectAux object. (ie. they are the elements displayed on the custom Web page.) Then AutoConnect makes an AutoConnectAux to a page. AutoConnectElements declared in sketch must be programmed to add to AutoConnectAux one after another. Elements are automatically included in AutoConnectAux by AutoConnect if you load it from the JSON document. In either method, it is common to use the function of AutoConnectAux to access an element with a sketch.","title":"Page, Container, Component"},{"location":"achandling.html#handing-autoconnectelements-with-the-sketches","text":"The AutoConnectAux class has several functions to manipulate AutoConnectElements. The functions can add, delete, retrieve elements, and get and set values.","title":"Handing AutoConnectElements with the sketches"},{"location":"achandling.html#add-autoconnectelements-to-the-autoconnectaux-object","text":"To add AutoConnectElment(s) to an AutoConnectAux object, use the add function. void AutoConnectAux :: add(AutoConenctElement & addon) void AutoConnectAux :: add(AutoConenctElementVT addons) The add function adds the specified AutoConnectElement to AutoConnectAux. The AutoConnectElementVT type is the std::vector of the reference wrapper to AutoConnectElements, and you can add these elements in bulk by using the list initialization with the sketch. typedef std :: vector < std :: reference_wrapper < AutoConnectElement >> AutoConnectElementVT; AutoConnectElements contained in AutoConnectAux object are uniquely identified by name. When adding an AutoConnectElement, if an element with the same name already exists in the AutoConnectAux, checking the type, and if it is the same, the value will be replaced. If another type of AutoConnectElement exists with the same name, that add operation will be invalid. 1 In the following example, AutoConnectButton button addition will invalid because hello with the same name already exists as AutoConnectText. AutoConnectAux aux; AutoConnectText text ( \"hello\" , \"hello, world\" ); AutoConnectButton button ( \"hello\" , \"hello, world\" , \"alert('Hello world!')\") ; // This is invalid. aux.add({ text, button }); Similarly this, the uniqueness of the name is also necessary within the JSON document { \"name\" : \"aux\" , \"uri\" : \"/aux\" , \"menu\" : true , \"element\" : [ { \"name\" : \"hello\" , \"type\" : \"ACText\" , \"value\" : \"hello, world\" }, { \"name\" : \"hello\" , \"type\" : \"ACButton\" , \"value\" : \"hello, world\" , \"action\" : \"alert('Hello world!')\" } ] } Load all elements from JSON document If you load all AutoConnectElements from JSON document into AutoConnect, you do not need to sketch the population process of the AutoConnectElements. It is managed by the AutoConnect library automatically.","title":" Add AutoConnectElements to the AutoConnectAux object"},{"location":"achandling.html#get-autoconnectelement-from-the-autoconnectaux","text":"To retrieve an element from AutoConnectAux, use the getElement or getElements function. Normally, the getElement is needed when accessing the value of AutoConnectElement in the sketch. AutoConnectElement * AutoConnectAux :: getElement( const String & name) T & AutoConenctAux :: getElement < T > ( const String & name) AutoConnectElementVT * AutoConnectAux :: getElements( void ) The getElement function returns an AutoConnectElement with the specified name as a key. When you use this function, you need to know the type of AutoConnectElement in advance and specify its type <T> to an argument of the getElement. A type of <T> can be specified as follows. AutoConnectButton & AutoConnectAux :: getElement < AutoConnectButton > ( const String & name) AutoConnectCheckbox & AutoConnectAux :: getElement < AutoConnectCheckbox > ( const String & name) AutoConnectElement & AutoConnectAux :: getElement < AutoConnectElement > ( const String & name) AutoConnectFile & AutoConnectAux :: getElement < AutoConnectFile > ( const String & name) AutoConnectInput & AutoConnectAux :: getElement < AutoConnectInput > ( const String & name) AutoConnectRadio & AutoConnectAux :: getElement < AutoConnectRadio > ( const String & name) AutoConnectSelect & AutoConnectAux :: getElement < AutoConnectSelect > ( const String & name) AutoConnectSubmit & AutoConnectAux :: getElement < AutoConnectSubmit > ( const String & name) AutoConnectText & AutoConnectAux :: getElement < AutoConnectText > ( const String & name) To retrieve an AutoConnectElement by specifying its type, use the following method. AutoConnectAux aux; aux.load( \"SOME_JSON_DOCUMENT\" ); // Retrieve the pointer of the AutoConnectText AutoConnectText * text = reinterpret_cast < AutoConnectText *> (aux.getElement( \"TEXT_ELEMENT_NAME\" )); // Retrieve the reference of the AutoConnectText AutoConnectText & text = aux.getElement < AutoConnectText > ( \"TEXT_ELEMENT_NAME\" ); The AutoConnectElement type behaves as a variant of other element types. Therefore use cast or template to convert to actual type as above. In the sketch, you access the real type of AutoConnectElement after casting it and storing into the variable. const String auxJson = String( \"{ \\\" title \\\" : \\\" Page 1 title \\\" , \\\" uri \\\" : \\\" /page1 \\\" , \\\" menu \\\" :true, \\\" element \\\" :[{ \\\" name \\\" : \\\" caption \\\" , \\\" type \\\" : \\\" ACText \\\" , \\\" value \\\" : \\\" hello, world \\\" }]}\" ); AutoConenct portal; portal.load(auxJson); AutoConnectAux * aux = portal.aux( \"/page1\" ); // Identify the AutoConnectAux instance with uri AutoConenctText & text = aux -> getElement < AutoConnectText > ( \"caption\" ); // Cast to real type and access members Serial.println(text.value); You can also use the operator [] of AutoConnectAux as another way to get the desired element. An operator [] is a shortcut for getElement function with the reference casting and makes simplify the sketch code and treats like an array with the elements placed on a custom Web page. Its argument is the name of the element to be acquired similarly to getElement function. In the sketch, by combining the AutoConnectElement::as<T> function with the operator [] , you can access the AutoConnectElements reference according to its actual type. For example, the following sketch code returns the same as a reference of AutoConnectText element as the caption . AutoConnect portal; portal.load(auxJson); AutoConnectAux & aux = * portal.aux( \"/page1\" ); AutoConnectText & text1 = aux.getElement < AutoConnectElement > ( \"caption\" ); AutoConnectText & text2 = aux[ \"caption\" ].as < AutoConnectText > (); Need cast to convert to the actual type An operator [] returns a reference of an AutoConnectElement. It is necessary to convert the type according to the actual element type with AutoConnectElement::as<T> function. AutoConnectButton & AutoConnectElement :: as < AutoConnectButton > () AutoConnectCheckbox & AutoConnectElement :: as < AutoConnectCheckbox > () AutoConnectElement & AutoConnectElement :: as < AutoConnectElement > () AutoConnectFile & AutoConnectElement :: as < AutoConnectFile > () AutoConnectInput & AutoConnectElement :: as < AutoConnectInput > () AutoConnectRadio & AutoConnectElement :: as < AutoConnectRadio > () AutoConnectSelect & AutoConnectElement :: as < AutoConnectSelect > () AutoConnectSubmit & AutoConnectElement :: as < AutoConnectSubmit > () AutoConnectText & AutoConnectElement :: as < AutoConnectText > () To get all the AutoConnectElements in an AutoConnectAux object use the getElements function. This function returns the vector of the reference wrapper as AutoConnectElementVT to all AutoConnectElements registered in the AutoConnectAux. AutoConnectElementVT & AutoConnectAux :: getElements( void )","title":" Get AutoConnectElement from the AutoConnectAux"},{"location":"achandling.html#enable-autoconnectelements-during-the-sketch-execution","text":"AutoConnectElemets have an enable attribute to activate its own HTML generation. Sketches can change the HTMLization of their elements dynamically by setting or resetting the enable value. An element whose the enable attribute is true will generate itself HTML and place on the custom Web page. And conversely, it will not generate the HTML when the value is false. For example, to enable the submit button only when the ESP module is connected to the access point in STA mode, you can sketch the following: #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <AutoConnect.h> static const char AUX[] PROGMEM = R\"( { \"uri\" : \"/aux\", \"title\" : \"Aux.\", \"menu\" : true, \"element\" : [ { \"name\": \"input\", \"type\": \"ACInput\", \"label\": \"Input\" }, { \"name\": \"send\", \"type\": \"ACSubmit\", \"value\": \"SEND\", \"uri\": \"/send\" } ] } )\" ; AutoConnect portal; AutoConnectAux page; String onPage (AutoConnectAux & aux, PageArgument & args) { AutoConnectSubmit & send = aux[ \"send\" ].as < AutoConnectSubmit > (); if (WiFi.isConnected()) send.enable = (WiFi.getMode() == WIFI_STA); else send.enable = false; return String(); } void setup () { page.load(AUX); page.on(onPage); portal.join(page); portal.begin(); } void loop () { portal.handleClient(); } Desirable to set or reset the enable attribute in the page handler The enable attribute can be set at any time during the sketch execution. The page handler with the AC_EXIT_AHEAD option is sure to handle it.","title":" Enable AutoConnectElements during the sketch execution"},{"location":"achandling.html#loading-saving-autoconnectelements-with-json","text":"AutoConnect supports reading the custom Web page definitions written in JSON and also supports loading and saving of AutoConnectAux or AutoConnectElements. In both cases, the target object is a JSON document for AutoConnect . However, it can not save all AutoConnectElements contained in the page as a custom Web page. (ie. AutoConnectAux)","title":"Loading &amp; saving AutoConnectElements with JSON"},{"location":"achandling.html#loading-autoconnectaux-autoconnectelements-with-json","text":"To load a JSON document as AutoConnectAux use the AutoConnect::load function and load the JSON document of each AutoConnectElement using the AutoConnectAux::loadElement function. Although the functions of both are similar, the structure of the target JSON document is different. The AutoConnect::load function loads the entire AutoConnectAux and creates both the AutoConnectAux instance and each AutoConnectElement instance. A single JSON document can contain multiple custom Web pages. If you write JSON of AutoConnectAux as an array, the load function generates all the pages contained in that array. Therefore, it is necessary to supply the JSON document of AutoConnectAux as an input of the load function and must contain the elements described section JSON document structure for AutoConnectAux . The AutoConnectAux::loadElement function loads the elements individually into an AutoConnectAux object. The structure of its supplying JSON document is not AutoConnectAux. It must be a JSON structure for AutoConnectElement , but you can specify an array. // AutoConnectAux as a custom Web page. const char page[] PROGMEM = R\"raw( { \"title\": \"Settings\", \"uri\": \"/settings\", \"menu\": true, \"element\": [ { \"name\": \"server\", \"type\": \"ACInput\", \"label\": \"Server\" }, { \"name\": \"set\", \"type\": \"ACSubmit\", \"value\": \"SET\", \"uri\" : \"/set\" } ] } )raw\" ; // Additional AutoConnectElements. const char addons[] PROGMEM = R\"raw( [ { \"name\": \"notes\", \"type\": \"ACText\", \"value\": \"An update period as the below optionally.\" }, { \"name\": \"period\", \"type\": \"ACRadio\", \"value\": [ \"30 sec.\", \"60 sec.\", \"180 sec.\" ], \"arrange\": \"vertical\", \"checked\": 1 } ] )raw\" ; AutoConnect portal; AutoConnectAux * auxPage; // Load a custom Web page. portal.load(page); // Get a '/settings' page auxPage = portal.aux( \"/settings\" ); // Also, load only AutoConnectRadio named the period. auxPage -> loadElement(addons, \"period\" ); // Retrieve a server name from an AutoConnectText value. AutoConnectText & serverName = auxPage -> getElement < AutoConnectText > ( \"server\" ); Serial.println(serverName.value);","title":" Loading AutoConnectAux &amp; AutoConnectElements with JSON"},{"location":"achandling.html#saving-autoconnectelements-with-json","text":"To save the AutoConnectAux or the AutoConnectElement as a JSON document, use the AutoConnectAux::saveElement function. It serializes the contents of the object based on the type of the AutoConnectElement. You can persist a serialized AutoConnectElements as a JSON document to a stream. // Open a parameter file on the SPIFFS. SPIFFS.begin(); FILE param = SPIFFS.open( \"/param\" , \"w\" ); // Save elements as the parameters. auxPage -> saveElement(param, { \"server\" , \"period\" }); // Close a parameter file. param.close(); SPIFFS.end(); The example above saves server and period elements from the AutoConnectAux object as mentioned above to the /param file on SPIFFS. Its JSON document of AutoConnectElements saved by its code looks like this: [ { \"name\" : \"server\" , \"type\" : \"ACInput\" , \"value\" : \"An inputted server name\" , \"label\" : \"Server\" , \"placeholder\" : \"\" }, { \"name\" : \"period\" , \"type\" : \"ACRadio\" , \"value\" : [ \"30 sec.\" , \"60 sec.\" , \"180 sec.\" ], \"arrange\" : \"vertical\" , \"checked\" : 2 } ] Above JSON document can be loaded as it is into a custom Web page using the loadElement function. The loadElement function also loads the value of the element, so the saved value can be restored on the custom Web page.","title":" Saving AutoConnectElements with JSON"},{"location":"achandling.html#custom-field-data-handling","text":"A sketch can access variables of AutoConnectElements in the custom Web page. The value entered into the AutoConnectElements on the page is stored in the member variable of each element by AutoConnect whenever GET/POST transmission occurs. The following diagram shows the flow of the input values of a custom Web page into a sketch and is the basis for actions to manipulate the values of custom Web pages using sketches.","title":"Custom field data handling"},{"location":"achandling.html#where-to-pick-up-the-values","text":"A sketch composed of handlers can receive the value of AutoConnectElements entered in a custom Web page after sending, but that handler is different from the page where the value was entered. It is necessary to be aware that can accept the entered values by the next page handler after the transition. Usually, two ways to retrieve entered values we have. One is to use the ESP8266WebServer::arg (or WebServer::arg for ESP32) function in the on handler attached by ESP8266WebServer (WebServer w/ESP32 also). #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <AutoConnect.h> static const char addonJson[] PROGMEM = R\"raw( { \"title\": \"Hello\", \"uri\": \"/hello\", \"menu\": true, \"element\": [ { \"name\": \"feels\", \"type\": \"ACInput\", \"label\": \"What's up?\" }, { \"name\": \"send\", \"type\": \"ACSubmit\", \"value\": \"Just it!\", \"uri\": \"/feels\" } ] } )raw\" ; ESP8266WebServer webServer; AutoConnect portal (webServer); // Here, /feels handler void feelsOn () { // Retrieve the value of a input-box named \"feels\" String feel = webServer.arg( \"feels\" ); // Echo back the value String echo = \"<html><p style= \\\" color:blue;font-family:verdana;font-size:300%; \\\" >\" + feel + String( \" and a bold world!</p></html>\" ); webServer.send( 200 , \"text/html\" , echo); } void setup () { delay( 1000 ); webServer.on( \"/feels\" , feelsOn); // Register /feels handler portal.load(addonJson); // Load a custom Web page portal.begin(); } void loop () { portal.handleClient(); } An above example is the most simple sketch of handling values entered into a custom Web page. This sketch obtains the string entered in the AutoConnectInput named feels with the /feels handler after page transition, and the AutoConnectInput is an <input type=\"text\" name=\"feels\"> element wrapped in the form as the actual HTML code. Should be accessed /_ac first When you actually try the above sketch, there is no a root handler. So the URL that should be accessed first is /_ac concatenated with the local IP address of the esp8266 module. Another method is effective when custom Web pages have complicated page transitions. It is a way to straight access the AutoConnectElements member value. You can get the AutoConnectElement with the specified name using the getElement function. The following sketch executes the above example with AutoConnect only, without using the function of ESP8266WebServer. #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <AutoConnect.h> const static char addonJson[] PROGMEM = R\"raw( [ { \"title\": \"Hello\", \"uri\": \"/hello\", \"menu\": true, \"element\": [ { \"name\": \"feels\", \"type\": \"ACInput\", \"label\": \"What's up?\" }, { \"name\": \"send\", \"type\": \"ACSubmit\", \"value\": \"Just it!\", \"uri\": \"/feels\" } ] }, { \"title\": \"Hello\", \"uri\": \"/feels\", \"menu\": false, \"element\": [ { \"name\": \"echo\", \"type\": \"ACText\", \"style\": \"color:blue;font-family:verdana;font-size:300%;\" } ] } ] )raw\" ; AutoConnect portal; // Here, /feels handler String feelsOn (AutoConnectAux & aux, PageArgument & args) { // Get the AutoConnectInput named \"feels\". // The where() function returns an uri string of the AutoConnectAux that triggered this handler. AutoConnectAux * hello = portal.aux(portal.where()); AutoConnectInput & feels = hello -> getElement < AutoConnectInput > ( \"feels\" ); // Get the AutoConnectText named \"echo\". AutoConnectText & echo = aux.getElement < AutoConnectText > ( \"echo\" ); // Echo back from input-box to /feels page. echo.value = feels.value + String( \" and a bold world!\" ); return String( \"\" ); } void setup () { delay( 1000 ); portal.load(addonJson); // Load custom Web pages portal.on( \"/feels\" , feelsOn, AC_EXIT_AHEAD); // Register /feels handler portal.begin(); } void loop () { portal.handleClient(); } The above example handles in the handler for the values of a custom Web page. An AutoConnect::on function registers a handler for the AutoConnectAux page of the specified uri. The argument of the custom Web page handler is an AutoConnectAux of the page itself and the PageArgument object. To retrieve the values entered in a custom Web page you need to access the AutoConnectElement of the page that caused the request to this page and to do this, you use the AutoConnect::where function. The AutoConnect::where function returns an uri string of the AutoConnectAux object of the custom Web page that caused the HTTP request. The where() function is available for only AutoConnectAux. The AutoConnect::where function is available only for the AutoConnectAux object. It is invalid for HTTP requests from individual pages registered with the on handler of ESP8266WebServer/WebServer for ESP32. In other words, the AutoConnect::where function only returns the last AutoConnecAux page called.","title":" Where to pick up the values"},{"location":"achandling.html#when-setting-the-initial-values","text":"An AutoConnectAux page is dynamically created by AutoConnect when its uri is requested. The initial value of AutoConnectElements can be set before its page request. It is also possible during loop() . To set the initial value when the page is accessed it needs by the handler of its page. The AutoConnect::on and AutoConnectAux::on functions register a handler for a custom Web page and also specify when to call that handler. The behavior of the two on functions is the same, only the class and arguments are different. bool AutoConnect :: on( const String & uri, const AuxHandlerFunctionT handler, AutoConnectExitOrder_t order) void AutoConnectAux :: on( const AuxHandlerFunctionT handler, const AutoConnectExitOrder_t order) Parameter uri specifies an URI of the custom Web page, but an AutoConnectAux object with its URI must be registered with AutoConnect via the AutoConnect::join function beforehand. AutoConnect::on/AutoConnectAux::on is not ESP8266WebServer::on The on function for AutoConnect is different from the on function of Arduino core ESP8266WebServer (WebServer for ESP32). You can share the same handler via wrapper, but access to AutoConnectElements is valid only for handlers registered with on function for AutoConnect . AuxHandlerFunctionT type is a handler declaration using with std::function . String handler(AutoConnectAux & aux, PageArgument & args) The handler of the custom Web page has two arguments by a reference of AutoConnectAux and a reference of PageArgument, it returns String. AutoConnect appends the string returned from the handler to the generated HTML. This allows you to add an HTML part before displaying the page. AutoConnectExitOrder_t specifies when the handler is called with the following enumeration value. AC_EXIT_AHEAD : Called before AutoConnect generates the HTML of the page. You set the value of AutoConnectElements in the handler then its value will be displayed on the page. AC_EXIT_LATER : Called after AutoConnect generates the HTML of the page. You can append to HTML generated by AutoConnect. AC_EXIT_BOTH : Called even before generating HTML and after generated. The following example is a part of sketch contained the handlers. // AutoConnect object declarations ACInput(input1); AutoConnectAux aux ( \"/aux\" , { input1 }); AutoConnect portal; // Pre-declare handlers String initialize (AutoConnectAux & , PageArgument & ); String append (AutoConnectAux & , PageArgument & ); // Register handlers and launch the portal. aux.on(initialize, AC_AHEAD); aux.on(append, AC_LATER); portal.join(aux); portal.begin(); // Some code here... // The handler called before HTML generating String initialize (AutoConnectAux & aux, PageArgument & args) { AutoConnectInput & input1 = aux.getElement < AutoConnectInput > ( \"input1\" ); // Set initial value for the input box in a custom Web page. input1.value = \"Initial value\" ; // Nothing appendix for a generated HTML. return String(); } // The handler called after HTML generated String append (AutoConnectAux & aux, PageArgument & args) { // Append an HTML return String( \"<p>This text has been added.</p>\" ); }","title":" When setting the initial values"},{"location":"achandling.html#how-you-can-reach-the-values","text":"AutoConnectSubmit uses the POST method to send HTTP requests. A value of AutoConnectInput sent to the ESP8266 or ESP32 with POST is stored in the request body of the HTTP request: POST /feels HTTP/1.1 Host: ESP8266_IP_ADDRESS name1=value1&name2=value2&name3=value3 ESP8266WebServer class will parse the query string and rebuilds its arguments when the above request arrives. A custom page handler registered with the ESP8266WebServer::on function can access the value of AutoConnectElements with ESP8266WebServe::arg function. It reaches the values of AutoConnectElements without the intermediation of AutoConnect. Therefore, its handler will not be AutoConnectAux and can send a response to the client directly. The following example is part of a server sketch which has two web pages. The /hello page is a custom Web page of AutoConnectAux which has an input box named \"input1\". Another /echo page is a page handler for ESP8266WebServer, which uses the ESP8266WebServer::send function to echo back the value of an input1 as an http response. ESP8266WebServer server; AutoConnect portal (server); ACInput(input1, \"\" , \"INPUT\" ); ACSubmit(send, \"HELLO\" , \"/echo\" ); AutoConnectAux aux ( \"/hello\" , { input1, send }); server.on( \"/echo\" , []() { String echo = server.arg( \"input1\" ); Serial.println(echo); server.send( 200 , \"text/plain\" , echo); }); portal.join(aux); portal.begin(); Also, you can choose another way to access arguments without going through the ESP8266WebServer class. The PageArgument object of the custom Web page handler argument is a copy of the arg object of the ESP8266WebServer class. Either of these methods is a simple and easy way to access parameters in custom Web page handlers. However, if you need to access from outside of the handler to the value of AutoConnectElements, you need to accomplish it using with the AutoConnectAux::getElement function. The following sketch code replaces the above example with JSON and PageArgument, and its behaves is equivalent basically to the above sketch. const static char auxPage[] PROGMEM = R\"raw( [ { \"title\":\"Hello\", \"uri\":\"/hello\", \"menu\":true, \"element\":[ { \"name\":\"input1\", \"type\": \"ACInput\", \"label\": \"INPUT\" }, { \"name\":\"send\", \"type\":\"ACSubmit\", \"value\":\"HELLO\", \"uri\":\"/echo\" }] }, { \"title\":\"Echo\", \"uri\":\"/echo\", \"menu\":false, \"element\":[ { \"name\":\"echo\", \"type\":\"ACText\" }] } ] )raw\" ; AutoConnect portal; portal.load(auxPage); portal.on( \"/echo\" , [](AutoConnectAux & aux, PageArgument & args) { AutoConnectText & ac_echo = aux.getElement < AutoConnectText > ( \"echo\" ); ac_echo.value = args.arg( \"input1\" ); return String (); }); portal.begin();","title":" How you can reach the values"},{"location":"achandling.html#overwrite-the-autoconnectelements","text":"Sketches can update the attributes of AutoConnectElements with two approaches. A one is to assign directly to the attributes of a member variable of its element. The other is to overwrite them with loading the element by AutoConnectAux::loadElement . The elements for attributes described in the JSON document for AutoConnectElements overwrites the member variables of the target AutoConnectElements. However, AutoConnectAux::loadElement keeps the member variables unchanged if there is no element in the JSON document. This overwriting behavior is the same for the AutoConnect::load function. For example, the combination of the sketch and JSON document as follows updates only the style while keeping Caption (ie. \"Hello, world\") as AutoConnectText value. External JSON document for the below sketch to modify the text style. { \"name\" : \"Caption\" , \"type\" : \"ACText\" , \"style\" : \"text-align:center;font-size:24px;font-family:'Impact','Futura',sans-serif;color:tomato;\" } The sketch (a part of code), load above JSON. ACText(Caption, \"Hello, world\" ); AutoConnectAux helloPage ( \"/hello\" , \"Hello\" , true, { Caption }); AutoConnect portal; String onHello (AutoConnectAux & aux, PageArgument & args) { aux.loadElement(JSON); return String(); } void setup () { helloPage.on(onHello); portal.join(helloPage); portal.begin(); } void loop () { portal.handleClient(); } It's shown as like:","title":" Overwrite the AutoConnectElements"},{"location":"achandling.html#check-data-against-on-submission","text":"By giving a pattern to AutoConnectInput , you can find errors in data styles while typing in custom Web pages. The pattern is specified by regular expression . 2 If the value during input of AutoConnectInput does not match the regular expression specified in the pattern, its background color changes to pink. The following example shows the behavior when checking the IP address in the AutoConnectInput field. { \"title\" : \"Page-1\" , \"uri\" : \"/page1\" , \"menu\" : true , \"element\" : [ { \"name\" : \"Server\" , \"type\" : \"ACInput\" , \"label\" : \"Server address\" , \"pattern\" : \"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$\" } ] } If you are not familiar with regular expressions, you may feel that description very strange. And matter of fact, it is a strange description for those unfamiliar with formal languages. If your regular expression can not interpret the intended syntax and semantics, you can use an online tester. The regex101 is an exceptional online site for testing and debugging regular expressions.","title":" Check data against on submission"},{"location":"achandling.html#validate-input-data","text":"The pattern attribute of AutoConnectInput only determines the data consistency on the web browser based on the given regular expression. In order to guarantee the validity of input data, it is necessary to verify it before actually using it. You can validate input data from AutoConnectInput using the isValid function before actually processing it. The isValid function determines whether the value currently stored in AutoConnectInput matches the pattern .","title":" Validate input data"},{"location":"achandling.html#convert-data-to-actually-type","text":"The values in the AutoConnectElements field of the custom Web page are all typed as String. A sketch needs to be converted to an actual data type if the data type required for sketch processing is not a String type. For the typical data type conversion method, refer to section Tips for data conversion .","title":" Convert data to actually type"},{"location":"achandling.html#transitions-of-the-custom-web-pages","text":"","title":"Transitions of the custom Web pages"},{"location":"achandling.html#scope-lifetime-of-autoconnectaux","text":"AutoConnectAux and AutoConnectElements must live while the custom Web pages are available. The implementation of the custom Web page inherits from requestHandler driven from ESP8266WebServer (WebServer for ESP32), so the instance of AutoConnectAux and AutoConnectElements must exist for the duration of effect of handleClient. The following example is incorrect for manipulating custom Web pages. Its AutoConnectAux instance will be destructed at the exit of the setup(). #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <AutoConnect.h> static const auxPage[] PROGMEM = R\"raw( { \"title\": \"Page-1\", \"uri\": \"/page1\", \"menu\": true, \"element\": [ { \"name\":\"Server\", \"type\":\"ACText\", \"label\":\"Server address\" } ] } )raw\" ; AutoConnect portal; void setup () { // This declaration is wrong. AutoConnectAux aux; aux.load(auxPage); portal.join(aux); portal.begin(); } void loop () { portal.handleClient(); }","title":"Scope &amp; Lifetime of AutoConnectAux"},{"location":"achandling.html#the-uri-of-the-custom-web-pages","text":"The transition of the custom Web page follows the URI of the page, but the ESP8266WebServer class does not know the URI of an AutoConnectAux page. (Registering a custom Web page does not use the ESP8266WebServer::on / WebServer::on function.) Therefore ESP8266WebServer class does not detect its URI access. If you want to detect an http request to AutoConnectAux's custom Web page, you need to register its URI with the AutoConnectAux::on function. In addition to this, there are restrictions in the handler for the custom Web page as shown in the following section.","title":"The URI of the custom Web pages"},{"location":"achandling.html#limitations","text":"The custom Web pages handler has the following limitations. Do not send HTTP responses from the handler. If the handler returns its own response, the custom Web page will be lost. Use AutoConnectSubmit whenever possible. AutoConnect will hold the values of a custom Web Page is sent by AutoConnectSubmit. Can not handle the custom Web pages during a connection is not established yet. During the connection attempt, the web browser of the client will send a probe for a captive portal. Its request will cause unintended custom Web page transitions. Can not place URI of the custom Web pages to AUTOCONNECT_URI. AutoConnect will not work if you place a custom Web page to AUTOCONNECT_URI . Can not use the element named SUBMIT . You can not use 'SUBMIT' as the element name of AutoConnectElements in a custom Web page that declares the AutoConnectSubmit element. (Case sensitive ignored) AutoConnect does not rely on the input type=submit element for the form submission and uses HTML form element submit function instead. So, the submit function will fail if there is an element named 'submit' in the form. Do not handle for the same page Do not duplicate AutoConnect::on with ESP8266WebServer::on (also WebServer::on) for the same custom web page. window.onload = function() { Gifffer(); }; The valid scope of the name is within an AutoConnectAux. \u21a9 Regular expression specification as a pattern of AutoConnectInput is JavaScript compliant . \u21a9","title":"Limitations"},{"location":"acintro.html","text":"What it is \u00b6 AutoConnect can handle custom Web pages prepared by user sketches individually. Custom Web pages can be integrated into the AutoConnect menu and executed as menu items and can have input-output parameters and handle them. For example, you can program some sketches that publish messages by entering the URI or unique ID of the MQTT broker on a custom page. You do not need to code the processing to handle the web page. It retrieves the input parameters and passes to the MQTT broker connection API is only. How it works \u00b6 AutoConnect creates the custom Web pages dynamically at runtime. Sketch describes the custom Web pages using classes and APIs necessary for dynamic creation which are AutoConnectAux and the variant of AutoConnectElements . AutoConnectAux is an object dependent on AutoConnect, which provides an easy way to incorporate custom Web pages into AutoConnect like the one on the right figure. The elements make up a custom Web page are provided as an AutoConnectElement class. Furthermore, an input box, a check box, a submit button, etc. are implemented by classes derived from AutoConnectElement. AutoConnectAux is a container for AutoConnectElements. To make a custom Web page, create elements that make up the page and put it in the AutoConnectAux object. Joining its AutoConnectAux object to AutoConnect will integrate the custom Web page into the AutoConnect menu. The above figure shows a code sequence that declares AutoConnectElements and put in the AutoConnectAux container and integrates those into AutoConnect. It declares two text elements named header and caption , adds them to the AutoConnectAux object as aux , binds to an AutoConnect object named portal . This sequence is the basic procedure for creating custom Web pages with the sketch. The further explanation is available in section AutoConnectElements also. Custom Web pages in AutoConnect menu \u00b6 AutoConnect integrates custom Web page objects into menus as AutoConnectAux. The AutoConnectAux object contains URI and title as member variables and has an indicator to display in the AutoConnect menu. You give the title and URI of the custom Web page to the AutoConnectAux object with Sketch. Then the title of the custom Web page would be displayed in the AutoConnect menu as the left figure. 1 It is a hyperlink to a custom Web page which will be displayed tapped it. Multiple custom Web pages \u00b6 You can create multiple custom Web pages and specify pages that can be called from the menu. The following sketch shows a code sequence for integrating three custom Web pages into one and embedding them in a menu. In the above code, the third parameter of aux2 is false . The third parameter of the AutoConnectAux constructor is an indicator for whether it's shown to the AutoConnect menu. Right animation is an execution result of the above code. You will see that the menu applies only two items for three custom Web pages. The sketch of this animation is written to transition to aux2 by the utility of the AutoConnectSubmit element owned by aux1 . 2 The aux2 page transitions only from the aux1 page. As shown in mqttRSSI in the library example, its page replies the saving result for the parameters entered on the previous page. It can not be invoked directly from the menu and want to hide them with AutoConnect menu items. The utility of the third parameter of the AutoConnectAux constructor is that. Basic steps to use custom Web pages \u00b6 So, the basic procedure for handling of the custom Web pages is as follows: Create or define AutoConnectAux . Create or define AutoConnectElement(s) . Add AutoConnectElement(s) to AutoConnectAux. Create more AutoConnectAux containing AutoConnectElement(s) , if necessary. Register the request handlers for the custom Web pages. Join prepared AutoConnectAux(s) to AutoConnect. Invoke AutoConnect::begin() . Perform AutoConnect::handleClient() . Write the custom Web page with JSON \u00b6 You can write the custom Web page in JSON without using sketch codes. 3 It is possible to describe the entire page in JSON and can be described for each element also. The JSON document can be saved in SPIFFS or SD and read using AutoConnect's load function. you can reduce the steps of the basic procedure with this approach, but this way consumes a lot of memory. The following JSON code and sketch will execute the custom Web page as an example in the above figure. That is, the sketch of this code and footnote 2 is equivalent. custom_page.json [ { \"title\" : \"MQTT Setting\" , \"uri\" : \"/mqtt_setting\" , \"menu\" : true , \"element\" : [ { \"name\" : \"header\" , \"type\" : \"ACText\" , \"value\" : \"MQTT broker settings\" }, { \"name\" : \"caption1\" , \"type\" : \"ACText\" , \"value\" : \"Publishing the WiFi...\" }, { \"name\" : \"save\" , \"type\" : \"ACSubmit\" , \"value\" : \"SAVE\" , \"uri\" : \"/mqtt_save\" } ] }, { \"title\" : \"MQTT Setting\" , \"uri\" : \"/mqtt_save\" , \"menu\" : false , \"element\" : [ { \"name\" : \"caption2\" , \"type\" : \"ACText\" , \"value\" : \"Save parameters\" }, { \"name\" : \"start\" , \"type\" : \"ACSubmit\" , \"value\" : \"START\" , \"uri\" : \"/mqtt_start\" } ] }, { \"title\" : \"MQTT Start\" , \"uri\" : \"/mqtt_start\" , \"menu\" : true , \"element\" : [] } ] The sketch #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <FS.h> #include <AutoConnect.h> AutoConnect portal; void setup () { SPIFFS.begin(); File page = SPIFFS.open( \"/custom_page.json\" , \"r\" ); portal.load(page); page.close(); SPIFFS.end(); portal.begin(); } void loop () { portal.handleClient(); } Passing parameters with sketches and custom Web pages \u00b6 A sketch can access variables of AutoConnectElements on the custom Web page. The value entered into the AutoConnectElements is stored to the member variables of the element by AutoConnect whenever GET / POST transmission occurs. Your sketches can get these values with the request handler which will be registered by AutoConnect::on function. And if you assign a value to an element before a request to the page occurs, its value will appear as the initial value when the page is displayed. The details are explained in section Custom field data handling . window.onload = function() { Gifffer(); }; There is no overlay in the actual menu. \u21a9 The sketch is actually this: #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <AutoConnect.h> AutoConnect portal; ACText(header, \"MQTT broker settings\" ); ACText(caption1, \"Publishing the WiFi...\" ); ACSubmit(save, \"SAVE\" , \"/mqtt_save\" ); AutoConnectAux aux1 ( \"/mqtt_setting\" , \"MQTT Setting\" , { header, caption1, save }); ACText(caption2, \"Save parameters\" ); ACSubmit(start, \"START\" , \"/mqtt_start\" ); AutoConnectAux aux2 ( \"/mqtt_save\" , \"MQTT Setting\" , false, { caption2, start }); AutoConnectAux aux3 ( \"/mqtt_start\" , \"MQTT Start\" ); void setup () { portal.join({ aux1, aux2, aux3 }); portal.begin(); } void loop () { portal.handleClient(); } \u21a9 Installation of the ArduinoJson as the latest release of version 5 series is required. \u21a9","title":"Custom Web pages with AutoConnect"},{"location":"acintro.html#what-it-is","text":"AutoConnect can handle custom Web pages prepared by user sketches individually. Custom Web pages can be integrated into the AutoConnect menu and executed as menu items and can have input-output parameters and handle them. For example, you can program some sketches that publish messages by entering the URI or unique ID of the MQTT broker on a custom page. You do not need to code the processing to handle the web page. It retrieves the input parameters and passes to the MQTT broker connection API is only.","title":"What it is"},{"location":"acintro.html#how-it-works","text":"AutoConnect creates the custom Web pages dynamically at runtime. Sketch describes the custom Web pages using classes and APIs necessary for dynamic creation which are AutoConnectAux and the variant of AutoConnectElements . AutoConnectAux is an object dependent on AutoConnect, which provides an easy way to incorporate custom Web pages into AutoConnect like the one on the right figure. The elements make up a custom Web page are provided as an AutoConnectElement class. Furthermore, an input box, a check box, a submit button, etc. are implemented by classes derived from AutoConnectElement. AutoConnectAux is a container for AutoConnectElements. To make a custom Web page, create elements that make up the page and put it in the AutoConnectAux object. Joining its AutoConnectAux object to AutoConnect will integrate the custom Web page into the AutoConnect menu. The above figure shows a code sequence that declares AutoConnectElements and put in the AutoConnectAux container and integrates those into AutoConnect. It declares two text elements named header and caption , adds them to the AutoConnectAux object as aux , binds to an AutoConnect object named portal . This sequence is the basic procedure for creating custom Web pages with the sketch. The further explanation is available in section AutoConnectElements also.","title":"How it works"},{"location":"acintro.html#custom-web-pages-in-autoconnect-menu","text":"AutoConnect integrates custom Web page objects into menus as AutoConnectAux. The AutoConnectAux object contains URI and title as member variables and has an indicator to display in the AutoConnect menu. You give the title and URI of the custom Web page to the AutoConnectAux object with Sketch. Then the title of the custom Web page would be displayed in the AutoConnect menu as the left figure. 1 It is a hyperlink to a custom Web page which will be displayed tapped it.","title":"Custom Web pages in AutoConnect menu"},{"location":"acintro.html#multiple-custom-web-pages","text":"You can create multiple custom Web pages and specify pages that can be called from the menu. The following sketch shows a code sequence for integrating three custom Web pages into one and embedding them in a menu. In the above code, the third parameter of aux2 is false . The third parameter of the AutoConnectAux constructor is an indicator for whether it's shown to the AutoConnect menu. Right animation is an execution result of the above code. You will see that the menu applies only two items for three custom Web pages. The sketch of this animation is written to transition to aux2 by the utility of the AutoConnectSubmit element owned by aux1 . 2 The aux2 page transitions only from the aux1 page. As shown in mqttRSSI in the library example, its page replies the saving result for the parameters entered on the previous page. It can not be invoked directly from the menu and want to hide them with AutoConnect menu items. The utility of the third parameter of the AutoConnectAux constructor is that.","title":"Multiple custom Web pages"},{"location":"acintro.html#basic-steps-to-use-custom-web-pages","text":"So, the basic procedure for handling of the custom Web pages is as follows: Create or define AutoConnectAux . Create or define AutoConnectElement(s) . Add AutoConnectElement(s) to AutoConnectAux. Create more AutoConnectAux containing AutoConnectElement(s) , if necessary. Register the request handlers for the custom Web pages. Join prepared AutoConnectAux(s) to AutoConnect. Invoke AutoConnect::begin() . Perform AutoConnect::handleClient() .","title":"Basic steps to use custom Web pages"},{"location":"acintro.html#write-the-custom-web-page-with-json","text":"You can write the custom Web page in JSON without using sketch codes. 3 It is possible to describe the entire page in JSON and can be described for each element also. The JSON document can be saved in SPIFFS or SD and read using AutoConnect's load function. you can reduce the steps of the basic procedure with this approach, but this way consumes a lot of memory. The following JSON code and sketch will execute the custom Web page as an example in the above figure. That is, the sketch of this code and footnote 2 is equivalent. custom_page.json [ { \"title\" : \"MQTT Setting\" , \"uri\" : \"/mqtt_setting\" , \"menu\" : true , \"element\" : [ { \"name\" : \"header\" , \"type\" : \"ACText\" , \"value\" : \"MQTT broker settings\" }, { \"name\" : \"caption1\" , \"type\" : \"ACText\" , \"value\" : \"Publishing the WiFi...\" }, { \"name\" : \"save\" , \"type\" : \"ACSubmit\" , \"value\" : \"SAVE\" , \"uri\" : \"/mqtt_save\" } ] }, { \"title\" : \"MQTT Setting\" , \"uri\" : \"/mqtt_save\" , \"menu\" : false , \"element\" : [ { \"name\" : \"caption2\" , \"type\" : \"ACText\" , \"value\" : \"Save parameters\" }, { \"name\" : \"start\" , \"type\" : \"ACSubmit\" , \"value\" : \"START\" , \"uri\" : \"/mqtt_start\" } ] }, { \"title\" : \"MQTT Start\" , \"uri\" : \"/mqtt_start\" , \"menu\" : true , \"element\" : [] } ] The sketch #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <FS.h> #include <AutoConnect.h> AutoConnect portal; void setup () { SPIFFS.begin(); File page = SPIFFS.open( \"/custom_page.json\" , \"r\" ); portal.load(page); page.close(); SPIFFS.end(); portal.begin(); } void loop () { portal.handleClient(); }","title":"Write the custom Web page with JSON"},{"location":"acintro.html#passing-parameters-with-sketches-and-custom-web-pages","text":"A sketch can access variables of AutoConnectElements on the custom Web page. The value entered into the AutoConnectElements is stored to the member variables of the element by AutoConnect whenever GET / POST transmission occurs. Your sketches can get these values with the request handler which will be registered by AutoConnect::on function. And if you assign a value to an element before a request to the page occurs, its value will appear as the initial value when the page is displayed. The details are explained in section Custom field data handling . window.onload = function() { Gifffer(); }; There is no overlay in the actual menu. \u21a9 The sketch is actually this: #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <AutoConnect.h> AutoConnect portal; ACText(header, \"MQTT broker settings\" ); ACText(caption1, \"Publishing the WiFi...\" ); ACSubmit(save, \"SAVE\" , \"/mqtt_save\" ); AutoConnectAux aux1 ( \"/mqtt_setting\" , \"MQTT Setting\" , { header, caption1, save }); ACText(caption2, \"Save parameters\" ); ACSubmit(start, \"START\" , \"/mqtt_start\" ); AutoConnectAux aux2 ( \"/mqtt_save\" , \"MQTT Setting\" , false, { caption2, start }); AutoConnectAux aux3 ( \"/mqtt_start\" , \"MQTT Start\" ); void setup () { portal.join({ aux1, aux2, aux3 }); portal.begin(); } void loop () { portal.handleClient(); } \u21a9 Installation of the ArduinoJson as the latest release of version 5 series is required. \u21a9","title":"Passing parameters with sketches and custom Web pages"},{"location":"acjson.html","text":"You can embed custom Web pages written in JSON into AutoConnect without AutoConnectAux & AutoConnectElements declaration. Custom Web page declaration by JSON can embed in the sketch as a fixed string or can store in the external file such as SPIFFS for stream loading. Also, you can also load and save AutoConnectElements objects individually. 1 By providing the following JSON document to AutoConnect, you can include the custom Web page like the below: A JSON document for AutoConnect can contain the custom Web page multiple. You can further reduce the sketch process by loading multiple pages of JSON document at once. Need ArduinoJson v5 To process the AutoConnectAux & AutoConnectElements written in the JSON is you need to install the ArduinoJson version 5 library. JSON objects & elements for the custom Web page \u00b6 JSON document structure for AutoConnectAux \u00b6 AutoConnectAux will configure custom Web pages with JSON objects. The elements that make up the object are as follows: { \"title\" : title, \"uri\" : uri, \"menu\" : true | false, \"element\" : element_array } title \u00b6 A title of the custom Web page. This is string value. String specified title will be displayed in the AutoConnection menu. uri \u00b6 String of URI path that specifies where to place the custom Web page. It needs to be a location from the root path including ' / '. menu \u00b6 This is a Boolean value indicating whether to include the custom Web page in the AutoConnect menu. If the page only responds to another page and you want to prevent the direct use from the menu, you can exclude from the AutoConnect menu. If this key is false, it will not appear in the menu. element \u00b6 Describe an array of JSON objects as element_array . It is a JSON object array of the AutoConnectElements that make up the custom Web page. Order of elements on a custom Web page The order in which AutoConnectElements are placed on a custom Web page is the order in the JSON document. Multiple custom Web pages declaration in JSON document \u00b6 You can put declarations of multiple custom Web pages in one JSON document. In that case, declare an array of each custom Web page with JSON. The following JSON document contains three custom Web pages: [ { \"title\" : \"Page 1 title\" , \"uri\" : \"/page1\" , \"menu\" : true , \"element\" : [ { \"name\" : \"caption\" , \"type\" : \"ACText\" , \"value\" : \"hello, world\" }, { \"name\" : \"send\" , \"type\" : \"ACSubmit\" , \"uri\" : \"/page2\" } ] }, { \"title\" : \"Page 1 title\" , \"uri\" : \"/page2\" , \"menu\" : false , \"element\" : [ { \"name\" : \"responds\" , \"type\" : \"ACText\" , \"value\" : \"Good day\" }, { \"name\" : \"send\" , \"type\" : \"ACSubmit\" , \"uri\" : \"/page3\" } ] }, { \"title\" : \"Page 3 title\" , \"uri\" : \"/page3\" , \"menu\" : true , \"element\" : [ { \"name\" : \"responds\" , \"type\" : \"ACText\" , \"value\" : \"bye\" } ] } ] JSON object for AutoConnectElements \u00b6 JSON description for AutoConnectElements describes as an array in the element with arguments of each constructor . { \"name\" : name, \"type\" : type, key_according_to_type : the_value | array_of_value, [ key_according_to_type : the_value | array_of_value ] } name \u00b6 A string of the name for the element. type \u00b6 A string of the type for the element. For this type, specify the following string corresponding to each element. AutoConnectButton: ACButton AutoConnectCheckbox: ACCheckbox AutoConnectElement: ACElement AutoConnectFile: ACFile AutoConnectInput: ACInput AutoConnectRadio: ACRadio AutoConnectSelect: ACSelect AutoConnectSubmit: ACSubmit AutoConnectText: ACText key_according_to_type \u00b6 This is different for each AutoConnectElements, and the key that can be specified by the type of AutoConnectElements is determined. ACButton \u00b6 value : Specifies the button label. This value also applies to the value attribute of an HTML button tag. action : Specifies an action to be fire on a mouse click on the button. It is mostly used with a JavaScript to activate a script, or it directly describes a JavaScript. ACCheckbox \u00b6 value : Specifies the value to be supplied to the checkbox. It will be packed in the query string as name=value when the checkbox is ticked. label : Specifies a label of the checkbox. Its placement is always to the right of the checkbox. checked : Specifies checking status as a boolean value. The value of the checked checkbox element is packed in the query string and sent. ACElement \u00b6 value : Specifies the source code of generating HTML. The value is native HTML code and is output as HTML as it is. ACFile \u00b6 value : The file name of the upload file will be stored. The value is read-only and will be ignored if specified. label : Specifies a label of the file selection box. Its placement is always to the left of the file selection box. store : Specifies the destination to save the uploaded file. Its value accepts one of the following: fs : Save as the SPIFFS file in flash of ESP8266/ESP32 module. sd : Save to an external SD device connected to ESP8266/ESP32 module. extern : Pass the content of the uploaded file to the uploader which is declared by the sketch individually. Its uploader must inherit AutoConnectUploadHandler class and implements _open , _write and _close function. ACInput \u00b6 value : Specifies the initial text string of the input box. If this value is omitted, placeholder is displayed as the initial string. label : Specifies a label of the input box. Its placement is always to the left of the input box. placeholder : Specifies short hint of the input box. ACRadio \u00b6 value : Specifies the collection of radio buttons as an array element. label : Specifies a label of the collection of radio buttons, not for each button. The arrangement will be the top or left side according to the arrange . arrange : Specifies the orientation of the radio buttons. Its value accepts one of the following: horizontal : Horizontal arrangement. vertical : Vertical arrangement. checked : Specifies the index number (1-based) of the radio buttons collection to be checked. ACSelect \u00b6 label : Specifies a label of the drop-down list. Its placement is always to the left of the drop-down list. option : Specifies the initial value collection of the drop-down list as an array element. ACSubmit \u00b6 value : Specifies a label of the submit button. uri : Specifies the URI to send form data when the button is clicked. ACText \u00b6 value : Specifies a content and also can contain the native HTML code, but remember that your written code is enclosed by the div tag. style : Specifies the qualification style to give to the content and can use the style attribute format as it is. format : Specifies how to interpret the value. It specifies the conversion format when outputting values. The format string conforms to the C-style printf library functions, but depends on the espressif sdk implementation. The conversion specification is valid only for %s format. (Left and Right justification, width are also valid.) AutoConnect's JSON parsing process is not perfect It is based on analysis by ArduinoJson, but the semantic analysis is simplified to save memory. Consequently, it is not an error that a custom Web page JSON document to have unnecessary keys. It will be ignored. Loading JSON document \u00b6 Loading from the streamed file \u00b6 AutoConnect supports loading of JSON document from the following instances: String PROGMEM Stream To load custom Web pages JSON document into AutoConnect, use the load function of the AutoConnect class. Its JSON document can read must be completed as a description interpretable by the ArduinoJson library. It cannot import custom Web pages if there are syntax errors for the JSON. If you can not see the custom Web page prepared by JSON, you can check the syntax with ArduinoJson Assistant . It is useful for pre-checking. bool AutoConnect :: load( const String & aux) bool AutoConnect :: load( const __FlashStringHelper * aux) bool AutoConnect :: load(Stream & aux) An example of using each function is as follows. AutoConnect portal; // Loading from String const String aux = String( \"{ \\\" title \\\" : \\\" Page 1 title \\\" , \\\" uri \\\" : \\\" /page1 \\\" , \\\" menu \\\" :true, \\\" element \\\" :[{ \\\" name \\\" : \\\" caption \\\" , \\\" type \\\" : \\\" ACText \\\" , \\\" value \\\" : \\\" hello, world \\\" }]}\" ); portal.load(aux); // Loading from PROGMEM const char aux[] PROGMEM = R\"raw( { \"title\" : \"Page 1 title\", \"uri\" : \"/page1\", \"menu\" : true, \"element\" : [ { \"name\" : \"caption\", \"type\" : \"ACText\", \"value\" : \"hello, world\" } ] } )raw\" ; portal.load(aux); // Loading from Stream assumes \"aux.json\" file should be store in SPIFFS. File aux = SPIFFS.open( \"aux.json\" , \"r\" ); portal.load(aux); aux.close(); AutoConnect passes the given JSON document directly to the parseObject() function of the ArduinoJson library for parsing. Therefore, the constraint of the parseObject() function is applied as it is in the parsing of the JSON document for the AutoConnect. That is, if the JSON string is read-only, duplicating the input string occurs and consumes more memory. Adjust the JSON document buffer size \u00b6 AutoConnect uses ArduinoJson library's dynamic buffer to parse JSON documents. Its dynamic buffer allocation scheme depends on the version 5 or version 6 of ArduinoJson library. Either version must have enough buffer to parse the custom web page's JSON document successfully. AutoConnect has the following three constants internally to complete the parsing as much as possible in both ArduinoJson version. These constants are macro defined in AutoConnectDefs.h . If memory insufficiency occurs during JSON document parsing, you can adjust these constants to avoid insufficiency by using the JsonAssistant with deriving the required buffer size in advance. #define AUTOCONNECT_JSONBUFFER_SIZE 256 #define AUTOCONNECT_JSONDOCUMENT_SIZE (8 * 1024) #define AUTOCONNECT_JSONPSRAM_SIZE (16* 1024) AUTOCONNECT_JSONBUFFER_SIZE \u00b6 This is a unit size constant of DynamicJsonBuffer and works when the library used is ArduinoJson version 5. A buffer size of the JSON document increases with this unit. This value relates to the impact of the fragmented heap area. If it is too large, may occur run-out of memory. AUTOCONNECT_JSONDOCUMENT_SIZE \u00b6 This is a size of DynamicJsonDocument for ArduinoJson version 6. This buffer is not automatically expanding, and the size determines the limit. AUTOCONNECT_JSONPSRAM_SIZE \u00b6 For ESP32 module equips with PSRAM, you can allocate the JSON document buffer to PSRAM. Buffer allocation to PSRAM will enable when PSRAM:Enabled option selected in the Arduino IDE's Board Manager menu. It is available since ArduinoJson 6.10.0. Saving JSON document \u00b6 The sketch can persist AutoConnectElements as a JSON document and also uses this function to save the values \u200b\u200bentered on the custom Web page. And you can reload the saved JSON document into AutoConnectElements as the field in a custom Web page using the load function . Loading and saving AutoConnect parameters adopt this method. \u21a9","title":"Custom Web pages with JSON"},{"location":"acjson.html#json-objects-elements-for-the-custom-web-page","text":"","title":"JSON objects &amp; elements for the custom Web page"},{"location":"acjson.html#json-document-structure-for-autoconnectaux","text":"AutoConnectAux will configure custom Web pages with JSON objects. The elements that make up the object are as follows: { \"title\" : title, \"uri\" : uri, \"menu\" : true | false, \"element\" : element_array }","title":" JSON document structure for AutoConnectAux"},{"location":"acjson.html#title","text":"A title of the custom Web page. This is string value. String specified title will be displayed in the AutoConnection menu.","title":" title"},{"location":"acjson.html#uri","text":"String of URI path that specifies where to place the custom Web page. It needs to be a location from the root path including ' / '.","title":" uri"},{"location":"acjson.html#menu","text":"This is a Boolean value indicating whether to include the custom Web page in the AutoConnect menu. If the page only responds to another page and you want to prevent the direct use from the menu, you can exclude from the AutoConnect menu. If this key is false, it will not appear in the menu.","title":" menu"},{"location":"acjson.html#element","text":"Describe an array of JSON objects as element_array . It is a JSON object array of the AutoConnectElements that make up the custom Web page. Order of elements on a custom Web page The order in which AutoConnectElements are placed on a custom Web page is the order in the JSON document.","title":" element"},{"location":"acjson.html#multiple-custom-web-pages-declaration-in-json-document","text":"You can put declarations of multiple custom Web pages in one JSON document. In that case, declare an array of each custom Web page with JSON. The following JSON document contains three custom Web pages: [ { \"title\" : \"Page 1 title\" , \"uri\" : \"/page1\" , \"menu\" : true , \"element\" : [ { \"name\" : \"caption\" , \"type\" : \"ACText\" , \"value\" : \"hello, world\" }, { \"name\" : \"send\" , \"type\" : \"ACSubmit\" , \"uri\" : \"/page2\" } ] }, { \"title\" : \"Page 1 title\" , \"uri\" : \"/page2\" , \"menu\" : false , \"element\" : [ { \"name\" : \"responds\" , \"type\" : \"ACText\" , \"value\" : \"Good day\" }, { \"name\" : \"send\" , \"type\" : \"ACSubmit\" , \"uri\" : \"/page3\" } ] }, { \"title\" : \"Page 3 title\" , \"uri\" : \"/page3\" , \"menu\" : true , \"element\" : [ { \"name\" : \"responds\" , \"type\" : \"ACText\" , \"value\" : \"bye\" } ] } ]","title":" Multiple custom Web pages declaration in JSON document"},{"location":"acjson.html#json-object-for-autoconnectelements","text":"JSON description for AutoConnectElements describes as an array in the element with arguments of each constructor . { \"name\" : name, \"type\" : type, key_according_to_type : the_value | array_of_value, [ key_according_to_type : the_value | array_of_value ] }","title":" JSON object for AutoConnectElements"},{"location":"acjson.html#name","text":"A string of the name for the element.","title":" name"},{"location":"acjson.html#type","text":"A string of the type for the element. For this type, specify the following string corresponding to each element. AutoConnectButton: ACButton AutoConnectCheckbox: ACCheckbox AutoConnectElement: ACElement AutoConnectFile: ACFile AutoConnectInput: ACInput AutoConnectRadio: ACRadio AutoConnectSelect: ACSelect AutoConnectSubmit: ACSubmit AutoConnectText: ACText","title":" type"},{"location":"acjson.html#key_according_to_type","text":"This is different for each AutoConnectElements, and the key that can be specified by the type of AutoConnectElements is determined.","title":" key_according_to_type"},{"location":"acjson.html#acbutton","text":"value : Specifies the button label. This value also applies to the value attribute of an HTML button tag. action : Specifies an action to be fire on a mouse click on the button. It is mostly used with a JavaScript to activate a script, or it directly describes a JavaScript.","title":" ACButton"},{"location":"acjson.html#accheckbox","text":"value : Specifies the value to be supplied to the checkbox. It will be packed in the query string as name=value when the checkbox is ticked. label : Specifies a label of the checkbox. Its placement is always to the right of the checkbox. checked : Specifies checking status as a boolean value. The value of the checked checkbox element is packed in the query string and sent.","title":" ACCheckbox"},{"location":"acjson.html#acelement","text":"value : Specifies the source code of generating HTML. The value is native HTML code and is output as HTML as it is.","title":" ACElement"},{"location":"acjson.html#acfile","text":"value : The file name of the upload file will be stored. The value is read-only and will be ignored if specified. label : Specifies a label of the file selection box. Its placement is always to the left of the file selection box. store : Specifies the destination to save the uploaded file. Its value accepts one of the following: fs : Save as the SPIFFS file in flash of ESP8266/ESP32 module. sd : Save to an external SD device connected to ESP8266/ESP32 module. extern : Pass the content of the uploaded file to the uploader which is declared by the sketch individually. Its uploader must inherit AutoConnectUploadHandler class and implements _open , _write and _close function.","title":" ACFile"},{"location":"acjson.html#acinput","text":"value : Specifies the initial text string of the input box. If this value is omitted, placeholder is displayed as the initial string. label : Specifies a label of the input box. Its placement is always to the left of the input box. placeholder : Specifies short hint of the input box.","title":" ACInput"},{"location":"acjson.html#acradio","text":"value : Specifies the collection of radio buttons as an array element. label : Specifies a label of the collection of radio buttons, not for each button. The arrangement will be the top or left side according to the arrange . arrange : Specifies the orientation of the radio buttons. Its value accepts one of the following: horizontal : Horizontal arrangement. vertical : Vertical arrangement. checked : Specifies the index number (1-based) of the radio buttons collection to be checked.","title":" ACRadio"},{"location":"acjson.html#acselect","text":"label : Specifies a label of the drop-down list. Its placement is always to the left of the drop-down list. option : Specifies the initial value collection of the drop-down list as an array element.","title":" ACSelect"},{"location":"acjson.html#acsubmit","text":"value : Specifies a label of the submit button. uri : Specifies the URI to send form data when the button is clicked.","title":" ACSubmit"},{"location":"acjson.html#actext","text":"value : Specifies a content and also can contain the native HTML code, but remember that your written code is enclosed by the div tag. style : Specifies the qualification style to give to the content and can use the style attribute format as it is. format : Specifies how to interpret the value. It specifies the conversion format when outputting values. The format string conforms to the C-style printf library functions, but depends on the espressif sdk implementation. The conversion specification is valid only for %s format. (Left and Right justification, width are also valid.) AutoConnect's JSON parsing process is not perfect It is based on analysis by ArduinoJson, but the semantic analysis is simplified to save memory. Consequently, it is not an error that a custom Web page JSON document to have unnecessary keys. It will be ignored.","title":" ACText"},{"location":"acjson.html#loading-json-document","text":"","title":"Loading JSON document"},{"location":"acjson.html#loading-from-the-streamed-file","text":"AutoConnect supports loading of JSON document from the following instances: String PROGMEM Stream To load custom Web pages JSON document into AutoConnect, use the load function of the AutoConnect class. Its JSON document can read must be completed as a description interpretable by the ArduinoJson library. It cannot import custom Web pages if there are syntax errors for the JSON. If you can not see the custom Web page prepared by JSON, you can check the syntax with ArduinoJson Assistant . It is useful for pre-checking. bool AutoConnect :: load( const String & aux) bool AutoConnect :: load( const __FlashStringHelper * aux) bool AutoConnect :: load(Stream & aux) An example of using each function is as follows. AutoConnect portal; // Loading from String const String aux = String( \"{ \\\" title \\\" : \\\" Page 1 title \\\" , \\\" uri \\\" : \\\" /page1 \\\" , \\\" menu \\\" :true, \\\" element \\\" :[{ \\\" name \\\" : \\\" caption \\\" , \\\" type \\\" : \\\" ACText \\\" , \\\" value \\\" : \\\" hello, world \\\" }]}\" ); portal.load(aux); // Loading from PROGMEM const char aux[] PROGMEM = R\"raw( { \"title\" : \"Page 1 title\", \"uri\" : \"/page1\", \"menu\" : true, \"element\" : [ { \"name\" : \"caption\", \"type\" : \"ACText\", \"value\" : \"hello, world\" } ] } )raw\" ; portal.load(aux); // Loading from Stream assumes \"aux.json\" file should be store in SPIFFS. File aux = SPIFFS.open( \"aux.json\" , \"r\" ); portal.load(aux); aux.close(); AutoConnect passes the given JSON document directly to the parseObject() function of the ArduinoJson library for parsing. Therefore, the constraint of the parseObject() function is applied as it is in the parsing of the JSON document for the AutoConnect. That is, if the JSON string is read-only, duplicating the input string occurs and consumes more memory.","title":" Loading from the streamed file"},{"location":"acjson.html#adjust-the-json-document-buffer-size","text":"AutoConnect uses ArduinoJson library's dynamic buffer to parse JSON documents. Its dynamic buffer allocation scheme depends on the version 5 or version 6 of ArduinoJson library. Either version must have enough buffer to parse the custom web page's JSON document successfully. AutoConnect has the following three constants internally to complete the parsing as much as possible in both ArduinoJson version. These constants are macro defined in AutoConnectDefs.h . If memory insufficiency occurs during JSON document parsing, you can adjust these constants to avoid insufficiency by using the JsonAssistant with deriving the required buffer size in advance. #define AUTOCONNECT_JSONBUFFER_SIZE 256 #define AUTOCONNECT_JSONDOCUMENT_SIZE (8 * 1024) #define AUTOCONNECT_JSONPSRAM_SIZE (16* 1024)","title":" Adjust the JSON document buffer size"},{"location":"acjson.html#autoconnect_jsonbuffer_size","text":"This is a unit size constant of DynamicJsonBuffer and works when the library used is ArduinoJson version 5. A buffer size of the JSON document increases with this unit. This value relates to the impact of the fragmented heap area. If it is too large, may occur run-out of memory.","title":"AUTOCONNECT_JSONBUFFER_SIZE"},{"location":"acjson.html#autoconnect_jsondocument_size","text":"This is a size of DynamicJsonDocument for ArduinoJson version 6. This buffer is not automatically expanding, and the size determines the limit.","title":"AUTOCONNECT_JSONDOCUMENT_SIZE"},{"location":"acjson.html#autoconnect_jsonpsram_size","text":"For ESP32 module equips with PSRAM, you can allocate the JSON document buffer to PSRAM. Buffer allocation to PSRAM will enable when PSRAM:Enabled option selected in the Arduino IDE's Board Manager menu. It is available since ArduinoJson 6.10.0.","title":"AUTOCONNECT_JSONPSRAM_SIZE"},{"location":"acjson.html#saving-json-document","text":"The sketch can persist AutoConnectElements as a JSON document and also uses this function to save the values \u200b\u200bentered on the custom Web page. And you can reload the saved JSON document into AutoConnectElements as the field in a custom Web page using the load function . Loading and saving AutoConnect parameters adopt this method. \u21a9","title":"Saving JSON document"},{"location":"acupload.html","text":"Uploading file from Web Browser \u00b6 If you have to write some data individually to the ESP8266/ESP32 module for the sketch behavior, the AutoConnectFile element will assist with your wants implementation. The AutoConnectFile element produces an HTML <input type=\"file\"> tag and can save uploaded file to the flash or external SD of the ESP8266/ESP32 module. The handler for saving is built into AutoConnect. You can use it to inject any sketch data such as the initial values for the custom Web page into the ESP module via OTA without using the sketch data upload tool of Arduino-IDE. Basic steps of the file upload sketch \u00b6 Here is the basic procedure of the sketch which can upload files from the client browser using AutoConnectFile: 1 Place AutoConnectFile on a custom Web page by writing JSON or constructor code directly with the sketch. Place other AutoConnectElements as needed. Place AutoConnectSubmit on the same custom Web page. Perform the following process in the on-handler of submitting destination: Retrieve the AutoConnectFile instance from the custom Web page where you placed the AutoConnectFile element using the AutoConnectAux::getElement function or the operator [] . Start access to the device specified as the upload destination. In usually, it depends on the file system's begin function. For example, if you specified Flash's SPIFFS as the upload destination, invokes SPIFFS.begin() . The value member of AutoConnectFile contains the file name of the upload file. Use its file name to access the uploaded file on the device. Invokes the end function associated with the begin to close the device. It is the SPIFFS.end()* if the flash on the ESP module has been begun for SPIFFS. The following sketch is an example that implements the above basic steps. The postUpload function is the on-handler and retrieves the AutoConnectFile as named upload_file . You should note that this handler is not for a custom Web page placed with its AutoConnectFile element. The uploaded file should be processed by the handler for the transition destination page from the AutoConnectFile element placed page. AutoConnect built-in upload handler will save the uploaded file to the specified device before invoking the postUpload function. However, If you use uploaded files in different situations, it may be more appropriate to place the actual handling process outside the handler. It applies for the parameter file, etc. The important thing is that you do not have to sketch file reception and storing logic by using the AutoConnectFile element and the upload handler built into the AutoConnect. #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <FS.h> #include <AutoConnect.h> // Upload request custom Web page static const char PAGE_UPLOAD[] PROGMEM = R\"( { \"uri\": \"/\", \"title\": \"Upload\", \"menu\": true, \"element\": [ { \"name\":\"caption\", \"type\":\"ACText\", \"value\":\"<h2>File uploading platform<h2>\" }, { \"name\":\"upload_file\", \"type\":\"ACFile\", \"label\":\"Select file: \", \"store\":\"fs\" }, { \"name\":\"upload\", \"type\":\"ACSubmit\", \"value\":\"UPLOAD\", \"uri\":\"/upload\" } ] } )\" ; // Upload result display static const char PAGE_BROWSE[] PROGMEM = R\"( { \"uri\": \"/upload\", \"title\": \"Upload\", \"menu\": false, \"element\": [ { \"name\":\"caption\", \"type\":\"ACText\", \"value\":\"<h2>Uploading ended<h2>\" }, { \"name\":\"filename\", \"type\":\"ACText\" }, { \"name\":\"size\", \"type\":\"ACText\", \"format\":\"%s bytes uploaded\" }, { \"name\":\"content_type\", \"type\":\"ACText\", \"format\":\"Content: %s\" } ] } )\" ; ESP8266WebServer server; AutoConnect portal (server); // Declare AutoConnectAux separately as a custom web page to access // easily for each page in the post-upload handler. AutoConnectAux auxUpload; AutoConnectAux auxBrowse; /** * Post uploading, AutoConnectFile's built-in upload handler reads the * file saved in SPIFFS and displays the file contents on /upload custom * web page. However, only files with mime type uploaded as text are * displayed. A custom web page handler is called after upload. * @param aux AutoConnectAux(/upload) * @param args PageArgument * @return Uploaded text content */ String postUpload (AutoConnectAux & aux, PageArgument & args) { String content; AutoConnectFile & upload = auxUpload[ \"upload_file\" ].as < AutoConnectFile > (); AutoConnectText & aux_filename = aux[ \"filename\" ].as < AutoConnectText > (); AutoConnectText & aux_size = aux[ \"size\" ].as < AutoConnectText > (); AutoConnectText & aux_contentType = aux[ \"content_type\" ].as < AutoConnectText > (); // Assignment operator can be used for the element attribute. aux_filename.value = upload.value; aux_size.value = String(upload.size); aux_contentType.value = upload.mimeType; // The file saved by the AutoConnect upload handler is read from // the EEPROM and echoed to a custom web page. SPIFFS.begin(); File uploadFile = SPIFFS.open(String( \"/\" + upload.value).c_str(), \"r\" ); if (uploadFile) { while (uploadFile.available()) { char c = uploadFile.read(); Serial.print(c); } uploadFile.close(); } else content = \"Not saved\" ; SPIFFS.end(); return String(); } void setup () { delay( 1000 ); Serial.begin( 115200 ); Serial.println(); auxUpload.load(PAGE_UPLOAD); auxBrowse.load(PAGE_BROWSE); portal.join({ auxUpload, auxBrowse }); auxBrowse.on(postUpload); portal.begin(); } void loop () { portal.handleClient(); } Where will the file upload \u00b6 The AutoConnect built-in upload handler can save the upload file to three locations: Flash memory embedded in the ESP8266/ESP32 module SD device externally connected to the ESP8266/ESP32 module Other character devices You can specify the device type to save with the store attribute of AutoConenctFile, and it accepts the following values: Flash : AC_File_FS for the API parameter or fs for the JSON document SD : AC_File_SD for the API parameter or sd for the JSON document Other : AC_File_Extern for the API parameter or extern for the JSON document The substance of AC_File_FS (fs) is a SPIFFS file system implemented by the ESP8266/ESP32 core, and then AutoConnect uses the Global Instance SPIFFS to access SPIFFS. Also, the substance of AC_File_SD (sd) is a FAT file of Arduino SD library ported to the ESP8266/ESP32 core, and then AutoConnect uses the Global Instance SD to access SD. When saving to an external SD device, there are additional required parameters for the connection interface and is defined as the macro in AutoConnectDefs.h. #define AUTOCONNECT_SD_CS SS #define AUTOCONNECT_SD_SPEED 4000000 AUTOCONNECT_SD_CS defines which GPIO for the CS (Chip Select, or SS as Slave Select) pin. This definition is derived from pins_arduino.h, which is included in the Arduino core distribution. If you want to assign the CS pin to another GPIO, you need to change the macro definition of AutoConnectDefs.h. AUTOCONNECT_SD_SPEED defines SPI clock speed depending on the connected device. Involves both the begin() and the end() The built-in uploader executes the begin and end functions regardless of the sketch whence the file system of the device will terminate with the uploader termination. Therefore, to use the device in the sketch after uploading, you need to restart it with the begin function. When it will be uploaded \u00b6 Upload handler will be launched by ESP8266WebServer/WebServer(as ESP32) library which is triggered by receiving an HTTP stream of POST BODY including file content. Its launching occurs before invoking the page handler. The following diagram illustrates the file uploading sequence: At the time of the page handler behaves, the uploaded file already saved to the device, and the member variables of AutoConnectFile reflects the file name and transfer size. The file name for the uploaded file \u00b6 AutoConnetFile saves the uploaded file with the file name you selected by <input type=\"file\"> tag on the browser. The file name used for uploading is stored in the AutoConnetFile's value member, which you can access after uploading. (i.e. In the handler of the destination page by the AutoConnectSubmit element.) You can not save it with a different name. It can be renamed after upload if you need to change the name. Upload to a device other than Flash or SD \u00b6 You can output the file to any device using a custom uploader by specifying extern with the store attribute of AutoConnectFile (or specifying AC_File_Extern for the store member variable) and can customize the uploader according to the need to upload files to other than Flash or SD. Implements your own uploader with inheriting the AutoConnectUploadHandler class which is the base class of the upload handler. It's not so difficult Implementing the custom uploader requires a little knowledge of the c++ language. If you are less attuned to programming c++, you may find it difficult. But don't worry. You can make it in various situations by just modifying the sketch skeleton that appears at the end of this page. Upload handler base class \u00b6 AutoConnectUploadHandler is a base class of upload handler and It has one public member function and three protected functions. Constructor \u00b6 AutoConnectUploadHandler() Member functions \u00b6 The upload public function is an entry point, the ESP8266WebServer (WebServer as ESP32) library will invoke the upload with each time of uploading content divided into chunks. Also, the _open , _write and _close protected functions are actually responsible for saving files and are declared as pure virtual functions. A custom uploader class that inherits from the AutoConnectUploadHandler class need to implement these functions. The actual upload process is handled by the three private functions above, and then upload only invokes three functions according to the upload situation. In usually, there is no need to override the upload function in an inherited class. public virtual void upload( const String & requestUri, const HTTPUpload & upload) Parameters requestUri URI of upload request source. upload A data structure of the upload file as HTTPUpload . It is defined in the ESP8266WebServer (WebServer as ESP32) library as follows: typedef struct { HTTPUploadStatus status; String filename; String name; String type; size_t totalSize; size_t currentSize; size_t contentLength; uint8_t buf[HTTP_UPLOAD_BUFLEN]; } HTTPUpload; The upload handler needs to implement processing based on the enumeration value of HTTPUpload.status as HTTPUploadStatus enum type. HTTPUploadStatus enumeration is as follows: UPLOAD_FILE_START : Invokes to the _open. UPLOAD_FILE_WRITE : Invokes to the _write. UPLOAD_FILE_END : Invokes to the _close. UPLOAD_FILE_ABORTED : Invokes to the _close. The _open function will be invoked when HTTPUploadStatus is UPLOAD_FILE_START . Usually, the implementation of an inherited class will open the file. protected virtual bool _open( const char * filename, const char * mode) = 0 Parameters filename Uploading file name. mode An indicator for the file access mode, a \"w\" for writing. Return value true File open successful. false Failed to open. The _write function will be invoked when HTTPUploadStatus is UPLOAD_FILE_WRITE . The content of the upload file is divided and the _write will be invoked in multiple times. Usually, the implementation of an inherited class will write data. protected virtual size_t _write( const uint8_t * buf, const size_t size)) = 0 Parameters buf File content block. size File block size to write. Return value Size written. The _close function will be invoked when HTTPUploadStatus is UPLOAD_FILE_END or UPLOAD_FILE_ABORTED . Usually, the implementation of an inherited class will close the file. protected virtual void _close( void ) = 0 For reference, the following AutoConnectUploadFS class is an implementation of AutoConnect built-in uploader and inherits from AutoConnectUploadHandler. class AutoConnectUploadFS : public AutoConnectUploadHandler { public : explicit AutoConnectUploadFS(SPIFFST & media) : _media( & media) {} ~ AutoConnectUploadFS() { _close(); } protected : bool _open( const char * filename, const char * mode) override { if (_media -> begin()) { _file = _media -> open(filename, mode); return _file != false; } return false; } size_t _write( const uint8_t * buf, const size_t size) override { if (_file) return _file.write(buf, size); else return - 1 ; } void _close( void ) override { if (_file) _file.close(); _media -> end(); } private : SPIFFST * _media; SPIFileT _file; }; Register custom upload handler \u00b6 In order to upload a file by the custom uploader, it is necessary to register it to the custom Web page beforehand. To register a custom uploader, specify the custom uploader class name in the template argument of the AutoConnectAux::onUpload function and invokes it. void AutoConnectAux :: onUpload < T > (T & uploadClass) Parameters T Specifies a class name of the custom uploader. This class name is a class that you implemented by inheriting AutoConnectUploadHandler for custom upload. uploadClass Specifies the custom upload class instance. The rough structure of the sketches that completed these implementations will be as follows: #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <AutoConnect.h> static const char PAGE_UPLOAD[] PROGMEM = R\"( { \"uri\": \"/\", \"title\": \"Upload\", \"menu\": true, \"element\": [ { \"name\":\"caption\", \"type\":\"ACText\", \"value\":\"<h2>File uploading platform<h2>\" }, { \"name\":\"upload_file\", \"type\":\"ACFile\", \"label\":\"Select file: \", \"store\":\"extern\" }, { \"name\":\"upload\", \"type\":\"ACSubmit\", \"value\":\"UPLOAD\", \"uri\":\"/upload\" } ] } )\" ; static const char PAGE_RECEIVED[] PROGMEM = R\"( { \"uri\": \"/upload\", \"title\": \"Upload ended\", \"menu\": false, \"element\": [ { \"name\":\"caption\", \"type\":\"ACText\", \"value\":\"<h2>File uploading ended<h2>\" } ] } )\" ; // Custom upload handler class class CustomUploader : public AutoConnectUploadHandler { public : CustomUploader() {} ~ CustomUploader() {} protected : bool _open( const char * filename, const char * mode) override ; size_t _write ( const uint8_t * buf, const size_t size) override ; void _close ( void ) override ; }; // _open for custom open bool CustomUploader :: _open( const char * filename, const char * mode) { // Here, an implementation for the open file. } // _open for custom write size_t CustomUploader :: _write( const uint8_t * buf, const size_t size) { // Here, an implementation for the writing the file data. } // _open for custom close void CustomUploader :: _close( void ) { // Here, an implementation for the close file. } AutoConnect portal; AutoConnectAux uploadPage; AutoConnectAux receivePage; CustomUploader uploader; // Declare the custom uploader void setup () { uploadPage.load(PAGE_UPLOAD); receivePage.load(PAGE_RECEIVED); portal.join({ uploadPage, receivePage }); receivePage.onUpload < CustomUploader > (uploader); // Register the custom uploader portal.begin(); } void loop () { portal.handleClient(); } Don't forget to specify the store When using a custom uploader, remember to specify the extern for the store attribute of AutoConnectFile. window.onload = function() { Gifffer(); }; The AutoConnectFile element can be used with other AutoConnectElements on the same page. \u21a9","title":"File upload handler"},{"location":"acupload.html#uploading-file-from-web-browser","text":"If you have to write some data individually to the ESP8266/ESP32 module for the sketch behavior, the AutoConnectFile element will assist with your wants implementation. The AutoConnectFile element produces an HTML <input type=\"file\"> tag and can save uploaded file to the flash or external SD of the ESP8266/ESP32 module. The handler for saving is built into AutoConnect. You can use it to inject any sketch data such as the initial values for the custom Web page into the ESP module via OTA without using the sketch data upload tool of Arduino-IDE.","title":"Uploading file from Web Browser"},{"location":"acupload.html#basic-steps-of-the-file-upload-sketch","text":"Here is the basic procedure of the sketch which can upload files from the client browser using AutoConnectFile: 1 Place AutoConnectFile on a custom Web page by writing JSON or constructor code directly with the sketch. Place other AutoConnectElements as needed. Place AutoConnectSubmit on the same custom Web page. Perform the following process in the on-handler of submitting destination: Retrieve the AutoConnectFile instance from the custom Web page where you placed the AutoConnectFile element using the AutoConnectAux::getElement function or the operator [] . Start access to the device specified as the upload destination. In usually, it depends on the file system's begin function. For example, if you specified Flash's SPIFFS as the upload destination, invokes SPIFFS.begin() . The value member of AutoConnectFile contains the file name of the upload file. Use its file name to access the uploaded file on the device. Invokes the end function associated with the begin to close the device. It is the SPIFFS.end()* if the flash on the ESP module has been begun for SPIFFS. The following sketch is an example that implements the above basic steps. The postUpload function is the on-handler and retrieves the AutoConnectFile as named upload_file . You should note that this handler is not for a custom Web page placed with its AutoConnectFile element. The uploaded file should be processed by the handler for the transition destination page from the AutoConnectFile element placed page. AutoConnect built-in upload handler will save the uploaded file to the specified device before invoking the postUpload function. However, If you use uploaded files in different situations, it may be more appropriate to place the actual handling process outside the handler. It applies for the parameter file, etc. The important thing is that you do not have to sketch file reception and storing logic by using the AutoConnectFile element and the upload handler built into the AutoConnect. #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <FS.h> #include <AutoConnect.h> // Upload request custom Web page static const char PAGE_UPLOAD[] PROGMEM = R\"( { \"uri\": \"/\", \"title\": \"Upload\", \"menu\": true, \"element\": [ { \"name\":\"caption\", \"type\":\"ACText\", \"value\":\"<h2>File uploading platform<h2>\" }, { \"name\":\"upload_file\", \"type\":\"ACFile\", \"label\":\"Select file: \", \"store\":\"fs\" }, { \"name\":\"upload\", \"type\":\"ACSubmit\", \"value\":\"UPLOAD\", \"uri\":\"/upload\" } ] } )\" ; // Upload result display static const char PAGE_BROWSE[] PROGMEM = R\"( { \"uri\": \"/upload\", \"title\": \"Upload\", \"menu\": false, \"element\": [ { \"name\":\"caption\", \"type\":\"ACText\", \"value\":\"<h2>Uploading ended<h2>\" }, { \"name\":\"filename\", \"type\":\"ACText\" }, { \"name\":\"size\", \"type\":\"ACText\", \"format\":\"%s bytes uploaded\" }, { \"name\":\"content_type\", \"type\":\"ACText\", \"format\":\"Content: %s\" } ] } )\" ; ESP8266WebServer server; AutoConnect portal (server); // Declare AutoConnectAux separately as a custom web page to access // easily for each page in the post-upload handler. AutoConnectAux auxUpload; AutoConnectAux auxBrowse; /** * Post uploading, AutoConnectFile's built-in upload handler reads the * file saved in SPIFFS and displays the file contents on /upload custom * web page. However, only files with mime type uploaded as text are * displayed. A custom web page handler is called after upload. * @param aux AutoConnectAux(/upload) * @param args PageArgument * @return Uploaded text content */ String postUpload (AutoConnectAux & aux, PageArgument & args) { String content; AutoConnectFile & upload = auxUpload[ \"upload_file\" ].as < AutoConnectFile > (); AutoConnectText & aux_filename = aux[ \"filename\" ].as < AutoConnectText > (); AutoConnectText & aux_size = aux[ \"size\" ].as < AutoConnectText > (); AutoConnectText & aux_contentType = aux[ \"content_type\" ].as < AutoConnectText > (); // Assignment operator can be used for the element attribute. aux_filename.value = upload.value; aux_size.value = String(upload.size); aux_contentType.value = upload.mimeType; // The file saved by the AutoConnect upload handler is read from // the EEPROM and echoed to a custom web page. SPIFFS.begin(); File uploadFile = SPIFFS.open(String( \"/\" + upload.value).c_str(), \"r\" ); if (uploadFile) { while (uploadFile.available()) { char c = uploadFile.read(); Serial.print(c); } uploadFile.close(); } else content = \"Not saved\" ; SPIFFS.end(); return String(); } void setup () { delay( 1000 ); Serial.begin( 115200 ); Serial.println(); auxUpload.load(PAGE_UPLOAD); auxBrowse.load(PAGE_BROWSE); portal.join({ auxUpload, auxBrowse }); auxBrowse.on(postUpload); portal.begin(); } void loop () { portal.handleClient(); }","title":"Basic steps of the file upload sketch"},{"location":"acupload.html#where-will-the-file-upload","text":"The AutoConnect built-in upload handler can save the upload file to three locations: Flash memory embedded in the ESP8266/ESP32 module SD device externally connected to the ESP8266/ESP32 module Other character devices You can specify the device type to save with the store attribute of AutoConenctFile, and it accepts the following values: Flash : AC_File_FS for the API parameter or fs for the JSON document SD : AC_File_SD for the API parameter or sd for the JSON document Other : AC_File_Extern for the API parameter or extern for the JSON document The substance of AC_File_FS (fs) is a SPIFFS file system implemented by the ESP8266/ESP32 core, and then AutoConnect uses the Global Instance SPIFFS to access SPIFFS. Also, the substance of AC_File_SD (sd) is a FAT file of Arduino SD library ported to the ESP8266/ESP32 core, and then AutoConnect uses the Global Instance SD to access SD. When saving to an external SD device, there are additional required parameters for the connection interface and is defined as the macro in AutoConnectDefs.h. #define AUTOCONNECT_SD_CS SS #define AUTOCONNECT_SD_SPEED 4000000 AUTOCONNECT_SD_CS defines which GPIO for the CS (Chip Select, or SS as Slave Select) pin. This definition is derived from pins_arduino.h, which is included in the Arduino core distribution. If you want to assign the CS pin to another GPIO, you need to change the macro definition of AutoConnectDefs.h. AUTOCONNECT_SD_SPEED defines SPI clock speed depending on the connected device. Involves both the begin() and the end() The built-in uploader executes the begin and end functions regardless of the sketch whence the file system of the device will terminate with the uploader termination. Therefore, to use the device in the sketch after uploading, you need to restart it with the begin function.","title":"Where will the file upload"},{"location":"acupload.html#when-it-will-be-uploaded","text":"Upload handler will be launched by ESP8266WebServer/WebServer(as ESP32) library which is triggered by receiving an HTTP stream of POST BODY including file content. Its launching occurs before invoking the page handler. The following diagram illustrates the file uploading sequence: At the time of the page handler behaves, the uploaded file already saved to the device, and the member variables of AutoConnectFile reflects the file name and transfer size.","title":"When it will be uploaded"},{"location":"acupload.html#the-file-name-for-the-uploaded-file","text":"AutoConnetFile saves the uploaded file with the file name you selected by <input type=\"file\"> tag on the browser. The file name used for uploading is stored in the AutoConnetFile's value member, which you can access after uploading. (i.e. In the handler of the destination page by the AutoConnectSubmit element.) You can not save it with a different name. It can be renamed after upload if you need to change the name.","title":"The file name for the uploaded file"},{"location":"acupload.html#upload-to-a-device-other-than-flash-or-sd","text":"You can output the file to any device using a custom uploader by specifying extern with the store attribute of AutoConnectFile (or specifying AC_File_Extern for the store member variable) and can customize the uploader according to the need to upload files to other than Flash or SD. Implements your own uploader with inheriting the AutoConnectUploadHandler class which is the base class of the upload handler. It's not so difficult Implementing the custom uploader requires a little knowledge of the c++ language. If you are less attuned to programming c++, you may find it difficult. But don't worry. You can make it in various situations by just modifying the sketch skeleton that appears at the end of this page.","title":"Upload to a device other than Flash or SD"},{"location":"acupload.html#upload-handler-base-class","text":"AutoConnectUploadHandler is a base class of upload handler and It has one public member function and three protected functions.","title":" Upload handler base class"},{"location":"acupload.html#constructor","text":"AutoConnectUploadHandler()","title":" Constructor"},{"location":"acupload.html#member-functions","text":"The upload public function is an entry point, the ESP8266WebServer (WebServer as ESP32) library will invoke the upload with each time of uploading content divided into chunks. Also, the _open , _write and _close protected functions are actually responsible for saving files and are declared as pure virtual functions. A custom uploader class that inherits from the AutoConnectUploadHandler class need to implement these functions. The actual upload process is handled by the three private functions above, and then upload only invokes three functions according to the upload situation. In usually, there is no need to override the upload function in an inherited class. public virtual void upload( const String & requestUri, const HTTPUpload & upload) Parameters requestUri URI of upload request source. upload A data structure of the upload file as HTTPUpload . It is defined in the ESP8266WebServer (WebServer as ESP32) library as follows: typedef struct { HTTPUploadStatus status; String filename; String name; String type; size_t totalSize; size_t currentSize; size_t contentLength; uint8_t buf[HTTP_UPLOAD_BUFLEN]; } HTTPUpload; The upload handler needs to implement processing based on the enumeration value of HTTPUpload.status as HTTPUploadStatus enum type. HTTPUploadStatus enumeration is as follows: UPLOAD_FILE_START : Invokes to the _open. UPLOAD_FILE_WRITE : Invokes to the _write. UPLOAD_FILE_END : Invokes to the _close. UPLOAD_FILE_ABORTED : Invokes to the _close. The _open function will be invoked when HTTPUploadStatus is UPLOAD_FILE_START . Usually, the implementation of an inherited class will open the file. protected virtual bool _open( const char * filename, const char * mode) = 0 Parameters filename Uploading file name. mode An indicator for the file access mode, a \"w\" for writing. Return value true File open successful. false Failed to open. The _write function will be invoked when HTTPUploadStatus is UPLOAD_FILE_WRITE . The content of the upload file is divided and the _write will be invoked in multiple times. Usually, the implementation of an inherited class will write data. protected virtual size_t _write( const uint8_t * buf, const size_t size)) = 0 Parameters buf File content block. size File block size to write. Return value Size written. The _close function will be invoked when HTTPUploadStatus is UPLOAD_FILE_END or UPLOAD_FILE_ABORTED . Usually, the implementation of an inherited class will close the file. protected virtual void _close( void ) = 0 For reference, the following AutoConnectUploadFS class is an implementation of AutoConnect built-in uploader and inherits from AutoConnectUploadHandler. class AutoConnectUploadFS : public AutoConnectUploadHandler { public : explicit AutoConnectUploadFS(SPIFFST & media) : _media( & media) {} ~ AutoConnectUploadFS() { _close(); } protected : bool _open( const char * filename, const char * mode) override { if (_media -> begin()) { _file = _media -> open(filename, mode); return _file != false; } return false; } size_t _write( const uint8_t * buf, const size_t size) override { if (_file) return _file.write(buf, size); else return - 1 ; } void _close( void ) override { if (_file) _file.close(); _media -> end(); } private : SPIFFST * _media; SPIFileT _file; };","title":" Member functions"},{"location":"acupload.html#register-custom-upload-handler","text":"In order to upload a file by the custom uploader, it is necessary to register it to the custom Web page beforehand. To register a custom uploader, specify the custom uploader class name in the template argument of the AutoConnectAux::onUpload function and invokes it. void AutoConnectAux :: onUpload < T > (T & uploadClass) Parameters T Specifies a class name of the custom uploader. This class name is a class that you implemented by inheriting AutoConnectUploadHandler for custom upload. uploadClass Specifies the custom upload class instance. The rough structure of the sketches that completed these implementations will be as follows: #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <AutoConnect.h> static const char PAGE_UPLOAD[] PROGMEM = R\"( { \"uri\": \"/\", \"title\": \"Upload\", \"menu\": true, \"element\": [ { \"name\":\"caption\", \"type\":\"ACText\", \"value\":\"<h2>File uploading platform<h2>\" }, { \"name\":\"upload_file\", \"type\":\"ACFile\", \"label\":\"Select file: \", \"store\":\"extern\" }, { \"name\":\"upload\", \"type\":\"ACSubmit\", \"value\":\"UPLOAD\", \"uri\":\"/upload\" } ] } )\" ; static const char PAGE_RECEIVED[] PROGMEM = R\"( { \"uri\": \"/upload\", \"title\": \"Upload ended\", \"menu\": false, \"element\": [ { \"name\":\"caption\", \"type\":\"ACText\", \"value\":\"<h2>File uploading ended<h2>\" } ] } )\" ; // Custom upload handler class class CustomUploader : public AutoConnectUploadHandler { public : CustomUploader() {} ~ CustomUploader() {} protected : bool _open( const char * filename, const char * mode) override ; size_t _write ( const uint8_t * buf, const size_t size) override ; void _close ( void ) override ; }; // _open for custom open bool CustomUploader :: _open( const char * filename, const char * mode) { // Here, an implementation for the open file. } // _open for custom write size_t CustomUploader :: _write( const uint8_t * buf, const size_t size) { // Here, an implementation for the writing the file data. } // _open for custom close void CustomUploader :: _close( void ) { // Here, an implementation for the close file. } AutoConnect portal; AutoConnectAux uploadPage; AutoConnectAux receivePage; CustomUploader uploader; // Declare the custom uploader void setup () { uploadPage.load(PAGE_UPLOAD); receivePage.load(PAGE_RECEIVED); portal.join({ uploadPage, receivePage }); receivePage.onUpload < CustomUploader > (uploader); // Register the custom uploader portal.begin(); } void loop () { portal.handleClient(); } Don't forget to specify the store When using a custom uploader, remember to specify the extern for the store attribute of AutoConnectFile. window.onload = function() { Gifffer(); }; The AutoConnectFile element can be used with other AutoConnectElements on the same page. \u21a9","title":" Register custom upload handler"},{"location":"advancedusage.html","text":"Advanced usage \u00b6 404 handler \u00b6 Registering the \"not found\" handler is a different way than ESP8266WebServer (WebServer as ESP32). The onNotFound of ESP8266WebServer/WebServer does not work with AutoConnect. AutoConnect overrides ESP8266WebServer::onNotFound / WebServer::onNotFound to handle a captive portal. To register \"not found\" handler, use AutoConnect::onNotFound . Access to saved credentials \u00b6 AutoConnect stores the established WiFi connection in the EEPROM of the ESP8266/ESP32 module and equips the class to access it from the sketch. You can read, write or erase the credentials using this class individually. It's AutoConnectCredential class which provides the access method to the saved credentials in EEPROM. Refer to section Saved credentail access for details. Automatic reconnect \u00b6 When the captive portal is started, SoftAP starts and the STA is disconnected. The current SSID setting memorized in ESP8266 will be lost but then the reconnect behavior of ESP32 is somewhat different from this. The WiFiSTAClass::disconnect function implemented in the arduino-esp32 has extended parameters than the ESP8266's arduino-core. The second parameter of WiFi.disconnect on the arduino-esp32 core that does not exist in the ESP8266WiFiSTAClass has the effect of deleting the currently connected WiFi configuration and its default value is \"false\". On the ESP32 platform, even if WiFi.disconnect is executed, WiFi.begin() without the parameters in the next turn will try to connect to that AP. That is, automatic reconnection is implemented in arduino-esp32 already. Although this behavior appears seemingly competent, it is rather a disadvantage in scenes where you want to change the access point each time. When explicitly disconnecting WiFi from the Disconnect menu, AutoConnect will erase the AP connection settings saved by arduino-esp32 core. AutoConnect's automatic reconnection is a mechanism independent from the automatic reconnection of the arduino-esp32 core. If the autoReconnect option of the AutoConnectConfig class is enabled, it automatically attempts to reconnect to the disconnected past access point. When the autoReconnect option is specified, AutoConnect will not start SoftAP immediately if the first WiFi.begin fails. It will scan WiFi signal and the same connection information as the detected BSSID is stored in EEPROM as AutoConnect's credentials, explicitly apply it with WiFi.begin and rerun. AutoConnect Portal; AutoConnectConfig Config; Config.autoReconnect = true; Portal.config(Config); Portal.begin(); An autoReconnect option is available to AutoConnect::begin without SSID and pass passphrase. An autoReconnect will work if SSID detection succeeded An autoReconnect will not effect if the SSID which stored credential to be connected is a hidden access point. Auto save Credential \u00b6 By default, AutoConnect saves the credentials of the established connection in EEPROM. You can disable it with the autoSave parameter specified by AutoConnectConfig . AutoConnect Portal; AutoConnectConfig Config; Config.autoSave = AC_SAVECREDENTIAL_NEVER; Portal.config(Config); Portal.begin(); In ESP32, the credentials for AutoConnect are not in NVS The credentials used by AutoConnect are not saved in NVS on ESP32 module. ESP-IDF saves the WiFi connection configuration to NVS, but AutoConnect stores it on the EEPROM partition. You can find the partition table for default as default.csv Captive portal start detection \u00b6 The captive portal will only be activated if the first WiFi::begin fails. Sketch can detect with the AutoConnect::onDetect function that the captive portal has started. For example, the sketch can be written like as follows that turns on the LED at the start captive portal. AutoConnect Portal; bool startCP (IPAddress ip) { digitalWrite(BUILTIN_LED, HIGH); Serial.println( \"C.P. started, IP:\" + WiFi.localIP().toString()); return true; } void setup () { Serial.begin( 115200 ); pinMode(BUILTIN_LED, OUTPUT); digitalWrite(BUILTIN_LED, LOW); Portal.onDetect(startCP); if (Portal.begin()) { digitalWrite(BUILTIN_LED, LOW); } } void loop () { Portal.handleClient(); } Captive portal timeout control \u00b6 AutoConnect has two parameters for timeout control. One is a timeout value used when trying to connect to the specified AP. It behaves the same as general timeout control in connection attempt by WiFi.begin. This control is specified by the third parameter of AutoConnect::begin . The default value is macro defined by AUTOCONNECT_TIMEOUT in the AutoConnectDef.h file. The other timeout control is for the captive portal itself. It is useful when you want to continue sketch execution with offline even if the WiFi connection is not possible. You can also combine it with the immediateStart option to create sketches with high mobility. The timeout of the captive portal is specified together with AutoConnectConfig::portalTimeout as follows. #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <AutoConnect.h> AutoConnect portal; AutoConnectConfig config; void setup () { config.portalTimeout = 60000 ; // It will time out in 60 seconds portal.config(config); portal.begin(); } void loop () { if (WiFi.status() == WL_CONNECTED) { // Some sketch code for the connected scene is here. } else { // Some sketch code for not connected scene is here. } portal.handleClient(); } Also, if you want to stop AutoConnect completely when the captive portal is timed out, you need to call the AutoConnect::end function. It looks like the following code: bool acEnable; void setup () { config.portalTimeout = 60000 ; // It will time out in 60 seconds portal.config(config); acEnable = portal.begin(); if ( ! acEnable) { portal.end(); } } void loop () { if (WiFi.status() == WL_CONNECTED) { // Some sketch code for the connected scene is here. } else { // Some sketch code for not connected scene is here. } if (acEnable) { portal.handleClient(); } } There is another option related to timeout in AutoConnectConfig. It can make use of the captive portal function even after a timeout. The AutoConnectConfig::retainPortal option will not stop the SoftAP when the captive portal is timed out. If you enable the ratainPortal option, you can try to connect to the AP at any time while continuing to sketch execution with offline even after the captive portal timed-out. Compared to the above code specified no option with the following example code, the captive portal will remain available even after a timeout without changing the logic of the sketch. #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <AutoConnect.h> AutoConnect portal; AutoConnectConfig config; void setup () { config.portalTimeout = 60000 ; // It will time out in 60 seconds config.retainPortal = true; portal.config(config); portal.begin(); } void loop () { if (WiFi.status() == WL_CONNECTED) { // Some sketch code for the connected scene is here. } else { // Some sketch code for not connected scene is here. } portal.handleClient(); } Casts the HTML pages to be add-on into the menu \u00b6 If your sketch handles web pages, you can embed the pages into the AutoConnect menu in continuance enjoying the utility of the WiFi connection feature. Unlike the custom Web pages by AutoConnectElements , this allows to legacy web pages registered by ESP8266WebServer::on or WebServer::on function. You can use AutoConnectAux only constructed with the URI of the page to be embedding. AutoConnectElements is not required. The basic procedure for this as follows: Declare AutoConnectAux for each legacy page. It includes the URI of the page and item string which will display in the AutoConnect menu. Sketch the legacy page handlers. Register those handler functions to ESP8266WebServer/WebServer with the on function. Register AutoConnectAux declared with #1 to AutoConnect using AutoConnect::join function. It serves as a menu item. Begin the portal. Performs AutoConnect::handleClient in the loop function. For details, see section Constructing the menu of Examples page. Change menu title \u00b6 Although the default menu title is AutoConnect , you can change the title by setting AutoConnectConfig::title . To set the menu title properly, you must set before calling AutoConnect::begin . AutoConnect Portal; AutoConnectConfig Config; void setup () { // Set menu title Config.title = \"FSBrowser\" ; Portal.config(Config); Portal.begin(); } Executing the above sketch will rewrite the menu title for the FSBrowser as the below. Change the menu labels \u00b6 You can change the label of the AutoConnect menu item by rewriting the default label letter in AutoConnectLabels.h macros. However, changing menu items letter influences all the sketch's build scenes. #define AUTOCONNECT_MENULABEL_CONFIGNEW \"Configure new AP\" #define AUTOCONNECT_MENULABEL_OPENSSIDS \"Open SSIDs\" #define AUTOCONNECT_MENULABEL_DISCONNECT \"Disconnect\" #define AUTOCONNECT_MENULABEL_RESET \"Reset...\" #define AUTOCONNECT_MENULABEL_HOME \"HOME\" #define AUTOCONNECT_BUTTONLABEL_RESET \"RESET\" Combination with mDNS \u00b6 With mDNS library , you can access to ESP8266 by name instead of IP address after connection. The sketch can start the MDNS responder after AutoConnect::begin . #include <ESP8266WiFi.h> #include <ESP8266mDNS.h> #include <ESP8266WebServer.h> AutoConnect Portal; void setup () { if (Portal.begin()) { if (MDNS.begin( \"esp8266\" )) { MDNS.addService( \"http\" , \"tcp\" , 80 ); } } } void loop () { Portal.handleClient(); } Debug print \u00b6 You can output AutoConnect monitor messages to the Serial . A monitor message activation switch is in an include header file AutoConnectDefs.h of library source. Define AC_DEBUG macro to output the monitor messages. 1 #define AC_DEBUG Disable the captive portal \u00b6 It can also prevent the captive portal from starting even if the connection at the first WiFi.begin fails. In this case, AutoConnect::begin behaves same as WiFi.begin . For disabling the captive portal, autoRise sets to false with AutoConnectConfig . AutoConnect portal; AutoConnectConfig acConfig; acConfig.autoRaise = false; portal.config(acConfig); portal.begin(); Make SSID of SoftAP unique \u00b6 You can change SoftAP's SSID and password programmatically when the captive portal starts up. By using chip specific ID of esp8266/esp32 you can make SSID of SoftAP unique. SSID and password for SoftAP is AutoConnectConfig::apid and AutoConnectConfig::psk . AutoConnect portal; AutoConnectConfig acConfig; acConfig.apid = \"ESP-\" + String(ESP.getChipId(), HEX); acConfig.psk = YOUR_PASSWORD; portal.config(acConfig); portal.begin(); Obtaining chip ID for ESP32 acConfig.apid = \"ESP-\" + String((uint32_t)(ESP.getEfuseMac() >> 32), HEX); Move the saving area of EEPROM for the credentials \u00b6 By default, the credentials saving area is occupied from the beginning of EEPROM area. ESP8266 Arduino core document says that: The following diagram illustrates flash layout used in Arduino environment: |--------------|-------|---------------|--|--|--|--|--| ^ ^ ^ ^ ^ Sketch OTA update File system EEPROM WiFi config (SDK) and EEPROM library uses one sector of flash located just after the SPIFFS . Also, the placement of the EEPROM area of ESP32 is described in the partition table . So in the default state, the credential storage area used by AutoConnect conflicts with data owned by the user sketch. It will be destroyed together saved data in EEPROM by user sketch and AutoConnect each other. But you can move the storage area to avoid this. The boundaryOffset in AutoConnectConfig specifies the start offset of the credentials storage area. The default value is 0. On-demand start the captive portal \u00b6 If you do not usually connect to WiFi and need to establish a WiFi connection if necessary, you can combine the autoRise option with the immediateStart option to achieve on-demand connection. This behavior is similar to the WiFiManager's startConfigPortal function. In order to do this, you usually configure only with AutoConnectConfig in setup() and AutoConnect::begin handles in loop() . AutoConnect Portal; AutoConnectConfig Config; void setup () { Config.autoRise = false; Config.immediateStart = true; Portal.config(Config); } void loop () { if (digitalRead(TRIGGER_PIN) == LOW) { while (digitalRead(TRIGGER_PIN) == LOW) yield(); Portal.begin(); } Portal.handleClient(); } The above example does not connect to WiFi until TRIGGER_PIN goes LOW. When TRIGGER_PIN goes LOW, the captive portal starts and you can connect to WiFi. Even if you reset the module, it will not automatically reconnect. Refers the hosted ESP8266WebServer/WebServer \u00b6 Constructing an AutoConnect object variable without parameters then creates and starts an ESP8266WebServer/WebServer inside the AutoConnect. This object variable could be referred by AutoConnect::host function to access ESP8266WebServer/WebServer instance as like below. AutoConnect Portal; Portal.begin(); ESP8266WebServer & server = Portal.host(); server.send( 200 , \"text/plain\" , \"Hello, world\" ); When host() is valid The host() can be referred at after AutoConnect::begin . Usage for automatically instantiated ESP8266WebServer/WebServer \u00b6 The sketch can handle URL requests using ESP8266WebServer or WebServer that AutoConnect started internally. ESP8266WebServer/WebServer instantiated dynamically by AutoConnect can be referred to by AutoConnect::host function. The sketch can use the ' on ' function, ' send ' function, ' client ' function and others by ESP8266WebServer/WebServer reference of its return value. #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <AutoConnect.h> AutoConnect Portal; void handleRoot () { ESP8266WebServer & IntServer = Portal.host(); IntServer.send( 200 , \"text/html\" , \"Hello, world\" ); } void handleNotFound () { ESP8266WebServer & IntServer = Portal.host(); IntServer.send( 404 , \"text/html\" , \"Unknown.\" ); } void setup () { bool r = Portal.begin(); if (r) { ESP8266WebServer & IntServer = Portal.host(); IntServer.on( \"/\" , handleRoot); Portal.onNotFound(handleNotFound); // For only onNotFound. } } void loop () { Portal.host().handleClient(); Portal.handleRequest(); /* or following one line code is equ. Portal.handleClient(); */ } ESP8266WebServer/WebServer function should be called after AutoConnect::begin The sketch cannot refer to an instance of ESP8266WebServer/WebServer until AutoConnect::begin completes successfully. Do not use with ESP8266WebServer::begin or WebServer::begin ESP8266WebServer/WebServer is already running inside the AutoConnect. Use with the PageBuilder library \u00b6 In ordinary, the URL handler will respond the request by sending some HTML. PageBuilder library is HTML assembly aid. it can handle predefined HTML as like a template and simplify an HTML string assemble logic, and also the generated HTML send automatically. An example sketch used with the PageBuilder as follows and it explains how it aids for the HTML generating. Details for Github repository . Configuration functions \u00b6 Configuration for Soft AP and captive portal \u00b6 AutoConnect will activate SoftAP at failed the first WiFi.begin . It SoftAP settings are stored in AutoConnectConfig as the following parameters. The sketch could be configured SoftAP using these parameters, refer the AutoConnectConfig API for details. IP address of SoftAP activated. Gateway IP address. Subnet mask. SSID for SoftAP. Password for SoftAP. Channel. SoftAP name. Hidden attribute. Station hostname. Auto save credential. Offset address of the credentials storage area in EEPROM. Captive portal time out limit. Maintain portal function even after a timeout. Length of start up time after reset. Automatic starting the captive portal. Start the captive portal forcefully. Auto reset after connection establishment. Home URL of the user sketch application. Menu title. AutoConnect::config before AutoConnect::begin AutoConnect::config must be executed before AutoConnect::begin . Assign user sketch's home path \u00b6 HOME for returning to the user's sketch homepage will display at the bottom of the AutoConnect menu. It could be set using the AutoConnect::home function. Change SSID and Password for SoftAP \u00b6 An esp8266ap is default SSID name for SoftAP of captive portal and password is 12345678 for ESP8266. Similarly, esp32ap and 12345678 for ESP32. You can change both by setting apid and psk . AutoConnect portal; AutoConnectConfig config; void setup () { config.apid = \"ap_portal\" ; config.psk = \"new_password\" ; portal.config(config); portal.begin(); } Also, you can specify the SSID, password for SoftAP with the constructor of the AutoConnectConfig as below. AutoConnect portal; AutoConnectConfig config ( \"ap_portal\" , \"new_passwrod\" ); void setup () { portal.config(config); portal.begin(); } Relocate the AutoConnect home path \u00b6 A home path of AutoConnect is /_ac by default. You can access from the browser with http://IPADDRESS/_ac. You can change the home path by revising AUTOCONNECT_URI macro in the include header file as AutoConnectDef.h . #define AUTOCONNECT_URI \"/_ac\" Static IP assignment 2 \u00b6 It is also possible to assign static IP Address to ESP8266/ESP32 in STA mode. By default DHCP is enabled and it becomes the IP address assigned by the DHCP server with WiFi.begin . To assign a static IP to ESP8266/ESP32 with WIFI_MODE_STA, the following parameters are required: IP address. Gateway address. Subnet mask. Primary DNS server. Secondary DNS server. (optional) The above parameters must be executed before AutoConnect::begin as arguments of AutoConnectConfig . AutoConnect portal; AutoConnectConfig Config; Config.staip = IPAddress( 192 , 168 , 1 , 10 ); Config.staGateway = IPAddress( 192 , 168 , 1 , 1 ); Config.staNetmask = IPAddress( 255 , 255 , 255 , 0 ); Config.dns1 = IPAddress( 192 , 168 , 1 , 1 ); portal.config(Config); portal.begin(); Station host name \u00b6 AutoConnectConfig::hostName assigns the station DHCP hostname which complies with RFC952 . It must satisfy the following constraints. Up to 24 characters Only the alphabet (a-z, A-Z), digits (0-9), minus sign (-) No '-' as last character The source code placement of common macros for AutoConnect since v0.9.7 has changed. \u21a9 Static IP address assignment is available from version 0.9.3. \u21a9","title":"Advanced usage"},{"location":"advancedusage.html#advanced-usage","text":"","title":"Advanced usage"},{"location":"advancedusage.html#404-handler","text":"Registering the \"not found\" handler is a different way than ESP8266WebServer (WebServer as ESP32). The onNotFound of ESP8266WebServer/WebServer does not work with AutoConnect. AutoConnect overrides ESP8266WebServer::onNotFound / WebServer::onNotFound to handle a captive portal. To register \"not found\" handler, use AutoConnect::onNotFound .","title":" 404 handler"},{"location":"advancedusage.html#access-to-saved-credentials","text":"AutoConnect stores the established WiFi connection in the EEPROM of the ESP8266/ESP32 module and equips the class to access it from the sketch. You can read, write or erase the credentials using this class individually. It's AutoConnectCredential class which provides the access method to the saved credentials in EEPROM. Refer to section Saved credentail access for details.","title":" Access to saved credentials"},{"location":"advancedusage.html#automatic-reconnect","text":"When the captive portal is started, SoftAP starts and the STA is disconnected. The current SSID setting memorized in ESP8266 will be lost but then the reconnect behavior of ESP32 is somewhat different from this. The WiFiSTAClass::disconnect function implemented in the arduino-esp32 has extended parameters than the ESP8266's arduino-core. The second parameter of WiFi.disconnect on the arduino-esp32 core that does not exist in the ESP8266WiFiSTAClass has the effect of deleting the currently connected WiFi configuration and its default value is \"false\". On the ESP32 platform, even if WiFi.disconnect is executed, WiFi.begin() without the parameters in the next turn will try to connect to that AP. That is, automatic reconnection is implemented in arduino-esp32 already. Although this behavior appears seemingly competent, it is rather a disadvantage in scenes where you want to change the access point each time. When explicitly disconnecting WiFi from the Disconnect menu, AutoConnect will erase the AP connection settings saved by arduino-esp32 core. AutoConnect's automatic reconnection is a mechanism independent from the automatic reconnection of the arduino-esp32 core. If the autoReconnect option of the AutoConnectConfig class is enabled, it automatically attempts to reconnect to the disconnected past access point. When the autoReconnect option is specified, AutoConnect will not start SoftAP immediately if the first WiFi.begin fails. It will scan WiFi signal and the same connection information as the detected BSSID is stored in EEPROM as AutoConnect's credentials, explicitly apply it with WiFi.begin and rerun. AutoConnect Portal; AutoConnectConfig Config; Config.autoReconnect = true; Portal.config(Config); Portal.begin(); An autoReconnect option is available to AutoConnect::begin without SSID and pass passphrase. An autoReconnect will work if SSID detection succeeded An autoReconnect will not effect if the SSID which stored credential to be connected is a hidden access point.","title":" Automatic reconnect"},{"location":"advancedusage.html#auto-save-credential","text":"By default, AutoConnect saves the credentials of the established connection in EEPROM. You can disable it with the autoSave parameter specified by AutoConnectConfig . AutoConnect Portal; AutoConnectConfig Config; Config.autoSave = AC_SAVECREDENTIAL_NEVER; Portal.config(Config); Portal.begin(); In ESP32, the credentials for AutoConnect are not in NVS The credentials used by AutoConnect are not saved in NVS on ESP32 module. ESP-IDF saves the WiFi connection configuration to NVS, but AutoConnect stores it on the EEPROM partition. You can find the partition table for default as default.csv","title":" Auto save Credential"},{"location":"advancedusage.html#captive-portal-start-detection","text":"The captive portal will only be activated if the first WiFi::begin fails. Sketch can detect with the AutoConnect::onDetect function that the captive portal has started. For example, the sketch can be written like as follows that turns on the LED at the start captive portal. AutoConnect Portal; bool startCP (IPAddress ip) { digitalWrite(BUILTIN_LED, HIGH); Serial.println( \"C.P. started, IP:\" + WiFi.localIP().toString()); return true; } void setup () { Serial.begin( 115200 ); pinMode(BUILTIN_LED, OUTPUT); digitalWrite(BUILTIN_LED, LOW); Portal.onDetect(startCP); if (Portal.begin()) { digitalWrite(BUILTIN_LED, LOW); } } void loop () { Portal.handleClient(); }","title":" Captive portal start detection"},{"location":"advancedusage.html#captive-portal-timeout-control","text":"AutoConnect has two parameters for timeout control. One is a timeout value used when trying to connect to the specified AP. It behaves the same as general timeout control in connection attempt by WiFi.begin. This control is specified by the third parameter of AutoConnect::begin . The default value is macro defined by AUTOCONNECT_TIMEOUT in the AutoConnectDef.h file. The other timeout control is for the captive portal itself. It is useful when you want to continue sketch execution with offline even if the WiFi connection is not possible. You can also combine it with the immediateStart option to create sketches with high mobility. The timeout of the captive portal is specified together with AutoConnectConfig::portalTimeout as follows. #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <AutoConnect.h> AutoConnect portal; AutoConnectConfig config; void setup () { config.portalTimeout = 60000 ; // It will time out in 60 seconds portal.config(config); portal.begin(); } void loop () { if (WiFi.status() == WL_CONNECTED) { // Some sketch code for the connected scene is here. } else { // Some sketch code for not connected scene is here. } portal.handleClient(); } Also, if you want to stop AutoConnect completely when the captive portal is timed out, you need to call the AutoConnect::end function. It looks like the following code: bool acEnable; void setup () { config.portalTimeout = 60000 ; // It will time out in 60 seconds portal.config(config); acEnable = portal.begin(); if ( ! acEnable) { portal.end(); } } void loop () { if (WiFi.status() == WL_CONNECTED) { // Some sketch code for the connected scene is here. } else { // Some sketch code for not connected scene is here. } if (acEnable) { portal.handleClient(); } } There is another option related to timeout in AutoConnectConfig. It can make use of the captive portal function even after a timeout. The AutoConnectConfig::retainPortal option will not stop the SoftAP when the captive portal is timed out. If you enable the ratainPortal option, you can try to connect to the AP at any time while continuing to sketch execution with offline even after the captive portal timed-out. Compared to the above code specified no option with the following example code, the captive portal will remain available even after a timeout without changing the logic of the sketch. #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <AutoConnect.h> AutoConnect portal; AutoConnectConfig config; void setup () { config.portalTimeout = 60000 ; // It will time out in 60 seconds config.retainPortal = true; portal.config(config); portal.begin(); } void loop () { if (WiFi.status() == WL_CONNECTED) { // Some sketch code for the connected scene is here. } else { // Some sketch code for not connected scene is here. } portal.handleClient(); }","title":" Captive portal timeout control"},{"location":"advancedusage.html#casts-the-html-pages-to-be-add-on-into-the-menu","text":"If your sketch handles web pages, you can embed the pages into the AutoConnect menu in continuance enjoying the utility of the WiFi connection feature. Unlike the custom Web pages by AutoConnectElements , this allows to legacy web pages registered by ESP8266WebServer::on or WebServer::on function. You can use AutoConnectAux only constructed with the URI of the page to be embedding. AutoConnectElements is not required. The basic procedure for this as follows: Declare AutoConnectAux for each legacy page. It includes the URI of the page and item string which will display in the AutoConnect menu. Sketch the legacy page handlers. Register those handler functions to ESP8266WebServer/WebServer with the on function. Register AutoConnectAux declared with #1 to AutoConnect using AutoConnect::join function. It serves as a menu item. Begin the portal. Performs AutoConnect::handleClient in the loop function. For details, see section Constructing the menu of Examples page.","title":" Casts the HTML pages to be add-on into the menu"},{"location":"advancedusage.html#change-menu-title","text":"Although the default menu title is AutoConnect , you can change the title by setting AutoConnectConfig::title . To set the menu title properly, you must set before calling AutoConnect::begin . AutoConnect Portal; AutoConnectConfig Config; void setup () { // Set menu title Config.title = \"FSBrowser\" ; Portal.config(Config); Portal.begin(); } Executing the above sketch will rewrite the menu title for the FSBrowser as the below.","title":" Change menu title"},{"location":"advancedusage.html#change-the-menu-labels","text":"You can change the label of the AutoConnect menu item by rewriting the default label letter in AutoConnectLabels.h macros. However, changing menu items letter influences all the sketch's build scenes. #define AUTOCONNECT_MENULABEL_CONFIGNEW \"Configure new AP\" #define AUTOCONNECT_MENULABEL_OPENSSIDS \"Open SSIDs\" #define AUTOCONNECT_MENULABEL_DISCONNECT \"Disconnect\" #define AUTOCONNECT_MENULABEL_RESET \"Reset...\" #define AUTOCONNECT_MENULABEL_HOME \"HOME\" #define AUTOCONNECT_BUTTONLABEL_RESET \"RESET\"","title":" Change the menu labels"},{"location":"advancedusage.html#combination-with-mdns","text":"With mDNS library , you can access to ESP8266 by name instead of IP address after connection. The sketch can start the MDNS responder after AutoConnect::begin . #include <ESP8266WiFi.h> #include <ESP8266mDNS.h> #include <ESP8266WebServer.h> AutoConnect Portal; void setup () { if (Portal.begin()) { if (MDNS.begin( \"esp8266\" )) { MDNS.addService( \"http\" , \"tcp\" , 80 ); } } } void loop () { Portal.handleClient(); }","title":" Combination with mDNS"},{"location":"advancedusage.html#debug-print","text":"You can output AutoConnect monitor messages to the Serial . A monitor message activation switch is in an include header file AutoConnectDefs.h of library source. Define AC_DEBUG macro to output the monitor messages. 1 #define AC_DEBUG","title":" Debug print"},{"location":"advancedusage.html#disable-the-captive-portal","text":"It can also prevent the captive portal from starting even if the connection at the first WiFi.begin fails. In this case, AutoConnect::begin behaves same as WiFi.begin . For disabling the captive portal, autoRise sets to false with AutoConnectConfig . AutoConnect portal; AutoConnectConfig acConfig; acConfig.autoRaise = false; portal.config(acConfig); portal.begin();","title":" Disable the captive portal"},{"location":"advancedusage.html#make-ssid-of-softap-unique","text":"You can change SoftAP's SSID and password programmatically when the captive portal starts up. By using chip specific ID of esp8266/esp32 you can make SSID of SoftAP unique. SSID and password for SoftAP is AutoConnectConfig::apid and AutoConnectConfig::psk . AutoConnect portal; AutoConnectConfig acConfig; acConfig.apid = \"ESP-\" + String(ESP.getChipId(), HEX); acConfig.psk = YOUR_PASSWORD; portal.config(acConfig); portal.begin(); Obtaining chip ID for ESP32 acConfig.apid = \"ESP-\" + String((uint32_t)(ESP.getEfuseMac() >> 32), HEX);","title":" Make SSID of SoftAP unique"},{"location":"advancedusage.html#move-the-saving-area-of-eeprom-for-the-credentials","text":"By default, the credentials saving area is occupied from the beginning of EEPROM area. ESP8266 Arduino core document says that: The following diagram illustrates flash layout used in Arduino environment: |--------------|-------|---------------|--|--|--|--|--| ^ ^ ^ ^ ^ Sketch OTA update File system EEPROM WiFi config (SDK) and EEPROM library uses one sector of flash located just after the SPIFFS . Also, the placement of the EEPROM area of ESP32 is described in the partition table . So in the default state, the credential storage area used by AutoConnect conflicts with data owned by the user sketch. It will be destroyed together saved data in EEPROM by user sketch and AutoConnect each other. But you can move the storage area to avoid this. The boundaryOffset in AutoConnectConfig specifies the start offset of the credentials storage area. The default value is 0.","title":" Move the saving area of EEPROM for the credentials"},{"location":"advancedusage.html#on-demand-start-the-captive-portal","text":"If you do not usually connect to WiFi and need to establish a WiFi connection if necessary, you can combine the autoRise option with the immediateStart option to achieve on-demand connection. This behavior is similar to the WiFiManager's startConfigPortal function. In order to do this, you usually configure only with AutoConnectConfig in setup() and AutoConnect::begin handles in loop() . AutoConnect Portal; AutoConnectConfig Config; void setup () { Config.autoRise = false; Config.immediateStart = true; Portal.config(Config); } void loop () { if (digitalRead(TRIGGER_PIN) == LOW) { while (digitalRead(TRIGGER_PIN) == LOW) yield(); Portal.begin(); } Portal.handleClient(); } The above example does not connect to WiFi until TRIGGER_PIN goes LOW. When TRIGGER_PIN goes LOW, the captive portal starts and you can connect to WiFi. Even if you reset the module, it will not automatically reconnect.","title":" On-demand start the captive portal"},{"location":"advancedusage.html#refers-the-hosted-esp8266webserverwebserver","text":"Constructing an AutoConnect object variable without parameters then creates and starts an ESP8266WebServer/WebServer inside the AutoConnect. This object variable could be referred by AutoConnect::host function to access ESP8266WebServer/WebServer instance as like below. AutoConnect Portal; Portal.begin(); ESP8266WebServer & server = Portal.host(); server.send( 200 , \"text/plain\" , \"Hello, world\" ); When host() is valid The host() can be referred at after AutoConnect::begin .","title":" Refers the hosted ESP8266WebServer/WebServer"},{"location":"advancedusage.html#usage-for-automatically-instantiated-esp8266webserverwebserver","text":"The sketch can handle URL requests using ESP8266WebServer or WebServer that AutoConnect started internally. ESP8266WebServer/WebServer instantiated dynamically by AutoConnect can be referred to by AutoConnect::host function. The sketch can use the ' on ' function, ' send ' function, ' client ' function and others by ESP8266WebServer/WebServer reference of its return value. #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <AutoConnect.h> AutoConnect Portal; void handleRoot () { ESP8266WebServer & IntServer = Portal.host(); IntServer.send( 200 , \"text/html\" , \"Hello, world\" ); } void handleNotFound () { ESP8266WebServer & IntServer = Portal.host(); IntServer.send( 404 , \"text/html\" , \"Unknown.\" ); } void setup () { bool r = Portal.begin(); if (r) { ESP8266WebServer & IntServer = Portal.host(); IntServer.on( \"/\" , handleRoot); Portal.onNotFound(handleNotFound); // For only onNotFound. } } void loop () { Portal.host().handleClient(); Portal.handleRequest(); /* or following one line code is equ. Portal.handleClient(); */ } ESP8266WebServer/WebServer function should be called after AutoConnect::begin The sketch cannot refer to an instance of ESP8266WebServer/WebServer until AutoConnect::begin completes successfully. Do not use with ESP8266WebServer::begin or WebServer::begin ESP8266WebServer/WebServer is already running inside the AutoConnect.","title":" Usage for automatically instantiated ESP8266WebServer/WebServer"},{"location":"advancedusage.html#use-with-the-pagebuilder-library","text":"In ordinary, the URL handler will respond the request by sending some HTML. PageBuilder library is HTML assembly aid. it can handle predefined HTML as like a template and simplify an HTML string assemble logic, and also the generated HTML send automatically. An example sketch used with the PageBuilder as follows and it explains how it aids for the HTML generating. Details for Github repository .","title":" Use with the PageBuilder library"},{"location":"advancedusage.html#configuration-functions","text":"","title":"Configuration functions"},{"location":"advancedusage.html#configuration-for-soft-ap-and-captive-portal","text":"AutoConnect will activate SoftAP at failed the first WiFi.begin . It SoftAP settings are stored in AutoConnectConfig as the following parameters. The sketch could be configured SoftAP using these parameters, refer the AutoConnectConfig API for details. IP address of SoftAP activated. Gateway IP address. Subnet mask. SSID for SoftAP. Password for SoftAP. Channel. SoftAP name. Hidden attribute. Station hostname. Auto save credential. Offset address of the credentials storage area in EEPROM. Captive portal time out limit. Maintain portal function even after a timeout. Length of start up time after reset. Automatic starting the captive portal. Start the captive portal forcefully. Auto reset after connection establishment. Home URL of the user sketch application. Menu title. AutoConnect::config before AutoConnect::begin AutoConnect::config must be executed before AutoConnect::begin .","title":" Configuration for Soft AP and captive portal"},{"location":"advancedusage.html#assign-user-sketchs-home-path","text":"HOME for returning to the user's sketch homepage will display at the bottom of the AutoConnect menu. It could be set using the AutoConnect::home function.","title":" Assign user sketch's home path"},{"location":"advancedusage.html#change-ssid-and-password-for-softap","text":"An esp8266ap is default SSID name for SoftAP of captive portal and password is 12345678 for ESP8266. Similarly, esp32ap and 12345678 for ESP32. You can change both by setting apid and psk . AutoConnect portal; AutoConnectConfig config; void setup () { config.apid = \"ap_portal\" ; config.psk = \"new_password\" ; portal.config(config); portal.begin(); } Also, you can specify the SSID, password for SoftAP with the constructor of the AutoConnectConfig as below. AutoConnect portal; AutoConnectConfig config ( \"ap_portal\" , \"new_passwrod\" ); void setup () { portal.config(config); portal.begin(); }","title":" Change SSID and Password for SoftAP"},{"location":"advancedusage.html#relocate-the-autoconnect-home-path","text":"A home path of AutoConnect is /_ac by default. You can access from the browser with http://IPADDRESS/_ac. You can change the home path by revising AUTOCONNECT_URI macro in the include header file as AutoConnectDef.h . #define AUTOCONNECT_URI \"/_ac\"","title":" Relocate the AutoConnect home path"},{"location":"advancedusage.html#static-ip-assignment-2","text":"It is also possible to assign static IP Address to ESP8266/ESP32 in STA mode. By default DHCP is enabled and it becomes the IP address assigned by the DHCP server with WiFi.begin . To assign a static IP to ESP8266/ESP32 with WIFI_MODE_STA, the following parameters are required: IP address. Gateway address. Subnet mask. Primary DNS server. Secondary DNS server. (optional) The above parameters must be executed before AutoConnect::begin as arguments of AutoConnectConfig . AutoConnect portal; AutoConnectConfig Config; Config.staip = IPAddress( 192 , 168 , 1 , 10 ); Config.staGateway = IPAddress( 192 , 168 , 1 , 1 ); Config.staNetmask = IPAddress( 255 , 255 , 255 , 0 ); Config.dns1 = IPAddress( 192 , 168 , 1 , 1 ); portal.config(Config); portal.begin();","title":" Static IP assignment 2"},{"location":"advancedusage.html#station-host-name","text":"AutoConnectConfig::hostName assigns the station DHCP hostname which complies with RFC952 . It must satisfy the following constraints. Up to 24 characters Only the alphabet (a-z, A-Z), digits (0-9), minus sign (-) No '-' as last character The source code placement of common macros for AutoConnect since v0.9.7 has changed. \u21a9 Static IP address assignment is available from version 0.9.3. \u21a9","title":" Station host name"},{"location":"api.html","text":"Include headers \u00b6 AutoConnect.h \u00b6 #include <AutoConnect.h> Defined macros \u00b6 They contain in AutoConnectDefs.h . #define AC_DEBUG // Monitor message output activation #define AC_DEBUG_PORT Serial // Default message output device #define AUTOCONNECT_AP_IP 0x01F4A8C0 // Default SoftAP IP #define AUTOCONNECT_AP_GW 0x01F4A8C0 // Default SoftAP Gateway IP #define AUTOCONNECT_AP_NM 0x00FFFFFF // Default subnet mask #define AUTOCONNECT_DNSPORT 53 // Default DNS port at captive portal #define AUTOCONNECT_HTTPPORT 80 // Default HTTP #define AUTOCONNECT_MENU_TITLE \"AutoConnect\" // Default AutoConnect menu title #define AUTOCONNECT_STARTUPTIME 10 // Default waiting time[s] for after reset #define AUTOCONNECT_URI \"/_ac\" // Default AutoConnect root path #define AUTOCONNECT_TIMEOUT 30000 // Default connection timeout[ms] #define AUTOCONNECT_CAPTIVEPORTAL_TIMEOUT 0 // Captive portal timeout value #define AUTOCONNECT_USE_JSON // Allow AutoConnect elements to be handled by JSON format Macros placement moved Source code placement of the above macros provided for user sketch changed from v0.9.7. The new code is in AutoConnectDefs.h . Constructors \u00b6 AutoConnect \u00b6 AutoConnect() AutoConnect default constructor. This entry internally allocates the ESP8266WebServer for ESP8266 or WebServer for ESP32 and is activated internally. For ESP8266 AutoConnect(ESP8266WebServer & webServer) For ESP32 AutoConnect(WebServer & webServer) Run the AutoConnect site using the externally ensured ESP8266WebServer for ESP8266 or WebServer for ESP32. The handleClient function of AutoConnect can include the response of the URI handler added by the user using the \" on \" function of ESP8266WebServer/WebServer. If ESP8266WebServer/WebServer is assigned internally by AutoConnect, the sketch can obtain that reference with the host function. Parameter webServer A reference of ESP8266WebServer or WebServer instance. Public member functions \u00b6 aux \u00b6 AutoConnectAux * aux( const String & uri) const Returns a pointer to AutoConnectAux with the URI specified by uri . If AutoConnectAux with that URI is not bound, it returns nullptr . Parameter uri A string of the URI. Return value A Pointer of the AutoConnectAux instance. begin \u00b6 bool begin() bool begin( const char * ssid, const char * passphrase) bool begin( const char * ssid, const char * passphrase, unsigned long timeout) Starts establishing the WiFi connection. The WiFi mode at this time is WIFI_STA. AutoConnect first invokes WiFi.begin . If the ssid and the passphrase are missing, its WiFi.begin has no SSID and Password. Regardless of the result, ESP8266WebServer/WebServer will start immediately after the first WiFi.begin . The captive portal will not be started if the connection has been established with first WiFi.begin . If the connection cannot establish, switch to WIFI_AP_STA mode and activate SoftAP. Then DNS server starts. Parameters ssid SSID to be connected. passphrase Password for connection. timeout A time out value in milliseconds for waiting connection. Return value true Connection established, AutoConnect service started with WIFI_STA mode. false Could not connected, Captive portal started with WIFI_AP_STA mode. config \u00b6 bool config(AutoConnectConfig & config) bool config( const char * ap, const char * password = nullptr ) Set SoftAP's WiFi configuration and static IP configuration. Parameters config Reference to AutoConnectConfig containing SoftAP's parameters and static IP parameters. ap SSID for SoftAP. The default value is esp8266ap for ESP8266, esp32ap for ESP32. password Password for SodtAP. The default value is 12345678 . Return value true Successfully configured. false Configuration parameter is invalid, some values out of range. end \u00b6 void end( void ) Stops AutoConnect captive portal service. Release ESP8266WebServer/WebServer and DNSServer. Attention to end The end function releases the instance of ESP8266WebServer/WebServer and DNSServer. It can not process them after the end function. handleClient \u00b6 void handleClient( void ) Process the AutoConnect menu interface. The handleClient() function of the ESP8266WebServer/WebServer hosted by AutoConnect is also called from within AutoConnect, and the client request handlers contained in the user sketch are also handled. handleRequest \u00b6 void handleRequest( void ) Handling for the AutoConnect menu request. About used in combination with handleClient The handleRequest function is not supposed to use with AutoConnect::handleClient. It should be used with ESP8266WebServer::handleClient or WebServer::handleClient. home \u00b6 void home(String & uri) Put a user site's home URI. The URI specified by home is linked from \"HOME\" in the AutoConnect menu. Parameter uri A URI string of user site's home path. host \u00b6 For ESP8266 ESP8266WebServer & host( void ) For ESP32 WebServer & host( void ) Returns the reference of the ESP8266WebServer/WebServer which is allocated in AutoConnect automatically. Return value A reference of the ESP8266WebServer/WebServer. &reference is not a pointer A reference cannot be re-assigned, and must be assigned at initialization. It's like as bind as alias. ESP8266WebServer & server = portal.host(); server.handleClient(); or portal.host().handleClient(); join \u00b6 void join(AutoConnectAux & aux) void join(std :: vector < std :: reference_wrapper < AutoConnectAux >> aux) Join the AutoConnectAux object to AutoConnect. AutoConnectAux objects can be joined one by one, or joined altogether. The AutoConnectAux object joined by the join function can be handled from the AutoConnect menu. Parameter aux Reference to AutoConnectAux. It can be std::vector of std::reference_wrapper of AutoConnectAux with list initialization . load \u00b6 bool load( const String & aux) bool load(PGM_P aux) bool load( const __FlashStringHelper * aux) bool load(Stream & aux) Load JSON document of AutoConnectAux which contains AutoConnectElements. If there is a syntax error in the JSON document, false is returned. Parameter aux The input string to be loaded. Return value true The JSON document as AutoConnectAux successfully loaded. false Loading JSON document unsuccessful, probably syntax errors have occurred or insufficient memory. You can diagnose the cause of loading failure using the ArduinoJson Assistant . on \u00b6 bool on( const String & uri, const AuxHandlerFunctionT handler, AutoConnectExitOrder_t order = AC_EXIT_AHEAD) Register the handler function of the AutoConnectAux. Parameters uri A string of the URI assigned to the AutoConnectAux page. handler A function that behaves when a request to the AutoConnectAux page occurs. AuxHandlerFunctionT type is defined by the following declaration. String handler(AutoConnectAux&, PageArgument&) order Specifies when the handler is called with the following enumeration value. AC_EXIT_AHEAD : Called before AutoConnect generates the HTML of the page. You set the value of AutoConnectElements in the handler then its value will be displayed on the page. AC_EXIT_LATER : Called after AutoConnect generates the HTML of the page. You can append to HTML generated by AutoConnect. AC_EXIT_BOTH : Called even before generating HTML and after generated. It is not ESP8266WebServer::on, not WebServer::on for ESP32. This function effects to AutoConnectAux only. However, it coexists with that of ESP8266WebServer::on or WebServer::on of ESP32. onDetect \u00b6 void onDetect(DetectExit_ft fn) Register the function which will call from AutoConnect at the start of the captive portal. Parameter fn Function called at the captive portal start. An fn specifies the function called when the captive portal starts. Its prototype declaration is defined as \" DetectExit_ft \". typedef std :: function < bool (IPAddress softapIP) > DetectExit_ft Parameter softapIP An IP address of SoftAP for the captive portal. Return value true Continues captive portal handling. false Cancel the captive portal. AutoConnect::begin function will return with a false. onNotFound \u00b6 For ESP8266 void onNotFound(ESP8266WebServer :: THandlerFunction fn) For ESP32 void onNotFound(WebServer :: THandlerFunction fn) Register the handler function for undefined URL request detected. Parameter fn A function of the \"not found\" handler. where \u00b6 String where( void ) Returns an uri string of the AutoConnectAux uri object of the custom Web page that caused the request to the page. AutoConnect identifies the URI (ie. the referrer URI) that caused the request each time from the client occurs and will save the URI If the request source is a custom Web page of AutoConnectAux. The where function returns a pointer of AutoConnectAux which is a URI of a least recent request from the custom Web page. This function is provided to access the fields (ie. the AutoConnectElements) with a custom Web page handler of a page and is available only for request source that is the custom Web pages. It is invalid for HTTP requests from individual pages registered with the on handler of ESP8266WebServer/WebServer for ESP32. In other words, this function only returns the AutoConnecAux page which is a least recently displayed. Return value An uri string of the AutoConnectAux that caused the request the page. The where function usage is described in the section Where to pick up the values .","title":"AutoConnect API"},{"location":"api.html#include-headers","text":"","title":" Include headers"},{"location":"api.html#autoconnecth","text":"#include <AutoConnect.h>","title":"AutoConnect.h"},{"location":"api.html#defined-macros","text":"They contain in AutoConnectDefs.h . #define AC_DEBUG // Monitor message output activation #define AC_DEBUG_PORT Serial // Default message output device #define AUTOCONNECT_AP_IP 0x01F4A8C0 // Default SoftAP IP #define AUTOCONNECT_AP_GW 0x01F4A8C0 // Default SoftAP Gateway IP #define AUTOCONNECT_AP_NM 0x00FFFFFF // Default subnet mask #define AUTOCONNECT_DNSPORT 53 // Default DNS port at captive portal #define AUTOCONNECT_HTTPPORT 80 // Default HTTP #define AUTOCONNECT_MENU_TITLE \"AutoConnect\" // Default AutoConnect menu title #define AUTOCONNECT_STARTUPTIME 10 // Default waiting time[s] for after reset #define AUTOCONNECT_URI \"/_ac\" // Default AutoConnect root path #define AUTOCONNECT_TIMEOUT 30000 // Default connection timeout[ms] #define AUTOCONNECT_CAPTIVEPORTAL_TIMEOUT 0 // Captive portal timeout value #define AUTOCONNECT_USE_JSON // Allow AutoConnect elements to be handled by JSON format Macros placement moved Source code placement of the above macros provided for user sketch changed from v0.9.7. The new code is in AutoConnectDefs.h .","title":" Defined macros"},{"location":"api.html#constructors","text":"","title":" Constructors"},{"location":"api.html#autoconnect","text":"AutoConnect() AutoConnect default constructor. This entry internally allocates the ESP8266WebServer for ESP8266 or WebServer for ESP32 and is activated internally. For ESP8266 AutoConnect(ESP8266WebServer & webServer) For ESP32 AutoConnect(WebServer & webServer) Run the AutoConnect site using the externally ensured ESP8266WebServer for ESP8266 or WebServer for ESP32. The handleClient function of AutoConnect can include the response of the URI handler added by the user using the \" on \" function of ESP8266WebServer/WebServer. If ESP8266WebServer/WebServer is assigned internally by AutoConnect, the sketch can obtain that reference with the host function. Parameter webServer A reference of ESP8266WebServer or WebServer instance.","title":"AutoConnect"},{"location":"api.html#public-member-functions","text":"","title":" Public member functions"},{"location":"api.html#aux","text":"AutoConnectAux * aux( const String & uri) const Returns a pointer to AutoConnectAux with the URI specified by uri . If AutoConnectAux with that URI is not bound, it returns nullptr . Parameter uri A string of the URI. Return value A Pointer of the AutoConnectAux instance.","title":" aux"},{"location":"api.html#begin","text":"bool begin() bool begin( const char * ssid, const char * passphrase) bool begin( const char * ssid, const char * passphrase, unsigned long timeout) Starts establishing the WiFi connection. The WiFi mode at this time is WIFI_STA. AutoConnect first invokes WiFi.begin . If the ssid and the passphrase are missing, its WiFi.begin has no SSID and Password. Regardless of the result, ESP8266WebServer/WebServer will start immediately after the first WiFi.begin . The captive portal will not be started if the connection has been established with first WiFi.begin . If the connection cannot establish, switch to WIFI_AP_STA mode and activate SoftAP. Then DNS server starts. Parameters ssid SSID to be connected. passphrase Password for connection. timeout A time out value in milliseconds for waiting connection. Return value true Connection established, AutoConnect service started with WIFI_STA mode. false Could not connected, Captive portal started with WIFI_AP_STA mode.","title":" begin"},{"location":"api.html#config","text":"bool config(AutoConnectConfig & config) bool config( const char * ap, const char * password = nullptr ) Set SoftAP's WiFi configuration and static IP configuration. Parameters config Reference to AutoConnectConfig containing SoftAP's parameters and static IP parameters. ap SSID for SoftAP. The default value is esp8266ap for ESP8266, esp32ap for ESP32. password Password for SodtAP. The default value is 12345678 . Return value true Successfully configured. false Configuration parameter is invalid, some values out of range.","title":" config"},{"location":"api.html#end","text":"void end( void ) Stops AutoConnect captive portal service. Release ESP8266WebServer/WebServer and DNSServer. Attention to end The end function releases the instance of ESP8266WebServer/WebServer and DNSServer. It can not process them after the end function.","title":" end"},{"location":"api.html#handleclient","text":"void handleClient( void ) Process the AutoConnect menu interface. The handleClient() function of the ESP8266WebServer/WebServer hosted by AutoConnect is also called from within AutoConnect, and the client request handlers contained in the user sketch are also handled.","title":" handleClient"},{"location":"api.html#handlerequest","text":"void handleRequest( void ) Handling for the AutoConnect menu request. About used in combination with handleClient The handleRequest function is not supposed to use with AutoConnect::handleClient. It should be used with ESP8266WebServer::handleClient or WebServer::handleClient.","title":" handleRequest"},{"location":"api.html#home","text":"void home(String & uri) Put a user site's home URI. The URI specified by home is linked from \"HOME\" in the AutoConnect menu. Parameter uri A URI string of user site's home path.","title":" home"},{"location":"api.html#host","text":"For ESP8266 ESP8266WebServer & host( void ) For ESP32 WebServer & host( void ) Returns the reference of the ESP8266WebServer/WebServer which is allocated in AutoConnect automatically. Return value A reference of the ESP8266WebServer/WebServer. &reference is not a pointer A reference cannot be re-assigned, and must be assigned at initialization. It's like as bind as alias. ESP8266WebServer & server = portal.host(); server.handleClient(); or portal.host().handleClient();","title":" host"},{"location":"api.html#join","text":"void join(AutoConnectAux & aux) void join(std :: vector < std :: reference_wrapper < AutoConnectAux >> aux) Join the AutoConnectAux object to AutoConnect. AutoConnectAux objects can be joined one by one, or joined altogether. The AutoConnectAux object joined by the join function can be handled from the AutoConnect menu. Parameter aux Reference to AutoConnectAux. It can be std::vector of std::reference_wrapper of AutoConnectAux with list initialization .","title":" join"},{"location":"api.html#load","text":"bool load( const String & aux) bool load(PGM_P aux) bool load( const __FlashStringHelper * aux) bool load(Stream & aux) Load JSON document of AutoConnectAux which contains AutoConnectElements. If there is a syntax error in the JSON document, false is returned. Parameter aux The input string to be loaded. Return value true The JSON document as AutoConnectAux successfully loaded. false Loading JSON document unsuccessful, probably syntax errors have occurred or insufficient memory. You can diagnose the cause of loading failure using the ArduinoJson Assistant .","title":" load"},{"location":"api.html#on","text":"bool on( const String & uri, const AuxHandlerFunctionT handler, AutoConnectExitOrder_t order = AC_EXIT_AHEAD) Register the handler function of the AutoConnectAux. Parameters uri A string of the URI assigned to the AutoConnectAux page. handler A function that behaves when a request to the AutoConnectAux page occurs. AuxHandlerFunctionT type is defined by the following declaration. String handler(AutoConnectAux&, PageArgument&) order Specifies when the handler is called with the following enumeration value. AC_EXIT_AHEAD : Called before AutoConnect generates the HTML of the page. You set the value of AutoConnectElements in the handler then its value will be displayed on the page. AC_EXIT_LATER : Called after AutoConnect generates the HTML of the page. You can append to HTML generated by AutoConnect. AC_EXIT_BOTH : Called even before generating HTML and after generated. It is not ESP8266WebServer::on, not WebServer::on for ESP32. This function effects to AutoConnectAux only. However, it coexists with that of ESP8266WebServer::on or WebServer::on of ESP32.","title":" on"},{"location":"api.html#ondetect","text":"void onDetect(DetectExit_ft fn) Register the function which will call from AutoConnect at the start of the captive portal. Parameter fn Function called at the captive portal start. An fn specifies the function called when the captive portal starts. Its prototype declaration is defined as \" DetectExit_ft \". typedef std :: function < bool (IPAddress softapIP) > DetectExit_ft Parameter softapIP An IP address of SoftAP for the captive portal. Return value true Continues captive portal handling. false Cancel the captive portal. AutoConnect::begin function will return with a false.","title":" onDetect"},{"location":"api.html#onnotfound","text":"For ESP8266 void onNotFound(ESP8266WebServer :: THandlerFunction fn) For ESP32 void onNotFound(WebServer :: THandlerFunction fn) Register the handler function for undefined URL request detected. Parameter fn A function of the \"not found\" handler.","title":" onNotFound"},{"location":"api.html#where","text":"String where( void ) Returns an uri string of the AutoConnectAux uri object of the custom Web page that caused the request to the page. AutoConnect identifies the URI (ie. the referrer URI) that caused the request each time from the client occurs and will save the URI If the request source is a custom Web page of AutoConnectAux. The where function returns a pointer of AutoConnectAux which is a URI of a least recent request from the custom Web page. This function is provided to access the fields (ie. the AutoConnectElements) with a custom Web page handler of a page and is available only for request source that is the custom Web pages. It is invalid for HTTP requests from individual pages registered with the on handler of ESP8266WebServer/WebServer for ESP32. In other words, this function only returns the AutoConnecAux page which is a least recently displayed. Return value An uri string of the AutoConnectAux that caused the request the page. The where function usage is described in the section Where to pick up the values .","title":" where"},{"location":"apiaux.html","text":"Constructor \u00b6 AutoConnectAux \u00b6 AutoConnectAux( const String & uri = String( \"\" ), const String & title = String( \"\" ), const bool menu = true, const AutoConnectElementVT addons = AutoConnectElementVT()) Parameters uri URI of this custom Web Page. title Page title of this custom Web page. It will appear on the auto connection menu and at the top of that page. menu Specifies whether to display this page on menu. addons Reference to AutoConnectElement collection. Public member functions \u00b6 operator [ ] \u00b6 AutoConnectElement & operator []( const String & name) Returns a reference to the element specified by name . An operator [] is a shortcut for getElement function with the reference casting. Unlike getElement, which returns a pointer to that element, an operator [] returns a reference to that element. You also need to cast the return value to the actual type, just like the getElement function. Parameter name Name of the AutoConnectElements to be retrieved. Return value A reference to AutoConnectElement. It is different from the actual element type. add \u00b6 void add(AutoConnectElement & addon) void add(AutoConnectElementVT addons) Add an element to the AutoConnectAux. An added element is displayed on the custom Web page invoked from the AutoConnect menu. Parameters addon Reference of AutoConnectElements. Specifies one of the AutoConnectElements classes. addons An array list of reference of AutoConnectElements. The list initialization with braced-init-list of the std::vector can be used for the addons parameter cause the actual definition of type AutoConnectElementVT is std::vector<std::reference_wrapper<AutoConnectElement>> . getElement \u00b6 T & getElement < T > ( const String & name) AutoConnectElement * getElement( const String & name) Get a registered AutoConnectElement as specified name. If T is specified as an actual type of AutoConnectElements, it returns a reference to that instance. Parameters T Actual type name of AutoConnectElements as AutoConnectButton , AutoConnectCheckbox , AutoConnectElement , AutoConnectFile , AutoConnectInput , AutoConnectRadio , AutoConnectSelect , AutoConnectSubmit , AutoConnectText . name Name of the AutoConnectElements to be retrieved. Return value A reference of the AutoConnectElements. If a type is not specified returns a pointer. getElements \u00b6 AutoConnectElementVT & getElements( void ) Get vector of reference of all elements. Return value A reference to std::vector of reference to AutoConnecctElements. The getElements returns a reference to std::vector of reference to AutoConnecctElements. This function is provided to handle AutoConnectElemets owned by AutoConnectAux in bulk, and you can use each method of std::vector for a return value. // An example of getting type and name of all AutoConnectElements registered in AutoConnectAux. AutoConnectAux aux; // some code here... AutoConnectElementVt & elements = aux.getElements(); for (AutoConnectElement & elm : elements) { Serial.printf( \"name<%s> as type %d \\n \" , elm.name.c_str(), ( int )elm.typeOf()); } load \u00b6 bool load( const String & in) bool load(PGM_P in) bool load( const __FlashStringHelper * in) bool load(Stream & in) Load all AutoConnectElements elements from JSON document into AutoConnectAux as custom Web pages. The JSON document specified by the load function must be the document structure of AutoConnectAux. Its JSON document can describe multiple pages as an array. Parameter in Specifies the JSON document to be load. The load function can input the following objects. String : Read-only String PROGMEM : Character array contained in the flash Stream : An entity that inherits stream class, generally SPIFFS or SD. Return value true JSON document as the custom Web pages successfully loaded. false JSON document loading failed. Load multiple custom Web pages separately Multiple custom Web pages can be loaded at once with JSON as an array. But it will consume a lot of memory. By loading a JSON document by page as much as possible, you can reduce memory consumption. loadElement \u00b6 bool loadElement( const String & in, const String & name = String( \"\" )) bool loadElement( const String & in, std :: vector < String > const & names) bool loadElement(PGM_P in, const String & name = String( \"\" )) bool loadElement(PGM_P in, std :: vector < String > const & names) bool loadElement( const __FlashStringHelper * in, const String & name = String( \"\" )) bool loadElement( const __FlashStringHelper * in, std :: vector < String > const & names) bool loadElement(Stream & in, const String & name = String( \"\" )) bool loadElement(Stream & in, std :: vector < String > const & names) Load specified element from JSON document into AutoConnectAux. The JSON document specified by the loadElement function must be the AutoConnectElement document structure . When loading from a JSON document that describes multiple elements, its description must be an array syntax. Parameters in Specifies the JSON document to be load. The load function can input the following objects. String : Read-only String PROGMEM : Character array contained in the flash Stream : An entity that inherits stream class, generally SPIFFS or SD. name Specifies the name to be load. If the name is not specified, the loadElement function will load all elements contained in the JSON document. names Spefifies an array list of String indicating the name of the element to be loaded. The list initialization with braced-init-list of the std::vector can be used. Return value true Specified AutoConnectElements successfully loaded. false JSON document loading failed. Maybe it is an array Please note that the JSON document that is the input for loadElement is an array syntax of AutoConnectElements when there are multiple elements. For example, the following JSON document has a syntax error: { \"name\" : \"Caption\" , \"type\" : \"ACText\" , \"value\" : \"Hello, world\" } , { \"name\" : \"Server\" , \"type\" : \"ACInput\" , \"label\" : \"Server address\" } The outermost [ , ] is missing. menu \u00b6 void menu( const bool post) Set or reset the display as menu item for this AutoConnectAux. This function programmatically manipulates the menu parameter of the AutoConenctAux constructor . Parameter true Show on the menu. false Hidden on the menu. on \u00b6 void on( const AuxHandlerFunctionT handler, const AutoConnectExitOrder_t order = AC_EXIT_AHEAD) Register the handler function of the AutoConnectAux. Parameters handler A function that behaves when a request to the AutoConnectAux page occurs. AuxHandlerFunctionT type is defined by the following declaration. String handler(AutoConnectAux&, PageArgument&) order Specifies when the handler is called with the following enumeration value. AC_EXIT_AHEAD : Called before AutoConnect generates the HTML of the page. You set the value of AutoConnectElements in the handler then its value will be displayed on the page. AC_EXIT_LATER : Called after AutoConnect generates the HTML of the page. You can append to HTML generated by AutoConnect. AC_EXIT_BOTH : Called even before generating HTML and after generated. onUpload \u00b6 void onUpload < T &> (T handler) void onUpload(PageBuilder :: UploadFuncT uploadFunc) Register the upload handler of the AutoConnectAux. Parameters T Specifies a class name of the custom uploader inherited from AutoConnectUploadHandler class. Refer to the appendix for details. handler Specifies the custom uploader inherited from AutoConnectUploadHandler class. Refer to the appendix for details. uploadFunc A function that behaves when request to upload with the AutoConnectAux page. UploadFuncT type is defined by the following declaration. void(const String&, const HTTPUpload&) A data structure of the upload file as HTTPUpload. It is defined in the ESP8266WebServer (the WebServer for ESP32) library as follows: typedef struct { HTTPUploadStatus status; String filename; String name; String type; size_t totalSize; size_t currentSize; size_t contentLength; uint8_t buf[HTTP_UPLOAD_BUFLEN]; } HTTPUpload; Refer to ' To upload to a device other than Flash or SD ' in section appendix for details. release \u00b6 bool release( const String & name) Release a specified AutoConnectElement from AutoConenctAux. The release function is provided to dynamically change the structure of the custom Web pages with the sketch. By combining the release function and the add function or the loadElement function, the sketch can change the style of the custom Web page according to its behavior. Parameter name Specifies the name of AutoConnectElements to be released. Return value true The AutoConnectElement successfully released. false The AutoConnectElement can not be released. saveElement \u00b6 size_t saveElement(Stream & out, std :: vector < String > const & names = {}) Write elements of AutoConnectAux to the stream. The saveElement function outputs the specified AutoConenctElements as a JSON document using the prettyPrintTo function of the ArduinoJson library. Parameters out Output stream to be output. SPIFFS, SD also Serial can be specified generally. names The array of the name of AutoConnectElements to be output. If the names parameter is not specified, all AutoConnectElements registered in AutoConnectAux are output. Return value The number of bytes written. The output format is pretty The saveElement function outputs a prettified JSON document. It is not complementary with loadElement The saveElement function which missing the names parameter without name list to be saved that saves an entire AutoConnectAux element, not just AutoConnectElements. Its saved JSON document is not a complementary input to the loadElement function. The JSON document describing AutoConnectAux saved without the names parameter must be loaded by the AutoConnectAux::load function or AutoConnect::load function. setElementValue \u00b6 bool setElementValue( const String & name, const String value) bool setElementValue( const String & name, std :: vector < String > const & values) Sets the value of the specified AutoConnectElement. If values \u200b\u200bis specified as a std::vector of String, the element that can set the values is the AutoConnectRadio or the AutoConnectSelect . Parameters name Specifies the name of the AutoConnectElements that you want to set the value. value Specifies the value to be set. values Specifies a reference of a std::vector of String. It contains the values of the AutoConnectRadio or the AutoConnectSelect. Return value true The value has been set. false AutoConnectElements with the specified name are not registered. Or the type of the value is not consistent with the specified AutoConnectElements. You can directly access the value member variable. If you are gripping with the sketch to the AutoConnectElements of the target that sets the value, you can access the value member variable directly. The following sketch code has the same effect. AutoConnectAux aux; // ... Griping the AutoConnectText here. aux.setElementValue( \"TEXT_FIELD\" , \"New value\" ); AutoConnectAux aux; // ... Griping the AutoConnectText here. AutoConnectText & text = aux.getElement < AutoConnectText > ( \"TEXT_FIELD\" ); text.value = \"New value\" ; The difference between the setElementValue and the value access with the getElement is the certainty of the registration state for the element. The getElement returns an empty object if the element is not registered then a sketch assigns the value to it. May occur unexpected results and crashes. You should use the setElementValue if its registration is unsettled. setTitle \u00b6 void setTitle( const String & title) Set the title string of the custom Web page. This title will be displayed as the menu title of the custom Web page. Parameter title Title string to be display. Not the menu title The setTitle function is not set for the AutoConnect menu title. The effect of this function is that custom Web page only. To change the AutoConnect menu title use AutoConnectConfig::title .","title":"AutoConnectAux API"},{"location":"apiaux.html#constructor","text":"","title":" Constructor"},{"location":"apiaux.html#autoconnectaux","text":"AutoConnectAux( const String & uri = String( \"\" ), const String & title = String( \"\" ), const bool menu = true, const AutoConnectElementVT addons = AutoConnectElementVT()) Parameters uri URI of this custom Web Page. title Page title of this custom Web page. It will appear on the auto connection menu and at the top of that page. menu Specifies whether to display this page on menu. addons Reference to AutoConnectElement collection.","title":"AutoConnectAux"},{"location":"apiaux.html#public-member-functions","text":"","title":" Public member functions"},{"location":"apiaux.html#operator","text":"AutoConnectElement & operator []( const String & name) Returns a reference to the element specified by name . An operator [] is a shortcut for getElement function with the reference casting. Unlike getElement, which returns a pointer to that element, an operator [] returns a reference to that element. You also need to cast the return value to the actual type, just like the getElement function. Parameter name Name of the AutoConnectElements to be retrieved. Return value A reference to AutoConnectElement. It is different from the actual element type.","title":" operator [ ]"},{"location":"apiaux.html#add","text":"void add(AutoConnectElement & addon) void add(AutoConnectElementVT addons) Add an element to the AutoConnectAux. An added element is displayed on the custom Web page invoked from the AutoConnect menu. Parameters addon Reference of AutoConnectElements. Specifies one of the AutoConnectElements classes. addons An array list of reference of AutoConnectElements. The list initialization with braced-init-list of the std::vector can be used for the addons parameter cause the actual definition of type AutoConnectElementVT is std::vector<std::reference_wrapper<AutoConnectElement>> .","title":" add"},{"location":"apiaux.html#getelement","text":"T & getElement < T > ( const String & name) AutoConnectElement * getElement( const String & name) Get a registered AutoConnectElement as specified name. If T is specified as an actual type of AutoConnectElements, it returns a reference to that instance. Parameters T Actual type name of AutoConnectElements as AutoConnectButton , AutoConnectCheckbox , AutoConnectElement , AutoConnectFile , AutoConnectInput , AutoConnectRadio , AutoConnectSelect , AutoConnectSubmit , AutoConnectText . name Name of the AutoConnectElements to be retrieved. Return value A reference of the AutoConnectElements. If a type is not specified returns a pointer.","title":" getElement"},{"location":"apiaux.html#getelements","text":"AutoConnectElementVT & getElements( void ) Get vector of reference of all elements. Return value A reference to std::vector of reference to AutoConnecctElements. The getElements returns a reference to std::vector of reference to AutoConnecctElements. This function is provided to handle AutoConnectElemets owned by AutoConnectAux in bulk, and you can use each method of std::vector for a return value. // An example of getting type and name of all AutoConnectElements registered in AutoConnectAux. AutoConnectAux aux; // some code here... AutoConnectElementVt & elements = aux.getElements(); for (AutoConnectElement & elm : elements) { Serial.printf( \"name<%s> as type %d \\n \" , elm.name.c_str(), ( int )elm.typeOf()); }","title":" getElements"},{"location":"apiaux.html#load","text":"bool load( const String & in) bool load(PGM_P in) bool load( const __FlashStringHelper * in) bool load(Stream & in) Load all AutoConnectElements elements from JSON document into AutoConnectAux as custom Web pages. The JSON document specified by the load function must be the document structure of AutoConnectAux. Its JSON document can describe multiple pages as an array. Parameter in Specifies the JSON document to be load. The load function can input the following objects. String : Read-only String PROGMEM : Character array contained in the flash Stream : An entity that inherits stream class, generally SPIFFS or SD. Return value true JSON document as the custom Web pages successfully loaded. false JSON document loading failed. Load multiple custom Web pages separately Multiple custom Web pages can be loaded at once with JSON as an array. But it will consume a lot of memory. By loading a JSON document by page as much as possible, you can reduce memory consumption.","title":" load"},{"location":"apiaux.html#loadelement","text":"bool loadElement( const String & in, const String & name = String( \"\" )) bool loadElement( const String & in, std :: vector < String > const & names) bool loadElement(PGM_P in, const String & name = String( \"\" )) bool loadElement(PGM_P in, std :: vector < String > const & names) bool loadElement( const __FlashStringHelper * in, const String & name = String( \"\" )) bool loadElement( const __FlashStringHelper * in, std :: vector < String > const & names) bool loadElement(Stream & in, const String & name = String( \"\" )) bool loadElement(Stream & in, std :: vector < String > const & names) Load specified element from JSON document into AutoConnectAux. The JSON document specified by the loadElement function must be the AutoConnectElement document structure . When loading from a JSON document that describes multiple elements, its description must be an array syntax. Parameters in Specifies the JSON document to be load. The load function can input the following objects. String : Read-only String PROGMEM : Character array contained in the flash Stream : An entity that inherits stream class, generally SPIFFS or SD. name Specifies the name to be load. If the name is not specified, the loadElement function will load all elements contained in the JSON document. names Spefifies an array list of String indicating the name of the element to be loaded. The list initialization with braced-init-list of the std::vector can be used. Return value true Specified AutoConnectElements successfully loaded. false JSON document loading failed. Maybe it is an array Please note that the JSON document that is the input for loadElement is an array syntax of AutoConnectElements when there are multiple elements. For example, the following JSON document has a syntax error: { \"name\" : \"Caption\" , \"type\" : \"ACText\" , \"value\" : \"Hello, world\" } , { \"name\" : \"Server\" , \"type\" : \"ACInput\" , \"label\" : \"Server address\" } The outermost [ , ] is missing.","title":" loadElement"},{"location":"apiaux.html#menu","text":"void menu( const bool post) Set or reset the display as menu item for this AutoConnectAux. This function programmatically manipulates the menu parameter of the AutoConenctAux constructor . Parameter true Show on the menu. false Hidden on the menu.","title":" menu"},{"location":"apiaux.html#on","text":"void on( const AuxHandlerFunctionT handler, const AutoConnectExitOrder_t order = AC_EXIT_AHEAD) Register the handler function of the AutoConnectAux. Parameters handler A function that behaves when a request to the AutoConnectAux page occurs. AuxHandlerFunctionT type is defined by the following declaration. String handler(AutoConnectAux&, PageArgument&) order Specifies when the handler is called with the following enumeration value. AC_EXIT_AHEAD : Called before AutoConnect generates the HTML of the page. You set the value of AutoConnectElements in the handler then its value will be displayed on the page. AC_EXIT_LATER : Called after AutoConnect generates the HTML of the page. You can append to HTML generated by AutoConnect. AC_EXIT_BOTH : Called even before generating HTML and after generated.","title":" on"},{"location":"apiaux.html#onupload","text":"void onUpload < T &> (T handler) void onUpload(PageBuilder :: UploadFuncT uploadFunc) Register the upload handler of the AutoConnectAux. Parameters T Specifies a class name of the custom uploader inherited from AutoConnectUploadHandler class. Refer to the appendix for details. handler Specifies the custom uploader inherited from AutoConnectUploadHandler class. Refer to the appendix for details. uploadFunc A function that behaves when request to upload with the AutoConnectAux page. UploadFuncT type is defined by the following declaration. void(const String&, const HTTPUpload&) A data structure of the upload file as HTTPUpload. It is defined in the ESP8266WebServer (the WebServer for ESP32) library as follows: typedef struct { HTTPUploadStatus status; String filename; String name; String type; size_t totalSize; size_t currentSize; size_t contentLength; uint8_t buf[HTTP_UPLOAD_BUFLEN]; } HTTPUpload; Refer to ' To upload to a device other than Flash or SD ' in section appendix for details.","title":" onUpload"},{"location":"apiaux.html#release","text":"bool release( const String & name) Release a specified AutoConnectElement from AutoConenctAux. The release function is provided to dynamically change the structure of the custom Web pages with the sketch. By combining the release function and the add function or the loadElement function, the sketch can change the style of the custom Web page according to its behavior. Parameter name Specifies the name of AutoConnectElements to be released. Return value true The AutoConnectElement successfully released. false The AutoConnectElement can not be released.","title":" release"},{"location":"apiaux.html#saveelement","text":"size_t saveElement(Stream & out, std :: vector < String > const & names = {}) Write elements of AutoConnectAux to the stream. The saveElement function outputs the specified AutoConenctElements as a JSON document using the prettyPrintTo function of the ArduinoJson library. Parameters out Output stream to be output. SPIFFS, SD also Serial can be specified generally. names The array of the name of AutoConnectElements to be output. If the names parameter is not specified, all AutoConnectElements registered in AutoConnectAux are output. Return value The number of bytes written. The output format is pretty The saveElement function outputs a prettified JSON document. It is not complementary with loadElement The saveElement function which missing the names parameter without name list to be saved that saves an entire AutoConnectAux element, not just AutoConnectElements. Its saved JSON document is not a complementary input to the loadElement function. The JSON document describing AutoConnectAux saved without the names parameter must be loaded by the AutoConnectAux::load function or AutoConnect::load function.","title":" saveElement"},{"location":"apiaux.html#setelementvalue","text":"bool setElementValue( const String & name, const String value) bool setElementValue( const String & name, std :: vector < String > const & values) Sets the value of the specified AutoConnectElement. If values \u200b\u200bis specified as a std::vector of String, the element that can set the values is the AutoConnectRadio or the AutoConnectSelect . Parameters name Specifies the name of the AutoConnectElements that you want to set the value. value Specifies the value to be set. values Specifies a reference of a std::vector of String. It contains the values of the AutoConnectRadio or the AutoConnectSelect. Return value true The value has been set. false AutoConnectElements with the specified name are not registered. Or the type of the value is not consistent with the specified AutoConnectElements. You can directly access the value member variable. If you are gripping with the sketch to the AutoConnectElements of the target that sets the value, you can access the value member variable directly. The following sketch code has the same effect. AutoConnectAux aux; // ... Griping the AutoConnectText here. aux.setElementValue( \"TEXT_FIELD\" , \"New value\" ); AutoConnectAux aux; // ... Griping the AutoConnectText here. AutoConnectText & text = aux.getElement < AutoConnectText > ( \"TEXT_FIELD\" ); text.value = \"New value\" ; The difference between the setElementValue and the value access with the getElement is the certainty of the registration state for the element. The getElement returns an empty object if the element is not registered then a sketch assigns the value to it. May occur unexpected results and crashes. You should use the setElementValue if its registration is unsettled.","title":" setElementValue"},{"location":"apiaux.html#settitle","text":"void setTitle( const String & title) Set the title string of the custom Web page. This title will be displayed as the menu title of the custom Web page. Parameter title Title string to be display. Not the menu title The setTitle function is not set for the AutoConnect menu title. The effect of this function is that custom Web page only. To change the AutoConnect menu title use AutoConnectConfig::title .","title":" setTitle"},{"location":"apiconfig.html","text":"Constructor \u00b6 AutoConnectConfig \u00b6 AutoConnectConfig() AutoConnectConfig( const char * ap, const char * password) AutoConnectConfig( const char * ap, const char * password, const unsigned long timeout) AutoConnectConfig( const char * ap, const char * password, const unsigned long timeout, const uint8_t channel) Parameters ap SSID for SoftAP. The length should be up to 31. The default value is esp8266ap for ESP8266, esp32ap for ESP32. password Password for SodtAP. The length should be from 8 to up to 63. The default value is 12345678 . timeout The timeout value of the captive portal in [ms] units. The default value is 0. channel The channel number of WIFi when SoftAP starts. The default values is 1. Public member variables \u00b6 apid \u00b6 SoftAP's SSID. Type String The default value is esp8266ap for ESP8266, esp32ap for ESP32. apip \u00b6 Sets IP address for Soft AP in captive portal. When AutoConnect fails the initial WiFi.begin, it starts the captive portal with the IP address specified this. Type IPAddress The default value is 192.168.244.1 autoReconnect \u00b6 Automatically will try to reconnect with the past established access point (BSSID) when the current configured SSID in ESP8266/ESP32 could not be connected. By enabling this option, AutoConnect::begin() function will attempt to reconnect to a known access point using credentials stored in the EEPROM, even if the connection failed by current SSID. If the connection fails, starts the captive portal in SoftAP+STA mode. Type bool Value true Reconnect automatically. false Starts Captive Portal in SoftAP + STA mode without trying to reconnect. This is the default. When the autoReconnect option is enabled, an automatic connection will behave if the following conditions are satisfied. Invokes AutoConnect::begin without user name and password parameter as begin() . If one of the saved BSSIDs (not the SSID) of the credentials matches the BSSID detected by the network scan. autoReset \u00b6 Reset ESP8266 module automatically after WLAN disconnected. Type bool Value true Reset after WiFi disconnected automatically. false No reset. autoRise \u00b6 Captive portal activation switch. False for disabling the captive portal. It prevents starting the captive portal even if the connection at the first WiFi.begin fails. Type bool Value true Enable the captive portal. This is the default. false Disable the captive portal. autoSave \u00b6 The credential saved automatically at the connection establishment. Type AC_SAVECREDENTIAL_t Value AC_SAVECREDENTIAL_AUTO The credential saved automatically. This is the default. AC_SAVECREDENTIAL_NEVER The credential no saved. bootUri \u00b6 Specify the location to be redirected after module reset in the AutoConnect menu. It is given as an enumeration value of AC_ONBOOTURI_t indicating either the AutoConnect root path or the user screen home path. Type AC_ONBOOTURI_t Value AC_ONBOOTURI_ROOT Resetting the module redirects it to the AutoConnect root path. The root path is assumed to be AUTOCONNECT_URI defined in AutoConnectDefs.h. AC_ONBOOTURI_HOME It is redirected to the uri specified by AutoConnectConfig::homeUri . boundaryOffset \u00b6 Sets the offset address of the credential storage area for EEPROM. This value must be between greater than 4 and less than flash sector size. (4096 by SDK) The default value is 0. Type uint16_t It will conflict with user data. If the sketch leaves this offset at zero, it will conflict the storage area of credentials with the user sketch owned data. It needs to use the behind of credential area. channel \u00b6 The channel number of WIFi when SoftAP starts. Type uint8_t Value 1 ~ 14. The default value is 1. How do I choose Channel Espressif Systems had announced the application note about Wi-Fi channel selection. dns1 \u00b6 Set primary DNS server address when using static IP address. Type IPAddress dns2 \u00b6 Set secondary DNS server address when using static IP address. Type IPAddress gateway \u00b6 Sets gateway address for Soft AP in captive portal. When AutoConnect fails the initial WiFi.begin, it starts the captive portal with the IP address specified this. Type IPAddress The default value is 192.168.244.1 hidden \u00b6 Sets SoftAP to hidden SSID. Type uint8_t Value 0 SSID will be appeared. This is the default. 1 SSID will be hidden. homeUri \u00b6 Sets the home path of user sketch. This path would be linked from 'HOME' in the AutoConnect menu. The default for homeUri is \"/\". Type String hostName \u00b6 Sets the station host name of ESP8266/ESP32. Type String immediateStart \u00b6 Disable the first WiFi.begin() and start the captive portal. If this option is enabled, the module will be in AP_STA mode and the captive portal will be activated regardless of AutoConnectConfig::autoRise specification. Type bool Value true Start the captive portal with AutoConnect::begin . false Enable the first WiFi.begin() and it will start captive portal when connection failed. This is default. netmask \u00b6 Sets subnet mask for Soft AP in captive portal. When AutoConnect fails the initial WiFi.begin, it starts the captive portal with the IP address specified this. Type IPAddress The default value is 255.255.255.0 portalTimeout \u00b6 Specify the timeout value of the captive portal in [ms] units. It is valid when the station is not connected and does not time out if the station is connected to the ESP module in SoftAP mode (ie Attempting WiFi connection with the portal function). If 0, the captive portal will not be timed-out. Type unsigned long Captive portal timeout value. The default value is 0. psk \u00b6 Sets password for SoftAP. The length should be from 8 to up to 63. The default value is 12345678 . Type String retainPortal \u00b6 Specify whether to continue the portal function even if the captive portal timed out. If the true, when a timeout occurs, the AutoConnect::begin function is exited with returns false, but the portal facility remains alive. So SoftAP remains alive and you can invoke AutoConnect while continuing sketch execution. The default is false. Type bool Value true Continue the portal function even if the captive portal times out. The STA + SoftAP mode of the ESP module continues and accepts the connection request to the AP. false When the captive portal times out, STA + SoftAP mode of the ESP module is stopped. This is default. Connection request after timed-out With the retainPortal , even if AutoConnect::begin in the setup() is timed out, you can execute the sketch and the portal function as a WiFi connection attempt by calling AutoConnect::handleClient in the loop(). All unresolved addresses redirects to /_ac If you enable the retainPortal option, all unresolved URIs will be redirected to SoftAPIP/_ac . It happens frequently as client devices repeat captive portal probes in particular. To avoid this, you need to exit from the WiFi connection Apps on your device once. staip \u00b6 Set a static IP address. The IP will behave with STA mode. Type IPAddress staGateway \u00b6 Set the gateway address when using static IP address. Type IPAddress staNetmask \u00b6 Set the subnetmask when using static IP address. Type IPAddress title \u00b6 Set the menu title. Type String AutoConnectConfig example \u00b6 AutoConenct Portal; AutoConenctConfig Config ( \"\" , \"passpass\" ); // SoftAp name is determined at runtime Config.apid = ESP.hostname(); // Retrieve host name to SotAp identification Config.apip = IPAddress( 192 , 168 , 10 , 101 ); // Sets SoftAP IP address Config.gateway = IPAddress( 192 , 168 , 10 , 1 ); // Sets WLAN router IP address Config.netmask = IPAddress( 255 , 255 , 255 , 0 ); // Sets WLAN scope Config.autoReconnect = true; // Enable auto-reconnect Config.autoSave = AC_SAVECREDENTIAL_NEVER; // No save credential Config.boundaryOffet = 64 ; // Reserve 64 bytes for the user data in EEPROM. Config.portalTimeout = 60000 ; // Sets timeout value for the captive portal Config.retainPortal = true; // Retains the portal function after timed-out Config.homeUri = \"/index.html\" ; // Sets home path of the sketch application Config.title = \"My menu\" ; // Customize the menu title Config.staip = IPAddress( 192 , 168 , 10 , 10 ); // Sets static IP Config.staGateway = IPAddress( 192 , 168 , 10 , 1 ); // Sets WiFi router address Config.staNetmask = IPAddress( 255 , 255 , 255 , 0 ); // Sets WLAN scope Config.dns1 = IPAddress( 192 , 168 , 10 , 1 ); // Sets primary DNS address Portal.config(Config); // Configure AutoConnect Portal.begin(); // Starts and behaves captive portal","title":"AutoConnectConfig API"},{"location":"apiconfig.html#constructor","text":"","title":" Constructor"},{"location":"apiconfig.html#autoconnectconfig","text":"AutoConnectConfig() AutoConnectConfig( const char * ap, const char * password) AutoConnectConfig( const char * ap, const char * password, const unsigned long timeout) AutoConnectConfig( const char * ap, const char * password, const unsigned long timeout, const uint8_t channel) Parameters ap SSID for SoftAP. The length should be up to 31. The default value is esp8266ap for ESP8266, esp32ap for ESP32. password Password for SodtAP. The length should be from 8 to up to 63. The default value is 12345678 . timeout The timeout value of the captive portal in [ms] units. The default value is 0. channel The channel number of WIFi when SoftAP starts. The default values is 1.","title":"AutoConnectConfig"},{"location":"apiconfig.html#public-member-variables","text":"","title":" Public member variables"},{"location":"apiconfig.html#apid","text":"SoftAP's SSID. Type String The default value is esp8266ap for ESP8266, esp32ap for ESP32.","title":" apid"},{"location":"apiconfig.html#apip","text":"Sets IP address for Soft AP in captive portal. When AutoConnect fails the initial WiFi.begin, it starts the captive portal with the IP address specified this. Type IPAddress The default value is 192.168.244.1","title":" apip"},{"location":"apiconfig.html#autoreconnect","text":"Automatically will try to reconnect with the past established access point (BSSID) when the current configured SSID in ESP8266/ESP32 could not be connected. By enabling this option, AutoConnect::begin() function will attempt to reconnect to a known access point using credentials stored in the EEPROM, even if the connection failed by current SSID. If the connection fails, starts the captive portal in SoftAP+STA mode. Type bool Value true Reconnect automatically. false Starts Captive Portal in SoftAP + STA mode without trying to reconnect. This is the default. When the autoReconnect option is enabled, an automatic connection will behave if the following conditions are satisfied. Invokes AutoConnect::begin without user name and password parameter as begin() . If one of the saved BSSIDs (not the SSID) of the credentials matches the BSSID detected by the network scan.","title":" autoReconnect"},{"location":"apiconfig.html#autoreset","text":"Reset ESP8266 module automatically after WLAN disconnected. Type bool Value true Reset after WiFi disconnected automatically. false No reset.","title":" autoReset"},{"location":"apiconfig.html#autorise","text":"Captive portal activation switch. False for disabling the captive portal. It prevents starting the captive portal even if the connection at the first WiFi.begin fails. Type bool Value true Enable the captive portal. This is the default. false Disable the captive portal.","title":" autoRise"},{"location":"apiconfig.html#autosave","text":"The credential saved automatically at the connection establishment. Type AC_SAVECREDENTIAL_t Value AC_SAVECREDENTIAL_AUTO The credential saved automatically. This is the default. AC_SAVECREDENTIAL_NEVER The credential no saved.","title":" autoSave"},{"location":"apiconfig.html#booturi","text":"Specify the location to be redirected after module reset in the AutoConnect menu. It is given as an enumeration value of AC_ONBOOTURI_t indicating either the AutoConnect root path or the user screen home path. Type AC_ONBOOTURI_t Value AC_ONBOOTURI_ROOT Resetting the module redirects it to the AutoConnect root path. The root path is assumed to be AUTOCONNECT_URI defined in AutoConnectDefs.h. AC_ONBOOTURI_HOME It is redirected to the uri specified by AutoConnectConfig::homeUri .","title":" bootUri"},{"location":"apiconfig.html#boundaryoffset","text":"Sets the offset address of the credential storage area for EEPROM. This value must be between greater than 4 and less than flash sector size. (4096 by SDK) The default value is 0. Type uint16_t It will conflict with user data. If the sketch leaves this offset at zero, it will conflict the storage area of credentials with the user sketch owned data. It needs to use the behind of credential area.","title":" boundaryOffset"},{"location":"apiconfig.html#channel","text":"The channel number of WIFi when SoftAP starts. Type uint8_t Value 1 ~ 14. The default value is 1. How do I choose Channel Espressif Systems had announced the application note about Wi-Fi channel selection.","title":" channel"},{"location":"apiconfig.html#dns1","text":"Set primary DNS server address when using static IP address. Type IPAddress","title":" dns1"},{"location":"apiconfig.html#dns2","text":"Set secondary DNS server address when using static IP address. Type IPAddress","title":" dns2"},{"location":"apiconfig.html#gateway","text":"Sets gateway address for Soft AP in captive portal. When AutoConnect fails the initial WiFi.begin, it starts the captive portal with the IP address specified this. Type IPAddress The default value is 192.168.244.1","title":" gateway"},{"location":"apiconfig.html#hidden","text":"Sets SoftAP to hidden SSID. Type uint8_t Value 0 SSID will be appeared. This is the default. 1 SSID will be hidden.","title":" hidden"},{"location":"apiconfig.html#homeuri","text":"Sets the home path of user sketch. This path would be linked from 'HOME' in the AutoConnect menu. The default for homeUri is \"/\". Type String","title":" homeUri"},{"location":"apiconfig.html#hostname","text":"Sets the station host name of ESP8266/ESP32. Type String","title":" hostName"},{"location":"apiconfig.html#immediatestart","text":"Disable the first WiFi.begin() and start the captive portal. If this option is enabled, the module will be in AP_STA mode and the captive portal will be activated regardless of AutoConnectConfig::autoRise specification. Type bool Value true Start the captive portal with AutoConnect::begin . false Enable the first WiFi.begin() and it will start captive portal when connection failed. This is default.","title":" immediateStart"},{"location":"apiconfig.html#netmask","text":"Sets subnet mask for Soft AP in captive portal. When AutoConnect fails the initial WiFi.begin, it starts the captive portal with the IP address specified this. Type IPAddress The default value is 255.255.255.0","title":" netmask"},{"location":"apiconfig.html#portaltimeout","text":"Specify the timeout value of the captive portal in [ms] units. It is valid when the station is not connected and does not time out if the station is connected to the ESP module in SoftAP mode (ie Attempting WiFi connection with the portal function). If 0, the captive portal will not be timed-out. Type unsigned long Captive portal timeout value. The default value is 0.","title":" portalTimeout"},{"location":"apiconfig.html#psk","text":"Sets password for SoftAP. The length should be from 8 to up to 63. The default value is 12345678 . Type String","title":" psk"},{"location":"apiconfig.html#retainportal","text":"Specify whether to continue the portal function even if the captive portal timed out. If the true, when a timeout occurs, the AutoConnect::begin function is exited with returns false, but the portal facility remains alive. So SoftAP remains alive and you can invoke AutoConnect while continuing sketch execution. The default is false. Type bool Value true Continue the portal function even if the captive portal times out. The STA + SoftAP mode of the ESP module continues and accepts the connection request to the AP. false When the captive portal times out, STA + SoftAP mode of the ESP module is stopped. This is default. Connection request after timed-out With the retainPortal , even if AutoConnect::begin in the setup() is timed out, you can execute the sketch and the portal function as a WiFi connection attempt by calling AutoConnect::handleClient in the loop(). All unresolved addresses redirects to /_ac If you enable the retainPortal option, all unresolved URIs will be redirected to SoftAPIP/_ac . It happens frequently as client devices repeat captive portal probes in particular. To avoid this, you need to exit from the WiFi connection Apps on your device once.","title":" retainPortal"},{"location":"apiconfig.html#staip","text":"Set a static IP address. The IP will behave with STA mode. Type IPAddress","title":" staip"},{"location":"apiconfig.html#stagateway","text":"Set the gateway address when using static IP address. Type IPAddress","title":" staGateway"},{"location":"apiconfig.html#stanetmask","text":"Set the subnetmask when using static IP address. Type IPAddress","title":" staNetmask"},{"location":"apiconfig.html#title","text":"Set the menu title. Type String","title":" title"},{"location":"apiconfig.html#autoconnectconfig-example","text":"AutoConenct Portal; AutoConenctConfig Config ( \"\" , \"passpass\" ); // SoftAp name is determined at runtime Config.apid = ESP.hostname(); // Retrieve host name to SotAp identification Config.apip = IPAddress( 192 , 168 , 10 , 101 ); // Sets SoftAP IP address Config.gateway = IPAddress( 192 , 168 , 10 , 1 ); // Sets WLAN router IP address Config.netmask = IPAddress( 255 , 255 , 255 , 0 ); // Sets WLAN scope Config.autoReconnect = true; // Enable auto-reconnect Config.autoSave = AC_SAVECREDENTIAL_NEVER; // No save credential Config.boundaryOffet = 64 ; // Reserve 64 bytes for the user data in EEPROM. Config.portalTimeout = 60000 ; // Sets timeout value for the captive portal Config.retainPortal = true; // Retains the portal function after timed-out Config.homeUri = \"/index.html\" ; // Sets home path of the sketch application Config.title = \"My menu\" ; // Customize the menu title Config.staip = IPAddress( 192 , 168 , 10 , 10 ); // Sets static IP Config.staGateway = IPAddress( 192 , 168 , 10 , 1 ); // Sets WiFi router address Config.staNetmask = IPAddress( 255 , 255 , 255 , 0 ); // Sets WLAN scope Config.dns1 = IPAddress( 192 , 168 , 10 , 1 ); // Sets primary DNS address Portal.config(Config); // Configure AutoConnect Portal.begin(); // Starts and behaves captive portal","title":" AutoConnectConfig example"},{"location":"apielements.html","text":"AutoConnectButton \u00b6 Constructor \u00b6 AutoConnectButton( const char * name = \"\" , const char * value = \"\" , const String & action = String()) Parameters name The element name. value Value of the element. action Native code of the action script executed when the button is clicked. Public member variables \u00b6 action \u00b6 HTML native code of the action script to be executed when the button is clicked. It is mostly used with a JavaScript to activate a script. 1 Type String enable \u00b6 Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true. Type boolean name \u00b6 The element name. Type String value \u00b6 Value of the element. Type String Public member functions \u00b6 typeOf \u00b6 ACElement_t typeOf( void ) Returns type of AutoConnectElement. Return value AC_Button AutoConnectCheckbox \u00b6 Constructor \u00b6 explicit AutoConnectCheckboxBasis( const char * name = \"\" , const char * value = \"\" , const char * label = \"\" , const bool checked = false) Parameters name The element name. value Value of the element. label A label string prefixed to the checkbox. check Checked state of the checkbox. Public member variables \u00b6 checked \u00b6 It indicates the checked status of the checkbox. The value of the checked checkbox element is packed in the query string and sent by submit. Type Boolean enable \u00b6 Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true. Type boolean label \u00b6 A label is an optional string. A label is always arranged on the right side of the checkbox. Specification of a label will generate an HTML < label > tag with an id attribute. The checkbox and the label are connected by the id attribute. Type String name \u00b6 The element name. Type String value \u00b6 Value of the element. It becomes a value attribute of an HTML < input type = \"checkbox\" > tag. Type String Public member functions \u00b6 typeOf \u00b6 ACElement_t typeOf( void ) Returns type of AutoConnectElement. Return value AC_Checkbox AutoConnectElement \u00b6 Constructor \u00b6 AutoConnectElement( const char * name = \"\" , const char * value = \"\" ) Parameters name The element name. value Value of the element. Public member variables \u00b6 enable \u00b6 Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true. Type boolean name \u00b6 The element name. Type String value \u00b6 Value of the element. It is output as HTML as it is as a source for generating HTML code. Type String Public member functions \u00b6 typeOf \u00b6 ACElement_t typeOf( void ) Returns type of AutoConnectElement. Return value AC_Element as<T> \u00b6 AutoConnectElement & as < T > ( void ) Casts the reference to the AutoConnectElement the specified type. Parameter T The element type. AutoConnectElements type such as AutoConnectButton , AutoConnectCheckbox , AutoConnectFile , AutoConnectInput , AutoConnectRadio , AutoConnectSelect , AutoConnectSubmit , AutoConnectText . Return value A reference to the AutoConnectElement with actual type. AutoConnectFile \u00b6 Constructor \u00b6 AutoConnectFile( const char * name = \"\" , const char * value = \"\" , const char * label = \"\" , const ACFile_t store = AC_File_FS) Parameters name The element name. value File name to be upload. label Label string. store The ACFile_t enumerator that represents the media to save the uploaded file. Public member variables \u00b6 enable \u00b6 Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true. Type boolean label \u00b6 A label is an optional string. A label is always arranged on the left side of the file input box. Specification of a label will generate an HTML < label > tag with an id attribute. The file input box and the label are connected by the id attribute. Type String mimeType \u00b6 The mime type of the upload file which included as Media type in the http post request. Set by the client (usually the browser) that requested the upload. It is determined by the file type as application/octet-stream , text etc. which is described in IANA Media Type . Type String name \u00b6 The element name. Type String size \u00b6 Size of the uploading file. Type size_t store \u00b6 Specifies the save destination of the uploaded file. You can use the built-in uploader to save uploaded file to the flash of the ESP8266/ESP32 module or external SD media without writing a dedicated sketch code. It also supports saving to any destination using a custom uploader that inherits from the AutoConnectUploadHandler class. Type ACFile_t AC_File_FS : Save the uploaded file to SPIFFS in the flash. AC_File_SD : Save the uploaded file to SD. AC_File_Extern : Save the file using your own upload handler. value \u00b6 File name to be upload. The value contains the value entered by the client browser to the < input type = \"file\" > tag and is read-only. Type String Public member functions \u00b6 typeOf \u00b6 ACElement_t typeOf( void ) Returns type of AutoConnectFile. Return value AC_File AutoConnectInput \u00b6 Constructor \u00b6 AutoConnectInput( const char * name = \"\" , const char * value = \"\" , const char * label = \"\" , const char * pattern = \"\" , const char * placeholder = \"\" ) Parameters name The element name. value Value of the element. label Label string. pattern Regular expression string for checking data format. placeholder A placeholder string. Public member variables \u00b6 enable \u00b6 Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true. Type boolean label \u00b6 A label is an optional string. A label is always arranged on the left side of the input box. Specification of a label will generate an HTML < label > tag with an id attribute. The input box and the label are connected by the id attribute. Type String name \u00b6 The element name. Type String value \u00b6 Value of the element. It becomes a value attribute of an HTML < input type = \"text\" > tag. An entered text in the custom Web page will be sent with a query string of the form. The value set before accessing the page is displayed as the initial value. Type String pattern \u00b6 A pattern specifies a regular expression that the input-box's value is checked against on form submission. Type String placeholder \u00b6 A placeholder is an option string. Specification of a placeholder will generate a placeholder attribute for the input tag. Type String Public member functions \u00b6 isValid \u00b6 bool isValid( void ) Evaluate the pattern as a regexp and return whether value matches. Always return true if the pattern is undefined. Return value true The value matches a pattern. false The value does not match a pattern. typeOf \u00b6 ACElement_t typeOf( void ) Returns type of AutoConnectElement. Return value AC_Input AutoConnectRadio \u00b6 Constructor \u00b6 AutoConnectRadio( const char * name = \"\" , std :: vector < String > const & values = {}, const char * label = \"\" , const ACArrange_t order = AC_Vertical, const uint8_t checked = 0 ) Parameters name The element name. values An array of values of the radio buttons. Specifies a std::vector object. label Label string. order The direction to arrange the radio buttons. checked An index to be checked in the radio buttons. Public member variables \u00b6 checked \u00b6 Specifies the index number (1-based) of the values to be checked. If this parameter is not specified neither item is checked. Type uint8_t enable \u00b6 Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true. Type boolean label \u00b6 A label is an optional string. A label will be arranged in the left or top of the radio buttons according to the order . Type String name \u00b6 The element name. Type String order \u00b6 Specifies the direction to arrange the radio buttons. A label will place in the left or the top according to the order . It is a value of ACArrange_t type and accepts one of the following: Type ACArrange_t AC_Horizontal : Horizontal arrangement. AC_Vertical : Vertical arrangement. values \u00b6 An array of String type for the radio button options. It is an initialization list can be used. The < input type = \"radio\" > tags will be generated from each entry in the values. Type std::vector<String> Public member functions \u00b6 add \u00b6 void add( const String & value) Adds an option for the radio button. Parameter value An option string to add to the radio button. check \u00b6 void check( const String & value) Indicates the check of the specified option for the radio buttons. You can use the check function for checking dynamically with arbitrary of the radio button. Parameter value An option string to be checked. empty \u00b6 void empty( const size_t reserve = 0 ) Clear the array of option strings that AutoConnectRadio has in the values. When the reserve parameter is specified, a vector container of that size is reserved. The empty function resets the checked value to zero. When the empty function is executed, any button will be turned off. Parameter reserve Reserved size of a container for the radio button option strings. operator [ ] \u00b6 const String & operator [] ( const std :: size_t n) Returns a value string of the index specified by n . Parameter n Index of values array to return. Its base number is 0. Return value A reference of a value string indexed by the specified the n . size \u00b6 size_t size( void ) Returns number of options which contained. Return value Number of options which contained. typeOf \u00b6 ACElement_t typeOf( void ) Returns type of AutoConnectElement. Return value AC_Radio value \u00b6 const String & value( void ) const Returns current checked option of the radio buttons. Return value A String of an option current checked. If there is no checked option, a null string returned. AutoConnectSelect \u00b6 Constructor \u00b6 AutoConnectSelect( const char * name = \"\" , std :: vector < String > const & options = {}, const char * label = \"\" , const uint8_t selected = 0 ) Parameters name The element name. options An array of options of the select element. Specifies a std::vector object. label Label string. selected An option should be pre-selected when the page loads. Public member variables \u00b6 enable \u00b6 Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true. Type boolean name \u00b6 The element name. Type String label \u00b6 A label is an optional string. A label will be arranged in the top of the selection list. Type String options \u00b6 An array of String type for the selection options. It is an initialization list can be used. The < option value > tags will be generated from each entry in the options. Type std::vector<String> selected \u00b6 A selected is an optional value. Specifies 1-based index value of an options array that an option should be pre-selected when the page loads. Type uint8_t Public member functions \u00b6 add \u00b6 void add( const String & option) Adds a selectable option string for the selection list. Parameter option A string of selectable item to be contained in the select element. empty \u00b6 void empty( const size_t reserve = 0 ) Clear the array of options list that AutoConnectSelect has in the options. When the reserve parameter is specified, a vector container of that size is reserved. The empty function resets the selected value to zero. When the empty function is executed, there are no selected options and the first item is placed at the beginning. Parameter reserve Reserved size of a container for the options. operator [ ] \u00b6 const String & operator [] ( const std :: size_t n) Returns an option string of the index specified by n . Parameter n Index of options array to return. Its base number is 0. Return value A reference of a option string indexed by the specified the n . select \u00b6 void select ( const String & value); Selects an option with the value. Parameter value String value that option should be selected in an option array. size \u00b6 size_t size( void ) Returns number of options which contained. Return value Number of options which contained. typeOf \u00b6 ACElement_t typeOf( void ) Returns type of AutoConnectElement. Return value AC_Select value \u00b6 const String & value( void ) const ; Returns current selected option of the select list. Return value A String of an option current selected. If there is no select option, a null string returned. AutoConnectSubmit \u00b6 Constructor \u00b6 AutoConnectSubmit( const char * name = \"\" , const char * value = \"\" , char * uri = \"\" ) Parameters name The element name. value The name of the submit button as an HTML < input type = \"button\" > tag, it will also be the label of the button. uri Destination URI. Public member variables \u00b6 enable \u00b6 Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true. Type boolean name \u00b6 The element name. Type String uri \u00b6 Destination URI. Type String value \u00b6 The name of the submit button. It will also be the label of the button. Type String Public member functions \u00b6 typeOf \u00b6 ACElement_t typeOf( void ) Returns type of AutoConnectElement. Return value AC_Submit AutoConnectText \u00b6 Constructor \u00b6 AutoConnectText( const char * name = \"\" , const char * value = \"\" , const char * style = \"\" , const char * format = \"\" ) Parameters name The element name. value String of content for the text element. style A style code with CSS format that qualifiers the text. format A pointer to a null-terminated multibyte string specifying how to interpret the value. It specifies the conversion format when outputting values. The format string conforms to C-style printf library functions Public member variables \u00b6 enable \u00b6 Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true. Type boolean format \u00b6 The conversion format when outputting values. The format string conforms to C-style printf library functions. Type String name \u00b6 The element name. Type String style \u00b6 A style code with CSS format that qualifiers the text. Type String value \u00b6 A content string of the text element. Type String Public member functions \u00b6 typeOf \u00b6 ACElement_t typeOf( void ) Returns type of AutoConnectElement. Return value AC_Text JavaScript can be inserted into a custom Web page using AutoConnectElement. \u21a9","title":"AutoConnectElements API"},{"location":"apielements.html#autoconnectbutton","text":"","title":"AutoConnectButton"},{"location":"apielements.html#constructor","text":"AutoConnectButton( const char * name = \"\" , const char * value = \"\" , const String & action = String()) Parameters name The element name. value Value of the element. action Native code of the action script executed when the button is clicked.","title":" Constructor"},{"location":"apielements.html#public-member-variables","text":"","title":" Public member variables"},{"location":"apielements.html#action","text":"HTML native code of the action script to be executed when the button is clicked. It is mostly used with a JavaScript to activate a script. 1 Type String","title":" action"},{"location":"apielements.html#enable","text":"Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true. Type boolean","title":" enable"},{"location":"apielements.html#name","text":"The element name. Type String","title":" name"},{"location":"apielements.html#value","text":"Value of the element. Type String","title":" value"},{"location":"apielements.html#public-member-functions","text":"","title":" Public member functions"},{"location":"apielements.html#typeof","text":"ACElement_t typeOf( void ) Returns type of AutoConnectElement. Return value AC_Button","title":" typeOf"},{"location":"apielements.html#autoconnectcheckbox","text":"","title":"AutoConnectCheckbox"},{"location":"apielements.html#constructor_1","text":"explicit AutoConnectCheckboxBasis( const char * name = \"\" , const char * value = \"\" , const char * label = \"\" , const bool checked = false) Parameters name The element name. value Value of the element. label A label string prefixed to the checkbox. check Checked state of the checkbox.","title":" Constructor"},{"location":"apielements.html#public-member-variables_1","text":"","title":" Public member variables"},{"location":"apielements.html#checked","text":"It indicates the checked status of the checkbox. The value of the checked checkbox element is packed in the query string and sent by submit. Type Boolean","title":" checked"},{"location":"apielements.html#enable_1","text":"Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true. Type boolean","title":" enable"},{"location":"apielements.html#label","text":"A label is an optional string. A label is always arranged on the right side of the checkbox. Specification of a label will generate an HTML < label > tag with an id attribute. The checkbox and the label are connected by the id attribute. Type String","title":" label"},{"location":"apielements.html#name_1","text":"The element name. Type String","title":" name"},{"location":"apielements.html#value_1","text":"Value of the element. It becomes a value attribute of an HTML < input type = \"checkbox\" > tag. Type String","title":" value"},{"location":"apielements.html#public-member-functions_1","text":"","title":" Public member functions"},{"location":"apielements.html#typeof_1","text":"ACElement_t typeOf( void ) Returns type of AutoConnectElement. Return value AC_Checkbox","title":" typeOf"},{"location":"apielements.html#autoconnectelement","text":"","title":"AutoConnectElement"},{"location":"apielements.html#constructor_2","text":"AutoConnectElement( const char * name = \"\" , const char * value = \"\" ) Parameters name The element name. value Value of the element.","title":" Constructor"},{"location":"apielements.html#public-member-variables_2","text":"","title":" Public member variables"},{"location":"apielements.html#enable_2","text":"Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true. Type boolean","title":" enable"},{"location":"apielements.html#name_2","text":"The element name. Type String","title":" name"},{"location":"apielements.html#value_2","text":"Value of the element. It is output as HTML as it is as a source for generating HTML code. Type String","title":" value"},{"location":"apielements.html#public-member-functions_2","text":"","title":" Public member functions"},{"location":"apielements.html#typeof_2","text":"ACElement_t typeOf( void ) Returns type of AutoConnectElement. Return value AC_Element","title":" typeOf"},{"location":"apielements.html#ast62","text":"AutoConnectElement & as < T > ( void ) Casts the reference to the AutoConnectElement the specified type. Parameter T The element type. AutoConnectElements type such as AutoConnectButton , AutoConnectCheckbox , AutoConnectFile , AutoConnectInput , AutoConnectRadio , AutoConnectSelect , AutoConnectSubmit , AutoConnectText . Return value A reference to the AutoConnectElement with actual type.","title":" as&lt;T>"},{"location":"apielements.html#autoconnectfile","text":"","title":"AutoConnectFile"},{"location":"apielements.html#constructor_3","text":"AutoConnectFile( const char * name = \"\" , const char * value = \"\" , const char * label = \"\" , const ACFile_t store = AC_File_FS) Parameters name The element name. value File name to be upload. label Label string. store The ACFile_t enumerator that represents the media to save the uploaded file.","title":" Constructor"},{"location":"apielements.html#public-member-variables_3","text":"","title":" Public member variables"},{"location":"apielements.html#enable_3","text":"Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true. Type boolean","title":" enable"},{"location":"apielements.html#label_1","text":"A label is an optional string. A label is always arranged on the left side of the file input box. Specification of a label will generate an HTML < label > tag with an id attribute. The file input box and the label are connected by the id attribute. Type String","title":" label"},{"location":"apielements.html#mimetype","text":"The mime type of the upload file which included as Media type in the http post request. Set by the client (usually the browser) that requested the upload. It is determined by the file type as application/octet-stream , text etc. which is described in IANA Media Type . Type String","title":" mimeType"},{"location":"apielements.html#name_3","text":"The element name. Type String","title":" name"},{"location":"apielements.html#size","text":"Size of the uploading file. Type size_t","title":" size"},{"location":"apielements.html#store","text":"Specifies the save destination of the uploaded file. You can use the built-in uploader to save uploaded file to the flash of the ESP8266/ESP32 module or external SD media without writing a dedicated sketch code. It also supports saving to any destination using a custom uploader that inherits from the AutoConnectUploadHandler class. Type ACFile_t AC_File_FS : Save the uploaded file to SPIFFS in the flash. AC_File_SD : Save the uploaded file to SD. AC_File_Extern : Save the file using your own upload handler.","title":" store"},{"location":"apielements.html#value_3","text":"File name to be upload. The value contains the value entered by the client browser to the < input type = \"file\" > tag and is read-only. Type String","title":" value"},{"location":"apielements.html#public-member-functions_3","text":"","title":" Public member functions"},{"location":"apielements.html#typeof_3","text":"ACElement_t typeOf( void ) Returns type of AutoConnectFile. Return value AC_File","title":" typeOf"},{"location":"apielements.html#autoconnectinput","text":"","title":"AutoConnectInput"},{"location":"apielements.html#constructor_4","text":"AutoConnectInput( const char * name = \"\" , const char * value = \"\" , const char * label = \"\" , const char * pattern = \"\" , const char * placeholder = \"\" ) Parameters name The element name. value Value of the element. label Label string. pattern Regular expression string for checking data format. placeholder A placeholder string.","title":" Constructor"},{"location":"apielements.html#public-member-variables_4","text":"","title":" Public member variables"},{"location":"apielements.html#enable_4","text":"Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true. Type boolean","title":" enable"},{"location":"apielements.html#label_2","text":"A label is an optional string. A label is always arranged on the left side of the input box. Specification of a label will generate an HTML < label > tag with an id attribute. The input box and the label are connected by the id attribute. Type String","title":" label"},{"location":"apielements.html#name_4","text":"The element name. Type String","title":" name"},{"location":"apielements.html#value_4","text":"Value of the element. It becomes a value attribute of an HTML < input type = \"text\" > tag. An entered text in the custom Web page will be sent with a query string of the form. The value set before accessing the page is displayed as the initial value. Type String","title":" value"},{"location":"apielements.html#pattern","text":"A pattern specifies a regular expression that the input-box's value is checked against on form submission. Type String","title":" pattern"},{"location":"apielements.html#placeholder","text":"A placeholder is an option string. Specification of a placeholder will generate a placeholder attribute for the input tag. Type String","title":" placeholder"},{"location":"apielements.html#public-member-functions_4","text":"","title":" Public member functions"},{"location":"apielements.html#isvalid","text":"bool isValid( void ) Evaluate the pattern as a regexp and return whether value matches. Always return true if the pattern is undefined. Return value true The value matches a pattern. false The value does not match a pattern.","title":" isValid"},{"location":"apielements.html#typeof_4","text":"ACElement_t typeOf( void ) Returns type of AutoConnectElement. Return value AC_Input","title":" typeOf"},{"location":"apielements.html#autoconnectradio","text":"","title":"AutoConnectRadio"},{"location":"apielements.html#constructor_5","text":"AutoConnectRadio( const char * name = \"\" , std :: vector < String > const & values = {}, const char * label = \"\" , const ACArrange_t order = AC_Vertical, const uint8_t checked = 0 ) Parameters name The element name. values An array of values of the radio buttons. Specifies a std::vector object. label Label string. order The direction to arrange the radio buttons. checked An index to be checked in the radio buttons.","title":" Constructor"},{"location":"apielements.html#public-member-variables_5","text":"","title":" Public member variables"},{"location":"apielements.html#checked_1","text":"Specifies the index number (1-based) of the values to be checked. If this parameter is not specified neither item is checked. Type uint8_t","title":" checked"},{"location":"apielements.html#enable_5","text":"Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true. Type boolean","title":" enable"},{"location":"apielements.html#label_3","text":"A label is an optional string. A label will be arranged in the left or top of the radio buttons according to the order . Type String","title":" label"},{"location":"apielements.html#name_5","text":"The element name. Type String","title":" name"},{"location":"apielements.html#order","text":"Specifies the direction to arrange the radio buttons. A label will place in the left or the top according to the order . It is a value of ACArrange_t type and accepts one of the following: Type ACArrange_t AC_Horizontal : Horizontal arrangement. AC_Vertical : Vertical arrangement.","title":" order"},{"location":"apielements.html#values","text":"An array of String type for the radio button options. It is an initialization list can be used. The < input type = \"radio\" > tags will be generated from each entry in the values. Type std::vector<String>","title":" values"},{"location":"apielements.html#public-member-functions_5","text":"","title":" Public member functions"},{"location":"apielements.html#add","text":"void add( const String & value) Adds an option for the radio button. Parameter value An option string to add to the radio button.","title":" add"},{"location":"apielements.html#check","text":"void check( const String & value) Indicates the check of the specified option for the radio buttons. You can use the check function for checking dynamically with arbitrary of the radio button. Parameter value An option string to be checked.","title":" check"},{"location":"apielements.html#empty","text":"void empty( const size_t reserve = 0 ) Clear the array of option strings that AutoConnectRadio has in the values. When the reserve parameter is specified, a vector container of that size is reserved. The empty function resets the checked value to zero. When the empty function is executed, any button will be turned off. Parameter reserve Reserved size of a container for the radio button option strings.","title":" empty"},{"location":"apielements.html#operator","text":"const String & operator [] ( const std :: size_t n) Returns a value string of the index specified by n . Parameter n Index of values array to return. Its base number is 0. Return value A reference of a value string indexed by the specified the n .","title":" operator &#91;&nbsp;&#93;"},{"location":"apielements.html#size_1","text":"size_t size( void ) Returns number of options which contained. Return value Number of options which contained.","title":" size"},{"location":"apielements.html#typeof_5","text":"ACElement_t typeOf( void ) Returns type of AutoConnectElement. Return value AC_Radio","title":" typeOf"},{"location":"apielements.html#value_5","text":"const String & value( void ) const Returns current checked option of the radio buttons. Return value A String of an option current checked. If there is no checked option, a null string returned.","title":" value"},{"location":"apielements.html#autoconnectselect","text":"","title":"AutoConnectSelect"},{"location":"apielements.html#constructor_6","text":"AutoConnectSelect( const char * name = \"\" , std :: vector < String > const & options = {}, const char * label = \"\" , const uint8_t selected = 0 ) Parameters name The element name. options An array of options of the select element. Specifies a std::vector object. label Label string. selected An option should be pre-selected when the page loads.","title":" Constructor"},{"location":"apielements.html#public-member-variables_6","text":"","title":" Public member variables"},{"location":"apielements.html#enable_6","text":"Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true. Type boolean","title":" enable"},{"location":"apielements.html#name_6","text":"The element name. Type String","title":" name"},{"location":"apielements.html#label_4","text":"A label is an optional string. A label will be arranged in the top of the selection list. Type String","title":" label"},{"location":"apielements.html#options","text":"An array of String type for the selection options. It is an initialization list can be used. The < option value > tags will be generated from each entry in the options. Type std::vector<String>","title":" options"},{"location":"apielements.html#selected","text":"A selected is an optional value. Specifies 1-based index value of an options array that an option should be pre-selected when the page loads. Type uint8_t","title":" selected"},{"location":"apielements.html#public-member-functions_6","text":"","title":" Public member functions"},{"location":"apielements.html#add_1","text":"void add( const String & option) Adds a selectable option string for the selection list. Parameter option A string of selectable item to be contained in the select element.","title":" add"},{"location":"apielements.html#empty_1","text":"void empty( const size_t reserve = 0 ) Clear the array of options list that AutoConnectSelect has in the options. When the reserve parameter is specified, a vector container of that size is reserved. The empty function resets the selected value to zero. When the empty function is executed, there are no selected options and the first item is placed at the beginning. Parameter reserve Reserved size of a container for the options.","title":" empty"},{"location":"apielements.html#operator_1","text":"const String & operator [] ( const std :: size_t n) Returns an option string of the index specified by n . Parameter n Index of options array to return. Its base number is 0. Return value A reference of a option string indexed by the specified the n .","title":" operator &#91;&nbsp;&#93;"},{"location":"apielements.html#select","text":"void select ( const String & value); Selects an option with the value. Parameter value String value that option should be selected in an option array.","title":" select"},{"location":"apielements.html#size_2","text":"size_t size( void ) Returns number of options which contained. Return value Number of options which contained.","title":" size"},{"location":"apielements.html#typeof_6","text":"ACElement_t typeOf( void ) Returns type of AutoConnectElement. Return value AC_Select","title":" typeOf"},{"location":"apielements.html#value_6","text":"const String & value( void ) const ; Returns current selected option of the select list. Return value A String of an option current selected. If there is no select option, a null string returned.","title":" value"},{"location":"apielements.html#autoconnectsubmit","text":"","title":"AutoConnectSubmit"},{"location":"apielements.html#constructor_7","text":"AutoConnectSubmit( const char * name = \"\" , const char * value = \"\" , char * uri = \"\" ) Parameters name The element name. value The name of the submit button as an HTML < input type = \"button\" > tag, it will also be the label of the button. uri Destination URI.","title":" Constructor"},{"location":"apielements.html#public-member-variables_7","text":"","title":" Public member variables"},{"location":"apielements.html#enable_7","text":"Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true. Type boolean","title":" enable"},{"location":"apielements.html#name_7","text":"The element name. Type String","title":" name"},{"location":"apielements.html#uri","text":"Destination URI. Type String","title":" uri"},{"location":"apielements.html#value_7","text":"The name of the submit button. It will also be the label of the button. Type String","title":" value"},{"location":"apielements.html#public-member-functions_7","text":"","title":" Public member functions"},{"location":"apielements.html#typeof_7","text":"ACElement_t typeOf( void ) Returns type of AutoConnectElement. Return value AC_Submit","title":" typeOf"},{"location":"apielements.html#autoconnecttext","text":"","title":"AutoConnectText"},{"location":"apielements.html#constructor_8","text":"AutoConnectText( const char * name = \"\" , const char * value = \"\" , const char * style = \"\" , const char * format = \"\" ) Parameters name The element name. value String of content for the text element. style A style code with CSS format that qualifiers the text. format A pointer to a null-terminated multibyte string specifying how to interpret the value. It specifies the conversion format when outputting values. The format string conforms to C-style printf library functions","title":" Constructor"},{"location":"apielements.html#public-member-variables_8","text":"","title":" Public member variables"},{"location":"apielements.html#enable_8","text":"Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true. Type boolean","title":" enable"},{"location":"apielements.html#format","text":"The conversion format when outputting values. The format string conforms to C-style printf library functions. Type String","title":" format"},{"location":"apielements.html#name_8","text":"The element name. Type String","title":" name"},{"location":"apielements.html#style","text":"A style code with CSS format that qualifiers the text. Type String","title":" style"},{"location":"apielements.html#value_8","text":"A content string of the text element. Type String","title":" value"},{"location":"apielements.html#public-member-functions_8","text":"","title":" Public member functions"},{"location":"apielements.html#typeof_8","text":"ACElement_t typeOf( void ) Returns type of AutoConnectElement. Return value AC_Text JavaScript can be inserted into a custom Web page using AutoConnectElement. \u21a9","title":" typeOf"},{"location":"apiextra.html","text":"Icons \u00b6 The library presents two PNG icons which can be used to embed a hyperlink to the AutoConnect menu. Bar type Cog type To reference the icon, use the AUTOCONNECT_LINK macro in the sketch. It expands into the string literal as an HTML <a></a> tag with PNG embedded of the AutoConnect menu hyperlinks. Icon type is specified by the parameter of the macro. BAR_24 Bars icon, 24x24. BAR_32 Bars icon, 32x32. BAR_48 Bars icon, 48x48. COG_24 Cog icon, 24x24. COG_32 Cog icon, 32x32. Usage String html = \"<html>\" ; html += AUTOCONNECT_LINK(BAR_32); html += \"</html>\" ; server.send( 200 , \"text/html\" , html);","title":"Something extra"},{"location":"apiextra.html#icons","text":"The library presents two PNG icons which can be used to embed a hyperlink to the AutoConnect menu. Bar type Cog type To reference the icon, use the AUTOCONNECT_LINK macro in the sketch. It expands into the string literal as an HTML <a></a> tag with PNG embedded of the AutoConnect menu hyperlinks. Icon type is specified by the parameter of the macro. BAR_24 Bars icon, 24x24. BAR_32 Bars icon, 32x32. BAR_48 Bars icon, 48x48. COG_24 Cog icon, 24x24. COG_32 Cog icon, 32x32. Usage String html = \"<html>\" ; html += AUTOCONNECT_LINK(BAR_32); html += \"</html>\" ; server.send( 200 , \"text/html\" , html);","title":" Icons"},{"location":"basicusage.html","text":"Simple usage \u00b6 Embed to the sketches \u00b6 How embed the AutoConnect to the sketches you have. Most simple approach to applying AutoConnect for the existing sketches, follow the below steps. The below sketch is for ESP8266. For ESP32, replace ESP8266WebServer with WebServer and ESP8266WiFi.h with WiFi.h respectively. Insert #include <AutoConnect.h> to behind of #include <ESP8266WebServer.h> . Insert AutoConnect PORTAL(WEBSERVER); to behind of ESP8266WebServer WEBSERVER; declaration. 1 Remove WiFi. begin ( SSID , PSK ) and the subsequent logic for the connection status check. Replace WEBSERVER . begin () to PORTAL . begin () . 2 Replace WEBSERVER . handleClient () to PORTAL . handleClient () . 3 If the connection checks logic is needed, you can check the return value according to PORTAL . begin () with true or false . Basic usage \u00b6 Basic logic sequence for the user sketches \u00b6 1. A typical logic sequence \u00b6 Include headers, ESP8266WebServer.h / WebServer.h and AutoConnect.h Declare an ESP8266WebServer variable for ESP8266 or a WebServer variable for ESP32. Declare an AutoConnect variable. Implement the URL handlers provided for the on method of ESP8266WebServer/WebServer with the function() . setup() 5.1 Sets URL handler the function() to ESP8266WebServer/WebServer by ESP8266WebServer::on / WebServer::on . 5.2 Starts AutoConnect::begin() . 5.3 Check WiFi connection status. loop() 6.1 Do the process for actual sketch. 6.2 Invokes AutoConnect::handleClient() , or invokes ESP8266WebServer::handleClient() / WebServer::handleClient then AutoConnect::handleRequest() . 2. Declare AutoConnect object \u00b6 Two options are available for AutoConnect constructor . AutoConnect VARIABLE ( & ESP8266WebServer); // For ESP8266 AutoConnect VARIABLE ( & WebServer); // For ESP32 or AutoConnect VARIABLE; The parameter with an ESP8266WebServer/WebServer variable: An ESP8266WebServer/WebServer object variable must be declared. AutoConnect uses its variable to handles the AutoConnect menu . With no parameter: The sketch does not declare ESP8266WebServer/WebServer object. In this case, AutoConnect allocates an instance of the ESP8266WebServer/WebServer internally. The logic sequence of the sketch is somewhat different as the above. To register a URL handler function by ESP8266WebServer::on or WebServer::on should be performed after AutoConnect::begin . 3. No need WiFI.begin(...) \u00b6 AutoConnect internally performs WiFi.begin to establish a WiFi connection. There is no need for a general process to establish a connection using WiFi.begin with a sketch code. 4. Alternate ESP8266WebServer::begin() and WebServer::begin() \u00b6 AutoConnect::begin executes ESP8266WebServer::begin / WebServer::begin internally too and it starts the DNS server to behave as a Captive portal. So it is not needed to call ESP8266WebServer::begin / WebServer::begin in the sketch. Why DNS Server starts AutoConnect traps the detection of the captive portal and achieves a connection with the WLAN interactively by the AutoConnect menu. It responds SoftAP address to all DNS queries temporarily to trap. Once a WiFi connection establishes, the DNS server contributed by AutoConnect stops. 5. AutoConnect::begin with SSID and Password \u00b6 SSID and Password can also specify by AutoConnect::begin . ESP8266/ESP32 uses provided SSID and Password explicitly. If the connection false with specified SSID with Password then a captive portal is activated. SSID and Password are not present, ESP8266 SDK will attempt to connect using the still effectual SSID and password. Usually, it succeeds. 6. Use ESP8266WebServer::on and WebServer::on to handle URL \u00b6 AutoConnect is designed to coexist with the process for handling the web pages by user sketches. The page processing function which will send an HTML to the client invoked by the \" on::ESP8266WebServer \" or the \" on::WebServer \" function is the same as when using ESP8266WebServer/WebServer natively. 7. Use either ESP8266WebServer::handleClient()/WebServer::handleClient() or AutoConnect::handleClient() \u00b6 Both classes member function name is the same: handleClient , but the behavior is different. Using the AutoConnect embedded along with ESP8266WebServer::handleClient/WebServer::handleClient has limitations. Refer to the below section for details. ESP8266WebServer/WebServer hosted or parasitic \u00b6 The interoperable process with an ESP8266WebServer/WebServer depends on the parameters of the AutoConnect constructor . Declaration parameter for the constructor Use ESP8266WebServer::handleClient or WebServer::handleClient only Use AutoConnect::handleClient None AutoConnect menu not available. To use AutoConnect menu, need AutoConnect::handleRequest() . also to use ESP8266WebServer/WebServer natively, need AutoConnect::host() . AutoConnect menu available. To use ESP8266WebServer/WebServer natively, need AutoConnect::host() . Reference to ESP8266WebServer/WebServer AutoConnect menu not available. To use AutoConnect menu, need AutoConnect::handleRequest() . AutoConnect menu available. By declaration for the AutoConnect variable with no parameter : The ESP8266WebServer/WebServer instance is hosted by AutoConnect automatically then the sketches use AutoConnect::host as API to get it after AutoConnect::begin performed. By declaration for the AutoConnect variable with the reference of ESP8266WebServer/WebServer : AutoConnect will use it. The sketch can use it is too. In use ESP8266WebServer::handleClient()/WebServer::handleClient() : AutoConnect menu can be dispatched but not works normally. It is necessary to call AutoConnect::handleRequest after ESP8255WebServer::handleClient / WebServer::handleClient invoking. In use AutoConnect::handleClient() : The handleClient() process and the AutoConnect menu is available without calling ESP8266WebServer::handleClient . Why AutoConnect::handleRequest is needed when using ESP8266WebServer::handleClient/WebServer::handleClient The AutoConnect menu function may affect WiFi connection state. It follows that the menu process must execute outside ESP8266WebServer::handleClient and WebServer::handleClient . AutoConnect::handleClient is equivalent ESP8266WebServer::handleClient and WEbServer::handleClient included AutoConnect::handleRequest . Each VARIABLE conforms to the actual declaration in the sketches. \u21a9 WiFi SSID and Password can be specified AutoConnect::begin() too. \u21a9 Replacement the handleClient method is not indispensable. AutoConnect can still connect with the captive portal as it is ESP8266WebServer::handleClient. But it can not valid AutoConnect menu . \u21a9","title":"Basic usage"},{"location":"basicusage.html#simple-usage","text":"","title":"Simple usage"},{"location":"basicusage.html#embed-to-the-sketches","text":"How embed the AutoConnect to the sketches you have. Most simple approach to applying AutoConnect for the existing sketches, follow the below steps. The below sketch is for ESP8266. For ESP32, replace ESP8266WebServer with WebServer and ESP8266WiFi.h with WiFi.h respectively. Insert #include <AutoConnect.h> to behind of #include <ESP8266WebServer.h> . Insert AutoConnect PORTAL(WEBSERVER); to behind of ESP8266WebServer WEBSERVER; declaration. 1 Remove WiFi. begin ( SSID , PSK ) and the subsequent logic for the connection status check. Replace WEBSERVER . begin () to PORTAL . begin () . 2 Replace WEBSERVER . handleClient () to PORTAL . handleClient () . 3 If the connection checks logic is needed, you can check the return value according to PORTAL . begin () with true or false .","title":" Embed to the sketches"},{"location":"basicusage.html#basic-usage","text":"","title":"Basic usage"},{"location":"basicusage.html#basic-logic-sequence-for-the-user-sketches","text":"","title":" Basic logic sequence for the user sketches"},{"location":"basicusage.html#1-a-typical-logic-sequence","text":"Include headers, ESP8266WebServer.h / WebServer.h and AutoConnect.h Declare an ESP8266WebServer variable for ESP8266 or a WebServer variable for ESP32. Declare an AutoConnect variable. Implement the URL handlers provided for the on method of ESP8266WebServer/WebServer with the function() . setup() 5.1 Sets URL handler the function() to ESP8266WebServer/WebServer by ESP8266WebServer::on / WebServer::on . 5.2 Starts AutoConnect::begin() . 5.3 Check WiFi connection status. loop() 6.1 Do the process for actual sketch. 6.2 Invokes AutoConnect::handleClient() , or invokes ESP8266WebServer::handleClient() / WebServer::handleClient then AutoConnect::handleRequest() .","title":"1. A typical logic sequence"},{"location":"basicusage.html#2-declare-autoconnect-object","text":"Two options are available for AutoConnect constructor . AutoConnect VARIABLE ( & ESP8266WebServer); // For ESP8266 AutoConnect VARIABLE ( & WebServer); // For ESP32 or AutoConnect VARIABLE; The parameter with an ESP8266WebServer/WebServer variable: An ESP8266WebServer/WebServer object variable must be declared. AutoConnect uses its variable to handles the AutoConnect menu . With no parameter: The sketch does not declare ESP8266WebServer/WebServer object. In this case, AutoConnect allocates an instance of the ESP8266WebServer/WebServer internally. The logic sequence of the sketch is somewhat different as the above. To register a URL handler function by ESP8266WebServer::on or WebServer::on should be performed after AutoConnect::begin .","title":"2. Declare AutoConnect object"},{"location":"basicusage.html#3-no-need-wifibegin","text":"AutoConnect internally performs WiFi.begin to establish a WiFi connection. There is no need for a general process to establish a connection using WiFi.begin with a sketch code.","title":"3. No need WiFI.begin(...)"},{"location":"basicusage.html#4-alternate-esp8266webserverbegin-and-webserverbegin","text":"AutoConnect::begin executes ESP8266WebServer::begin / WebServer::begin internally too and it starts the DNS server to behave as a Captive portal. So it is not needed to call ESP8266WebServer::begin / WebServer::begin in the sketch. Why DNS Server starts AutoConnect traps the detection of the captive portal and achieves a connection with the WLAN interactively by the AutoConnect menu. It responds SoftAP address to all DNS queries temporarily to trap. Once a WiFi connection establishes, the DNS server contributed by AutoConnect stops.","title":"4. Alternate ESP8266WebServer::begin() and WebServer::begin()"},{"location":"basicusage.html#5-autoconnectbegin-with-ssid-and-password","text":"SSID and Password can also specify by AutoConnect::begin . ESP8266/ESP32 uses provided SSID and Password explicitly. If the connection false with specified SSID with Password then a captive portal is activated. SSID and Password are not present, ESP8266 SDK will attempt to connect using the still effectual SSID and password. Usually, it succeeds.","title":"5. AutoConnect::begin with SSID and Password"},{"location":"basicusage.html#6-use-esp8266webserveron-and-webserveron-to-handle-url","text":"AutoConnect is designed to coexist with the process for handling the web pages by user sketches. The page processing function which will send an HTML to the client invoked by the \" on::ESP8266WebServer \" or the \" on::WebServer \" function is the same as when using ESP8266WebServer/WebServer natively.","title":"6. Use ESP8266WebServer::on and WebServer::on to handle URL"},{"location":"basicusage.html#7-use-either-esp8266webserverhandleclientwebserverhandleclient-or-autoconnecthandleclient","text":"Both classes member function name is the same: handleClient , but the behavior is different. Using the AutoConnect embedded along with ESP8266WebServer::handleClient/WebServer::handleClient has limitations. Refer to the below section for details.","title":"7. Use either ESP8266WebServer::handleClient()/WebServer::handleClient() or AutoConnect::handleClient()"},{"location":"basicusage.html#esp8266webserverwebserver-hosted-or-parasitic","text":"The interoperable process with an ESP8266WebServer/WebServer depends on the parameters of the AutoConnect constructor . Declaration parameter for the constructor Use ESP8266WebServer::handleClient or WebServer::handleClient only Use AutoConnect::handleClient None AutoConnect menu not available. To use AutoConnect menu, need AutoConnect::handleRequest() . also to use ESP8266WebServer/WebServer natively, need AutoConnect::host() . AutoConnect menu available. To use ESP8266WebServer/WebServer natively, need AutoConnect::host() . Reference to ESP8266WebServer/WebServer AutoConnect menu not available. To use AutoConnect menu, need AutoConnect::handleRequest() . AutoConnect menu available. By declaration for the AutoConnect variable with no parameter : The ESP8266WebServer/WebServer instance is hosted by AutoConnect automatically then the sketches use AutoConnect::host as API to get it after AutoConnect::begin performed. By declaration for the AutoConnect variable with the reference of ESP8266WebServer/WebServer : AutoConnect will use it. The sketch can use it is too. In use ESP8266WebServer::handleClient()/WebServer::handleClient() : AutoConnect menu can be dispatched but not works normally. It is necessary to call AutoConnect::handleRequest after ESP8255WebServer::handleClient / WebServer::handleClient invoking. In use AutoConnect::handleClient() : The handleClient() process and the AutoConnect menu is available without calling ESP8266WebServer::handleClient . Why AutoConnect::handleRequest is needed when using ESP8266WebServer::handleClient/WebServer::handleClient The AutoConnect menu function may affect WiFi connection state. It follows that the menu process must execute outside ESP8266WebServer::handleClient and WebServer::handleClient . AutoConnect::handleClient is equivalent ESP8266WebServer::handleClient and WEbServer::handleClient included AutoConnect::handleRequest . Each VARIABLE conforms to the actual declaration in the sketches. \u21a9 WiFi SSID and Password can be specified AutoConnect::begin() too. \u21a9 Replacement the handleClient method is not indispensable. AutoConnect can still connect with the captive portal as it is ESP8266WebServer::handleClient. But it can not valid AutoConnect menu . \u21a9","title":" ESP8266WebServer/WebServer hosted or parasitic"},{"location":"changelog.html","text":"[0.9.10] June 12, 2019 \u00b6 Fixed the unable to get AutoConnectElemets values \u200b\u200bin the sketch with ESP8266 arduino core 2.5.2. [0.9.9] May 25, 2019 \u00b6 Supports ESP8266 Arduino core 2.5.2. Menu text/background color can be statically customized. Added the enable attribute to the AutoConnectElements. This attribute gives dynamically change to the element activation during the sketch executing. Added ID attribute to HTML tag generated from AutoConnectText. Fixed the input box layout collapsed. Fixed that the decoration of AutoConnectButton was disabled. Fixed that the value remains even after clearing the option with AutoConnectSelect. Fixed that an alignment violation exception occurred when loading AutoConnectAux described by JSON with PROGMEM attribute. [0.9.8] May 3, 2019 \u00b6 Supports ArduinoJson 6.9.1 or later. Supports allocating JsonDocument buffer to PSRAM on ESP32 with ArduinoJson 6.10.0 or later. Supports operator [] as a shortcut for AutoConnectAux::getElement function. Supports AutoConnectElement::as<T> function to easily coding for conversion from an AutoConnectElement to an actual type. Supports new element type AutoConnectFile and built-in file uploader. Supports a format attribute with the AutoConnectText element. Supports a selected attribute with the AutoConnectSelect element. Supports multiple element loading with AutoConnectAux::loadElement . Changed menu labels placement in source files structure. Changed API interface of **AutoConnect::where function. Fixed blank page responds with Configure new. Fixed loading elements value missing. Fixed losing elements in saveElement with ArduinoJson V6. Fixed compile error with older than ESP8266 core 2.5.0. [0.9.7] Jan. 25, 2019 \u00b6 Fixed crash in some environments. Thank you @ageurtse Supports AutoConnect menu extension by user sketch with AutoConnectAux . Supports loading and saving of user-defined parameters with JSON format. Improved the WiFi connection sequence at the first WiFi.begin. Even if AutoConnectConfig::autoReconnect is disabled when SSID and PSK are not specified, it will use the information of the last established access point. The autoReconnect option will achieve trying the connect after a previous connection failed. Supports the AutoConnectConfig::immediateStart option and immediately starts the portal without first trying WiFi.begin. You can start the captive portal at any time in combination with the AutoConnectConfig::autoRise option. Improved boot uri after reset. AutoConnectConfig::bootUri can be specified either /_ac or HOME path as the uri to be accessed after invoking Reset from AutoConnect menu. Improved source code placement of predefined macros. Defined common macros have been moved to AutoConnectDefs.h . Supports AutoConnectConfig::hostName . It activates WiFi.hostname() / WiFi.setHostName() . Supports the captive portal time-out. It can be controlled by AutoConnectConfig::portalTimeout and AutoConnectConfig::retainPortal . [0.9.6] Sept.27, 2018. \u00b6 Improvement of RSSI detection for saved SSIDs. Fixed disconnection SoftAP completely at the first connection phase of the AutoConnect::begin . [0.9.5] Aug.27, 2018. \u00b6 Supports ESP32. Fixed that crash may occur if the number of stored credentials in the EEPROM is smaller than the number of found WiFi networks. [0.9.4] May 5, 2018. \u00b6 Automatically focus passphrase after selecting SSID with Configure New AP. Supports AutoConnectConfig::autoReconnect option, it will scan the WLAN when it can not connect to the default SSID, apply the applicable credentials if it is saved, and try reconnecting. [0.9.3] March 23, 2018. \u00b6 Supports a static IP address assignment. [0.9.2] March 19, 2018. \u00b6 Improvement of string literal declaration with the examples, no library change. [0.9.1] March 13, 2018. \u00b6 A release of the stable.","title":"Change log"},{"location":"changelog.html#0910-june-12-2019","text":"Fixed the unable to get AutoConnectElemets values \u200b\u200bin the sketch with ESP8266 arduino core 2.5.2.","title":"[0.9.10] June 12, 2019"},{"location":"changelog.html#099-may-25-2019","text":"Supports ESP8266 Arduino core 2.5.2. Menu text/background color can be statically customized. Added the enable attribute to the AutoConnectElements. This attribute gives dynamically change to the element activation during the sketch executing. Added ID attribute to HTML tag generated from AutoConnectText. Fixed the input box layout collapsed. Fixed that the decoration of AutoConnectButton was disabled. Fixed that the value remains even after clearing the option with AutoConnectSelect. Fixed that an alignment violation exception occurred when loading AutoConnectAux described by JSON with PROGMEM attribute.","title":"[0.9.9] May 25, 2019"},{"location":"changelog.html#098-may-3-2019","text":"Supports ArduinoJson 6.9.1 or later. Supports allocating JsonDocument buffer to PSRAM on ESP32 with ArduinoJson 6.10.0 or later. Supports operator [] as a shortcut for AutoConnectAux::getElement function. Supports AutoConnectElement::as<T> function to easily coding for conversion from an AutoConnectElement to an actual type. Supports new element type AutoConnectFile and built-in file uploader. Supports a format attribute with the AutoConnectText element. Supports a selected attribute with the AutoConnectSelect element. Supports multiple element loading with AutoConnectAux::loadElement . Changed menu labels placement in source files structure. Changed API interface of **AutoConnect::where function. Fixed blank page responds with Configure new. Fixed loading elements value missing. Fixed losing elements in saveElement with ArduinoJson V6. Fixed compile error with older than ESP8266 core 2.5.0.","title":"[0.9.8] May 3, 2019"},{"location":"changelog.html#097-jan-25-2019","text":"Fixed crash in some environments. Thank you @ageurtse Supports AutoConnect menu extension by user sketch with AutoConnectAux . Supports loading and saving of user-defined parameters with JSON format. Improved the WiFi connection sequence at the first WiFi.begin. Even if AutoConnectConfig::autoReconnect is disabled when SSID and PSK are not specified, it will use the information of the last established access point. The autoReconnect option will achieve trying the connect after a previous connection failed. Supports the AutoConnectConfig::immediateStart option and immediately starts the portal without first trying WiFi.begin. You can start the captive portal at any time in combination with the AutoConnectConfig::autoRise option. Improved boot uri after reset. AutoConnectConfig::bootUri can be specified either /_ac or HOME path as the uri to be accessed after invoking Reset from AutoConnect menu. Improved source code placement of predefined macros. Defined common macros have been moved to AutoConnectDefs.h . Supports AutoConnectConfig::hostName . It activates WiFi.hostname() / WiFi.setHostName() . Supports the captive portal time-out. It can be controlled by AutoConnectConfig::portalTimeout and AutoConnectConfig::retainPortal .","title":"[0.9.7] Jan. 25, 2019"},{"location":"changelog.html#096-sept27-2018","text":"Improvement of RSSI detection for saved SSIDs. Fixed disconnection SoftAP completely at the first connection phase of the AutoConnect::begin .","title":"[0.9.6] Sept.27, 2018."},{"location":"changelog.html#095-aug27-2018","text":"Supports ESP32. Fixed that crash may occur if the number of stored credentials in the EEPROM is smaller than the number of found WiFi networks.","title":"[0.9.5] Aug.27, 2018."},{"location":"changelog.html#094-may-5-2018","text":"Automatically focus passphrase after selecting SSID with Configure New AP. Supports AutoConnectConfig::autoReconnect option, it will scan the WLAN when it can not connect to the default SSID, apply the applicable credentials if it is saved, and try reconnecting.","title":"[0.9.4] May 5, 2018."},{"location":"changelog.html#093-march-23-2018","text":"Supports a static IP address assignment.","title":"[0.9.3] March 23, 2018."},{"location":"changelog.html#092-march-19-2018","text":"Improvement of string literal declaration with the examples, no library change.","title":"[0.9.2] March 19, 2018."},{"location":"changelog.html#091-march-13-2018","text":"A release of the stable.","title":"[0.9.1] March 13, 2018."},{"location":"colorized.html","text":"AutoConnect menu colorizing \u00b6 You can easily change the color of the AutoConnect menu. Menu colors can be changed statically by the AutoConnect menu color definition determined at compile time. You cannot change the color while the sketch is running. The menu color scheme has been separated to AutoConnectLabels.h placed the AutoConnect library folder. 1 You can change the color scheme of the menu with the following three color codes. The color code also accepts CSS standard color names. 2 In AutoConnectLabels.h you can find three definition macros for menu colors: #define AUTOCONNECT_MENUCOLOR_TEXT Defines the menu text color. #define AUTOCONNECT_MENUCOLOR_BACKGROUND Defines the menu background color. #define AUTOCONNECT_MENUCOLOR_ACTIVE Defines the active menu item background color. Typical color schemes \u00b6 Here are some color schemes picked up. Indigo \u00b6 #define AUTOCONNECT_MENUCOLOR_TEXT \"#ffa500\" #define AUTOCONNECT_MENUCOLOR_BACKGROUND \"#1a237e\" #define AUTOCONNECT_MENUCOLOR_ACTIVE \"#283593\" Dim-gray \u00b6 #define AUTOCONNECT_MENUCOLOR_TEXT \"#fffacd\" #define AUTOCONNECT_MENUCOLOR_BACKGROUND \"#696969\" #define AUTOCONNECT_MENUCOLOR_ACTIVE \"#808080\" Brown \u00b6 #define AUTOCONNECT_MENUCOLOR_TEXT \"#e6e6fa\" #define AUTOCONNECT_MENUCOLOR_BACKGROUND \"#3e2723\" #define AUTOCONNECT_MENUCOLOR_ACTIVE \"#4e342e\" Usually, it will locate to the Arduino/libraries/AutoConnect/src folder of user documents. \u21a9 The W3C HTML and CSS standards have listed only 16 valid color names: aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, and yellow. Major browsers can accept more color names, but they are not web safe in typically. \u21a9","title":"Custom colorized"},{"location":"colorized.html#autoconnect-menu-colorizing","text":"You can easily change the color of the AutoConnect menu. Menu colors can be changed statically by the AutoConnect menu color definition determined at compile time. You cannot change the color while the sketch is running. The menu color scheme has been separated to AutoConnectLabels.h placed the AutoConnect library folder. 1 You can change the color scheme of the menu with the following three color codes. The color code also accepts CSS standard color names. 2 In AutoConnectLabels.h you can find three definition macros for menu colors: #define AUTOCONNECT_MENUCOLOR_TEXT Defines the menu text color. #define AUTOCONNECT_MENUCOLOR_BACKGROUND Defines the menu background color. #define AUTOCONNECT_MENUCOLOR_ACTIVE Defines the active menu item background color.","title":"AutoConnect menu colorizing"},{"location":"colorized.html#typical-color-schemes","text":"Here are some color schemes picked up.","title":"Typical color schemes"},{"location":"colorized.html#indigo","text":"#define AUTOCONNECT_MENUCOLOR_TEXT \"#ffa500\" #define AUTOCONNECT_MENUCOLOR_BACKGROUND \"#1a237e\" #define AUTOCONNECT_MENUCOLOR_ACTIVE \"#283593\"","title":" Indigo"},{"location":"colorized.html#dim-gray","text":"#define AUTOCONNECT_MENUCOLOR_TEXT \"#fffacd\" #define AUTOCONNECT_MENUCOLOR_BACKGROUND \"#696969\" #define AUTOCONNECT_MENUCOLOR_ACTIVE \"#808080\"","title":" Dim-gray"},{"location":"colorized.html#brown","text":"#define AUTOCONNECT_MENUCOLOR_TEXT \"#e6e6fa\" #define AUTOCONNECT_MENUCOLOR_BACKGROUND \"#3e2723\" #define AUTOCONNECT_MENUCOLOR_ACTIVE \"#4e342e\" Usually, it will locate to the Arduino/libraries/AutoConnect/src folder of user documents. \u21a9 The W3C HTML and CSS standards have listed only 16 valid color names: aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, and yellow. Major browsers can accept more color names, but they are not web safe in typically. \u21a9","title":" Brown"},{"location":"credit.html","text":"Saved credential in EEPROM \u00b6 AutoConnect stores the established WiFi connection in the EEPROM of the ESP8266/ESP32 module and equips the class to access it from the sketch. You can read, write or erase the credentials using this class individually. It's AutoConnectCredential class which provides the access method to the saved credentials in EEPROM. 1 AutoConnectCredential \u00b6 Include header \u00b6 #include <AutoConnectCredential.h> Constructors \u00b6 AutoConnectCredential(); AutoConnectCredential default constructor. The default offset value is 0. If the offset value is 0, the credential area starts from the top of the EEPROM. AutoConnect sometimes overwrites data when using this area with user sketch. AutoConnectCredential( uint16_t offset); Parameter offset Species offset from the top of the EEPROM for the credential area together. The offset value is from 0 to the flash sector size. Public member functions \u00b6 entries \u00b6 uint8_t entries( void ) Returns number of entries as contained credentials. Return value Number of entries as contained credentials. load \u00b6 int8_t load( const char * ssid, struct station_config * config) Load a credential entry and store to config . Parameters ssid SSID to be loaded. config station_config Return value Save the specified SSID's credential entry to station_config pointed to by the parameter as config . -1 is returned if the SSID is not saved. load \u00b6 bool load( int8_t entry, struct station_config * config) Load a credential entry and store to config . Parameters entry Specifies the index number based 0 to be loaded. config station_config Return value Save the specified credential entry to station_config pointed to by the parameter as config . -1 is returned if specified number is not saved. save \u00b6 bool save( const struct station_config * config) Save a credentail entry. Parameter config station_config to be saved. Return value true Successfully saved. false Failed to save. del \u00b6 bool del( const char * ssid) Delete a credential the specified SSID. Parameter ssid SSID to be deleted. Return value true Successfully deleted. false Failed to delete. The data structures \u00b6 station_config \u00b6 A structure is included in the ESP8266 SDK. You can use it in the sketch like as follows: extern \"C\" { #include <user_interface.h> } struct station_config { uint8 ssid[ 32 ]; uint8 password[ 64 ]; uint8 bssid_set; uint8 bssid[ 6 ]; }; The credential entry \u00b6 A data structure of the credential saving area in EEPROM as the below. 2 Byte offset Length Value 0 8 AC_CREDT 8 1 Number of contained entries (uint8_t) 9 2 Container size, excluding size of AC_CREDT and size of the number of entries(width for uint16_t type). 11 variable SSID terminated by 0x00. Max length is 32 bytes. variable variable Password plain text terminated by 0x00. Max length is 64 bytes. variable 6 BSSID variable Contained the next entries. (Continuation SSID+Password+BSSID) variable 1 0x00. End of container. An example using AutoConnectCredential is provided as an example of a library sketch to delete saved credentials. \u21a9 There may be 0xff as an invalid data in the credential saving area. The 0xff area would be reused. \u21a9","title":"Saved credentail access"},{"location":"credit.html#saved-credential-in-eeprom","text":"AutoConnect stores the established WiFi connection in the EEPROM of the ESP8266/ESP32 module and equips the class to access it from the sketch. You can read, write or erase the credentials using this class individually. It's AutoConnectCredential class which provides the access method to the saved credentials in EEPROM. 1","title":"Saved credential in EEPROM"},{"location":"credit.html#autoconnectcredential","text":"","title":"AutoConnectCredential"},{"location":"credit.html#include-header","text":"#include <AutoConnectCredential.h>","title":" Include header"},{"location":"credit.html#constructors","text":"AutoConnectCredential(); AutoConnectCredential default constructor. The default offset value is 0. If the offset value is 0, the credential area starts from the top of the EEPROM. AutoConnect sometimes overwrites data when using this area with user sketch. AutoConnectCredential( uint16_t offset); Parameter offset Species offset from the top of the EEPROM for the credential area together. The offset value is from 0 to the flash sector size.","title":" Constructors"},{"location":"credit.html#public-member-functions","text":"","title":" Public member functions"},{"location":"credit.html#entries","text":"uint8_t entries( void ) Returns number of entries as contained credentials. Return value Number of entries as contained credentials.","title":" entries"},{"location":"credit.html#load","text":"int8_t load( const char * ssid, struct station_config * config) Load a credential entry and store to config . Parameters ssid SSID to be loaded. config station_config Return value Save the specified SSID's credential entry to station_config pointed to by the parameter as config . -1 is returned if the SSID is not saved.","title":" load"},{"location":"credit.html#load_1","text":"bool load( int8_t entry, struct station_config * config) Load a credential entry and store to config . Parameters entry Specifies the index number based 0 to be loaded. config station_config Return value Save the specified credential entry to station_config pointed to by the parameter as config . -1 is returned if specified number is not saved.","title":" load"},{"location":"credit.html#save","text":"bool save( const struct station_config * config) Save a credentail entry. Parameter config station_config to be saved. Return value true Successfully saved. false Failed to save.","title":" save"},{"location":"credit.html#del","text":"bool del( const char * ssid) Delete a credential the specified SSID. Parameter ssid SSID to be deleted. Return value true Successfully deleted. false Failed to delete.","title":" del"},{"location":"credit.html#the-data-structures","text":"","title":"The data structures"},{"location":"credit.html#station_config","text":"A structure is included in the ESP8266 SDK. You can use it in the sketch like as follows: extern \"C\" { #include <user_interface.h> } struct station_config { uint8 ssid[ 32 ]; uint8 password[ 64 ]; uint8 bssid_set; uint8 bssid[ 6 ]; };","title":"  station_config"},{"location":"credit.html#the-credential-entry","text":"A data structure of the credential saving area in EEPROM as the below. 2 Byte offset Length Value 0 8 AC_CREDT 8 1 Number of contained entries (uint8_t) 9 2 Container size, excluding size of AC_CREDT and size of the number of entries(width for uint16_t type). 11 variable SSID terminated by 0x00. Max length is 32 bytes. variable variable Password plain text terminated by 0x00. Max length is 64 bytes. variable 6 BSSID variable Contained the next entries. (Continuation SSID+Password+BSSID) variable 1 0x00. End of container. An example using AutoConnectCredential is provided as an example of a library sketch to delete saved credentials. \u21a9 There may be 0xff as an invalid data in the credential saving area. The 0xff area would be reused. \u21a9","title":"  The credential entry"},{"location":"datatips.html","text":"Convert AutoConnectElements value to actual data type \u00b6 The values in the AutoConnectElements field of the custom Web page are all typed as String. A sketch needs to be converted to an actual data type if the data type required for sketch processing is not a String type. The AutoConnect library does not provide the data conversion utility, and its function depends on Arduino language functions or functions of the type class. However, commonly used data conversion methods are generally similar. Here, represent examples the typical method for the data type conversion for the AutoConnectElements value of custom Web pages. Integer \u00b6 Use int() or toInt() of String . AutoConnectInput & input = aux.getElement < AutoConnectInput > ( \"INPUT\" ); int value = input.value.toInt(); You can shorten it and write as like: int value = aux[ \"INPUT\" ].value.toInt(); Float \u00b6 Use float() or toFloat() of String . AutoConnectInput & input = aux.getElement < AutoConnectInput > ( \"INPUT\" ); float value = input.value.toFloat(); You can shorten it and write as like: float value = aux[ \"INPUT\" ].value.toFloat(); Date & Time \u00b6 The easiest way is to use the Arduino Time Library . Sketches must accommodate differences in date and time formats depending on the time zone. You can absorb the difference in DateTime format by using sscanf function. 1 #include <TimeLib.h> time_t tm; int Year, Month, Day, Hour, Minute, Second; AutoConnectInput & input = aux.[ \"INPUT\" ].as < AutoConnectInput > (); sscanf(input.value.c_str(), \"%d-%d-%d %d:%d:%d\" , & Year, & Month, & Day, & Hour, & Minute, & Second); tm.Year = CalendarYrToTm(Year); tm.Month = Month; tm.Day = Day; tm.Hour = Hour; tm.Minute = Minute; tm.Second = Second; IP address \u00b6 To convert a String to an IP address, use IPAddress::fromString . To stringize an instance of an IP address, use IPAddress::toString . IPAddress ip; AutoConnectInput & input aux[ \"INPUT\" ].as < AutoConnectInput > (); ip.fromString(input.value); input.value = ip.toString(); Validation for the value \u00b6 To convert input data correctly from the string, it must match its format. The validation implementation with sketches depends on various perspectives. Usually, the tiny devices have no enough power for the lexical analysis completely. But you can reduce the burden for data verification using the pattern of AutoConnectInput. By giving a pattern to AutoConnectInput , you can find errors in data format while typing in custom Web pages. Specifying the input data rule as a regular expression will validate the type match during input. If there is an error in the format during input, the background color of the field will change to pink. Refer to section Handling the custom Web pages . However, input data will be transmitted even if the value does not match the pattern. Sketches require the validation of the received data. You can use the AutoConnectInput::isValid function to validate it. The isValid function validates whether the value member variable matches a pattern and returns true or false. #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <AutoConnect.h> static const char input_page[] PROGMEM = R\"raw( [ { \"title\": \"IP Address\", \"uri\": \"/\", \"menu\": true, \"element\": [ { \"name\": \"ipaddress\", \"type\": \"ACInput\", \"label\": \"IP Address\", \"pattern\": \"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$\" }, { \"name\": \"send\", \"type\": \"ACSubmit\", \"value\": \"SEND\", \"uri\": \"/check\" } ] }, { \"title\": \"IP Address\", \"uri\": \"/check\", \"menu\": false, \"element\": [ { \"name\": \"result\", \"type\": \"ACText\" } ] } ] )raw\" ; AutoConnect portal; String checkIPAddress (AutoConnectAux & aux, PageArgument & args) { AutoConnectAux & input_page = * portal.aux( \"/\" ); AutoConnectInput & ipaddress = input_page[ \"ipaddress\" ].as < AutoConnectInput > (); AutoConnectText & result = aux[ \"result\" ].as < AutoConnectText > (); if (ipaddress.isValid()) { result.value = \"IP Address \" + ipaddress.value + \" is OK.\" ; result.style = \"\" ; } else { result.value = \"IP Address \" + ipaddress.value + \" error.\" ; result.style = \"color:red;\" ; } return String( \"\" ); } void setup () { portal.load(input_page); portal.on( \"/check\" , checkIPAddress); portal.begin(); } void loop () { portal.handleClient(); } Regular Expressions for JavaScript Regular expressions specified in the AutoConnectInput pattern conforms to the JavaScript specification . Here, represent examples the typical regular expression for the input validation. URL \u00b6 ^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$ DNS hostname \u00b6 ^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$ email address 2 \u00b6 ^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$ IP Address \u00b6 ^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$ Date as MM/DD/YYYY 3 \u00b6 ^(0[1-9]|1[012])[- \\/.](0[1-9]|[12][0-9]|3[01])[- \\/.](19|20)\\d\\d$ Contain with backquote If that regular expression contains a backquote it must be escaped by backquote duplication. The ssanf library function cannot be used with the old Arduino core. \u21a9 This regular expression does not fully support the format of the e-mail address requested in RFC5322 . \u21a9 This regular expression does not consider semantic constraints. It is not possible to detect errors that do not exist as actual dates. \u21a9","title":"Tips for data conversion"},{"location":"datatips.html#convert-autoconnectelements-value-to-actual-data-type","text":"The values in the AutoConnectElements field of the custom Web page are all typed as String. A sketch needs to be converted to an actual data type if the data type required for sketch processing is not a String type. The AutoConnect library does not provide the data conversion utility, and its function depends on Arduino language functions or functions of the type class. However, commonly used data conversion methods are generally similar. Here, represent examples the typical method for the data type conversion for the AutoConnectElements value of custom Web pages.","title":"Convert AutoConnectElements value to actual data type"},{"location":"datatips.html#integer","text":"Use int() or toInt() of String . AutoConnectInput & input = aux.getElement < AutoConnectInput > ( \"INPUT\" ); int value = input.value.toInt(); You can shorten it and write as like: int value = aux[ \"INPUT\" ].value.toInt();","title":" Integer"},{"location":"datatips.html#float","text":"Use float() or toFloat() of String . AutoConnectInput & input = aux.getElement < AutoConnectInput > ( \"INPUT\" ); float value = input.value.toFloat(); You can shorten it and write as like: float value = aux[ \"INPUT\" ].value.toFloat();","title":" Float"},{"location":"datatips.html#date-time","text":"The easiest way is to use the Arduino Time Library . Sketches must accommodate differences in date and time formats depending on the time zone. You can absorb the difference in DateTime format by using sscanf function. 1 #include <TimeLib.h> time_t tm; int Year, Month, Day, Hour, Minute, Second; AutoConnectInput & input = aux.[ \"INPUT\" ].as < AutoConnectInput > (); sscanf(input.value.c_str(), \"%d-%d-%d %d:%d:%d\" , & Year, & Month, & Day, & Hour, & Minute, & Second); tm.Year = CalendarYrToTm(Year); tm.Month = Month; tm.Day = Day; tm.Hour = Hour; tm.Minute = Minute; tm.Second = Second;","title":" Date &amp; Time"},{"location":"datatips.html#ip-address","text":"To convert a String to an IP address, use IPAddress::fromString . To stringize an instance of an IP address, use IPAddress::toString . IPAddress ip; AutoConnectInput & input aux[ \"INPUT\" ].as < AutoConnectInput > (); ip.fromString(input.value); input.value = ip.toString();","title":" IP address"},{"location":"datatips.html#validation-for-the-value","text":"To convert input data correctly from the string, it must match its format. The validation implementation with sketches depends on various perspectives. Usually, the tiny devices have no enough power for the lexical analysis completely. But you can reduce the burden for data verification using the pattern of AutoConnectInput. By giving a pattern to AutoConnectInput , you can find errors in data format while typing in custom Web pages. Specifying the input data rule as a regular expression will validate the type match during input. If there is an error in the format during input, the background color of the field will change to pink. Refer to section Handling the custom Web pages . However, input data will be transmitted even if the value does not match the pattern. Sketches require the validation of the received data. You can use the AutoConnectInput::isValid function to validate it. The isValid function validates whether the value member variable matches a pattern and returns true or false. #include <ESP8266WiFi.h> #include <ESP8266WebServer.h> #include <AutoConnect.h> static const char input_page[] PROGMEM = R\"raw( [ { \"title\": \"IP Address\", \"uri\": \"/\", \"menu\": true, \"element\": [ { \"name\": \"ipaddress\", \"type\": \"ACInput\", \"label\": \"IP Address\", \"pattern\": \"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$\" }, { \"name\": \"send\", \"type\": \"ACSubmit\", \"value\": \"SEND\", \"uri\": \"/check\" } ] }, { \"title\": \"IP Address\", \"uri\": \"/check\", \"menu\": false, \"element\": [ { \"name\": \"result\", \"type\": \"ACText\" } ] } ] )raw\" ; AutoConnect portal; String checkIPAddress (AutoConnectAux & aux, PageArgument & args) { AutoConnectAux & input_page = * portal.aux( \"/\" ); AutoConnectInput & ipaddress = input_page[ \"ipaddress\" ].as < AutoConnectInput > (); AutoConnectText & result = aux[ \"result\" ].as < AutoConnectText > (); if (ipaddress.isValid()) { result.value = \"IP Address \" + ipaddress.value + \" is OK.\" ; result.style = \"\" ; } else { result.value = \"IP Address \" + ipaddress.value + \" error.\" ; result.style = \"color:red;\" ; } return String( \"\" ); } void setup () { portal.load(input_page); portal.on( \"/check\" , checkIPAddress); portal.begin(); } void loop () { portal.handleClient(); } Regular Expressions for JavaScript Regular expressions specified in the AutoConnectInput pattern conforms to the JavaScript specification . Here, represent examples the typical regular expression for the input validation.","title":"Validation for the value"},{"location":"datatips.html#url","text":"^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$","title":" URL"},{"location":"datatips.html#dns-hostname","text":"^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$","title":" DNS hostname"},{"location":"datatips.html#email-address-2","text":"^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$","title":" email address 2"},{"location":"datatips.html#ip-address_1","text":"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$","title":" IP Address"},{"location":"datatips.html#date-as-mmddyyyy-3","text":"^(0[1-9]|1[012])[- \\/.](0[1-9]|[12][0-9]|3[01])[- \\/.](19|20)\\d\\d$ Contain with backquote If that regular expression contains a backquote it must be escaped by backquote duplication. The ssanf library function cannot be used with the old Arduino core. \u21a9 This regular expression does not fully support the format of the e-mail address requested in RFC5322 . \u21a9 This regular expression does not consider semantic constraints. It is not possible to detect errors that do not exist as actual dates. \u21a9","title":" Date as MM/DD/YYYY 3"},{"location":"faq.html","text":"After connected, AutoConnect menu performs but no happens. \u00b6 If you can access the AutoConnect root path as http://ESP8266IPADDRESS/_ac from browser, probably the sketch uses ESP8266WebServer::handleClient() without AutoConnect::handleRequest() . For AutoConnect menus to work properly, call AutoConnect::handleRequest() after ESP8266WebServer::handleClient() invoked, or use AutoConnect::handleClient() . AutoConnect::handleClient() is equivalent ESP8266WebServer::handleClient combined AutoConnect::handleRequest() . See also the explanation here . An esp8266ap as SoftAP was connected but Captive portal does not start. \u00b6 Captive portal detection could not be trapped. It is necessary to disconnect and reset ESP8266 to clear memorized connection data in ESP8266. Also, It may be displayed on the smartphone if the connection information of esp8266ap is wrong. In that case, delete the connection information of esp8266ap memorized by the smartphone once. Connection lost immediately after establishment with AP \u00b6 A captive portal is disconnected immediately after the connection establishes with the new AP. This is a known problem of ESP32, and it may occur when the following conditions are satisfied at the same time. SoftAP channel on ESP32 and the connecting AP channel you specified are different. (The default channel of SoftAP is 1.) NVS had erased by erase_flash causes the connection data lost. The NVS partition has been moved. Never connected to the AP in the past. There are receivable multiple WiFi signals which are the same SSID with different channels using the WiFi repeater etc. (This condition is loose, it may occur even if there is no WiFi repeater.) Or the using channel of the AP which established a connection is congested with the radio signal on the same band. (If the channel crowd, connections to known APs may also fail.) Other possibilities The above conditions are not absolute. It results from my investigation, and other conditions may exist. To avoid this problem, try changing the channel . ESP32 hardware equips only one RF circuitry for WiFi signal. At the AP_STA mode, ESP32 as an AP attempts connect to another AP on another channel while keeping the connection with the station then the channel switching will occur causes the station may be disconnected. But it may not be just a matter of channel switching causes ESP8266 has the same constraints too. It may be a problem with AutoConnect or the arduino core or SDK issue. This problem will persist until a specific solution. Does not appear esp8266ap in smartphone. \u00b6 Maybe it is successfully connected at the first WiFi.begin . ESP8266 remembers the last SSID successfully connected and will use at the next. It means SoftAP will only start up when the first WiFi.begin() fails. The saved SSID would be cleared by WiFi.disconnect() with WIFI_STA mode. If you do not want automatic reconnection, you can erase the memorized SSID with the following simple sketch. #include <ESP8266WiFi.h> void setup () { delay( 1000 ); Serial.begin( 115200 ); WiFi.mode(WIFI_STA); delay( 100 ); WiFi.begin(); if (WiFi.waitForConnectResult() == WL_CONNECTED) { WiFi.disconnect(); while (WiFi.status() == WL_CONNECTED) delay( 100 ); } Serial.println( \"WiFi disconnected.\" ); } void loop () { delay( 1000 ); } You can interactively check the WiFi state of ESP8266. Please try ESPShaker . It is ESP8266 interactive serial command processor. Does not response from /_ac. \u00b6 Probably WiFi.begin failed with the specified SSID. Activating the debug printing will help you to track down the cause. How change esp8266ap for SSID name in Captive portal? \u00b6 You can change both by using AutoConnectConfig::apid and AutoConnectConfig::psk . Refer to section Change SSID and Password for SoftAP in Advanced usage . How change HTTP port? \u00b6 HTTP port number is defined as a macro in AutoConnectDefs.h header file. You can change it directly with several editors and must re-compile. #define AUTOCONNECT_HTTPPORT 80 Hang up after Reset? \u00b6 If ESP8266 hang up after reset by AutoConnect menu, perhaps manual reset is not yet. Especially if it is not manual reset yet after uploading the sketch, the boot mode will stay 'Uart Download'. There is some discussion about this on the Github's ESP8266 core: https://github.com/esp8266/Arduino/issues/1017 If you received the following message, the boot mode is still sketch uploaded. It needs to the manual reset once. ets Jan 8 2013,rst cause:2, boot mode:(1,6) or (1,7) ets Jan 8 2013,rst cause:4, boot mode:(1,6) or (1,7) wdt reset The correct boot mode for starting the sketch is (3, x) . ESP8266 Boot Messages It is described by ESP8266 Non-OS SDK API Reference , section A.5. Messages Description rst cause 1: power on 2: external reset 4: hardware watchdog reset boot mode (the first parameter) 1: ESP8266 is in UART-down mode (and downloads firmware into flash). 3: ESP8266 is in Flash-boot mode (and boots up from flash). How erase the credentials saved in EEPROM? \u00b6 Make some sketches for erasing the EEPROM area, or some erasing utility is needed. You can prepare the sketch to erase the saved credential with AutoConnectCredential . The AutoConnectCrendential class provides the access method to the saved credential in EEPROM and library source file is including it. Refer to ' Saved credential access ' on section Appendix for details. Hint With the ESPShaker , you can access EEPROM interactively from the serial monitor, and of course you can erase saved credentials. How locate the link button to the AutoConnect menu? \u00b6 Link button to AutoConnect menu can be embedded into Sketch's web page. The root path of the menu is /_ac by default and embed the following <a></a> tag in the generating HTML. < a style = \"background-color:SteelBlue; display:inline-block; padding:7px 13px; text-decoration:none;\" href = \"/_ac\" > MENU </ a > How much memory does AutoConnect consume? \u00b6 Sketch size \u00b6 It increases about 53K bytes compared to the case without AutoConnect. A sketch size of the most simple example introduced in the Getting started is about 330K bytes. (270K byte without AutoConnect) Heap size \u00b6 It consumes about 2K bytes in the static and about 12K bytes are consumed at the moment when menu executed. I cannot complete to Wi-Fi login from smartphone. \u00b6 Because AutoConnect does not send a login success response to the captive portal requests from the smartphone. The login success response varies iOS, Android and Windows. By analyzing the request URL of different login success inquiries for each OS, the correct behavior can be implemented, but not yet. Please resets ESP8266 from the AutoConnect menu. I cannot see the custom Web page. \u00b6 If the sketch is correct, a JSON syntax error may have occurred. In this case, activate the AC_DEBUG and rerun. If you take the message of JSON syntax error, the Json Assistant helps syntax checking. This online tool is provided by the author of ArduinoJson and is most consistent for the AutoConnect. Submit element in a custom Web page does not react. \u00b6 Is there the AutoConnectElements element named SUBMIT in the custom Web page? (case sensitive ignored) AutoConnect does not rely on the input type=submit element for the form submission and uses HTML form element submit function instead. So, the submit function will fail if there is an element named 'submit' in the form. You can not use SUBMIT as the element name of AutoConnectElements in a custom Web page that declares the AutoConnectSubmit element. Still, not stable with my sketch. \u00b6 If AutoConnect behavior is not stable with your sketch, you can try the following measures. 1. Change WiFi channel \u00b6 Both ESP8266 and ESP32 can only work on one channel at any given moment. This will cause your station to lose connectivity on the channel hosting the captive portal. If the channel of the AP which you want to connect is different from the SoftAP channel, the operation of the captive portal will not respond with the screen of the AutoConnect connection attempt remains displayed. In such a case, please try to configure the channel with AutoConnectConfig to match the access point. AutoConnect portal; AutoConnectConfig config; config.channel = 3 ; // Specifies a channel number that matches the AP portal.config(config); // Apply channel configurration portal.begin(); // Start the portal Channel selection guide Espressif Systems has released a channel selection guide . 2. Change the arduino core version \u00b6 I recommend change installed an arduino core version to the upstream when your sketch is not stable with AutoConnect on each board. with ESP8266 arduino core \u00b6 You can select the lwIP variant to contribute for the stable behavior. The lwIP v2 Lower memory option of Arduino IDE for core version 2.4.2 is based on the lwIP-v2. On the other hand, the core version 2.5.0 upstream is based on the lwIP-2.1.2 stable release. You can select the option from Arduino IDE as Tool menu, if you are using ESP8266 core 2.5.0. It can be select lwIP v2 Lower Memory option. (not lwIP v2 Lower Memory (no features) ) It is expected to improve response performance and stability. with ESP32 arduino core \u00b6 The arduino-esp32 is still under development. It is necessary to judge whether the problem cause of the core or AutoConnect. Trace the log with the esp32 core and the AutoConnect debug option enabled for problem diagnosis and please you check the issue of arduino-esp32 . The problem that your sketch possesses may already have been solved. 3. Turn on the debug log options \u00b6 To fully enable for the AutoConnect debug logging options, change the following two files. AutoConnectDefs.h #define AC_DEBUG PageBuilder.h 1 #define PB_DEBUG 4. Reports the issue to AutoConnect Github repository \u00b6 If you can not solve AutoConnect problems please report to Issues . And please make your question comprehensively, not a statement. Include all relevant information to start the problem diagnostics as follows: 2 Hardware module Arduino core version Including the upstream commit ID if necessary Operating System which you use Your smartphone OS and version (Especially for Android) Your AP information (IP, channel) if related lwIP variant Problem description If you have a STACK DUMP decoded result with formatted by the code block tag The sketch code with formatted by the code block tag (Reduce to the reproducible minimum code for the problem) Debug messages output (Including arduino core) I will make efforts to solve as quickly as possible. But I would like you to know that it is not always possible. Thank you. PageBuilder.h exists in the libraries/PageBuilder/src directory under your sketch folder. \u21a9 Without this information, the reproducibility of the problem is reduced, making diagnosis and analysis difficult. \u21a9","title":"FAQ"},{"location":"faq.html#after-connected-autoconnect-menu-performs-but-no-happens","text":"If you can access the AutoConnect root path as http://ESP8266IPADDRESS/_ac from browser, probably the sketch uses ESP8266WebServer::handleClient() without AutoConnect::handleRequest() . For AutoConnect menus to work properly, call AutoConnect::handleRequest() after ESP8266WebServer::handleClient() invoked, or use AutoConnect::handleClient() . AutoConnect::handleClient() is equivalent ESP8266WebServer::handleClient combined AutoConnect::handleRequest() . See also the explanation here .","title":" After connected, AutoConnect menu performs but no happens."},{"location":"faq.html#an-esp8266ap-as-softap-was-connected-but-captive-portal-does-not-start","text":"Captive portal detection could not be trapped. It is necessary to disconnect and reset ESP8266 to clear memorized connection data in ESP8266. Also, It may be displayed on the smartphone if the connection information of esp8266ap is wrong. In that case, delete the connection information of esp8266ap memorized by the smartphone once.","title":" An esp8266ap as SoftAP was connected but Captive portal does not start."},{"location":"faq.html#connection-lost-immediately-after-establishment-with-ap","text":"A captive portal is disconnected immediately after the connection establishes with the new AP. This is a known problem of ESP32, and it may occur when the following conditions are satisfied at the same time. SoftAP channel on ESP32 and the connecting AP channel you specified are different. (The default channel of SoftAP is 1.) NVS had erased by erase_flash causes the connection data lost. The NVS partition has been moved. Never connected to the AP in the past. There are receivable multiple WiFi signals which are the same SSID with different channels using the WiFi repeater etc. (This condition is loose, it may occur even if there is no WiFi repeater.) Or the using channel of the AP which established a connection is congested with the radio signal on the same band. (If the channel crowd, connections to known APs may also fail.) Other possibilities The above conditions are not absolute. It results from my investigation, and other conditions may exist. To avoid this problem, try changing the channel . ESP32 hardware equips only one RF circuitry for WiFi signal. At the AP_STA mode, ESP32 as an AP attempts connect to another AP on another channel while keeping the connection with the station then the channel switching will occur causes the station may be disconnected. But it may not be just a matter of channel switching causes ESP8266 has the same constraints too. It may be a problem with AutoConnect or the arduino core or SDK issue. This problem will persist until a specific solution.","title":" Connection lost immediately after establishment with AP"},{"location":"faq.html#does-not-appear-esp8266ap-in-smartphone","text":"Maybe it is successfully connected at the first WiFi.begin . ESP8266 remembers the last SSID successfully connected and will use at the next. It means SoftAP will only start up when the first WiFi.begin() fails. The saved SSID would be cleared by WiFi.disconnect() with WIFI_STA mode. If you do not want automatic reconnection, you can erase the memorized SSID with the following simple sketch. #include <ESP8266WiFi.h> void setup () { delay( 1000 ); Serial.begin( 115200 ); WiFi.mode(WIFI_STA); delay( 100 ); WiFi.begin(); if (WiFi.waitForConnectResult() == WL_CONNECTED) { WiFi.disconnect(); while (WiFi.status() == WL_CONNECTED) delay( 100 ); } Serial.println( \"WiFi disconnected.\" ); } void loop () { delay( 1000 ); } You can interactively check the WiFi state of ESP8266. Please try ESPShaker . It is ESP8266 interactive serial command processor.","title":" Does not appear esp8266ap in smartphone."},{"location":"faq.html#does-not-response-from-95ac","text":"Probably WiFi.begin failed with the specified SSID. Activating the debug printing will help you to track down the cause.","title":" Does not response from /_ac."},{"location":"faq.html#how-change-esp8266ap-for-ssid-name-in-captive-portal","text":"You can change both by using AutoConnectConfig::apid and AutoConnectConfig::psk . Refer to section Change SSID and Password for SoftAP in Advanced usage .","title":" How change esp8266ap for SSID name in Captive portal?"},{"location":"faq.html#how-change-http-port","text":"HTTP port number is defined as a macro in AutoConnectDefs.h header file. You can change it directly with several editors and must re-compile. #define AUTOCONNECT_HTTPPORT 80","title":" How change HTTP port?"},{"location":"faq.html#hang-up-after-reset","text":"If ESP8266 hang up after reset by AutoConnect menu, perhaps manual reset is not yet. Especially if it is not manual reset yet after uploading the sketch, the boot mode will stay 'Uart Download'. There is some discussion about this on the Github's ESP8266 core: https://github.com/esp8266/Arduino/issues/1017 If you received the following message, the boot mode is still sketch uploaded. It needs to the manual reset once. ets Jan 8 2013,rst cause:2, boot mode:(1,6) or (1,7) ets Jan 8 2013,rst cause:4, boot mode:(1,6) or (1,7) wdt reset The correct boot mode for starting the sketch is (3, x) . ESP8266 Boot Messages It is described by ESP8266 Non-OS SDK API Reference , section A.5. Messages Description rst cause 1: power on 2: external reset 4: hardware watchdog reset boot mode (the first parameter) 1: ESP8266 is in UART-down mode (and downloads firmware into flash). 3: ESP8266 is in Flash-boot mode (and boots up from flash).","title":" Hang up after Reset?"},{"location":"faq.html#how-erase-the-credentials-saved-in-eeprom","text":"Make some sketches for erasing the EEPROM area, or some erasing utility is needed. You can prepare the sketch to erase the saved credential with AutoConnectCredential . The AutoConnectCrendential class provides the access method to the saved credential in EEPROM and library source file is including it. Refer to ' Saved credential access ' on section Appendix for details. Hint With the ESPShaker , you can access EEPROM interactively from the serial monitor, and of course you can erase saved credentials.","title":" How erase the credentials saved in EEPROM?"},{"location":"faq.html#how-locate-the-link-button-to-the-autoconnect-menu","text":"Link button to AutoConnect menu can be embedded into Sketch's web page. The root path of the menu is /_ac by default and embed the following <a></a> tag in the generating HTML. < a style = \"background-color:SteelBlue; display:inline-block; padding:7px 13px; text-decoration:none;\" href = \"/_ac\" > MENU </ a >","title":" How locate the link button to the  AutoConnect menu?"},{"location":"faq.html#how-much-memory-does-autoconnect-consume","text":"","title":" How much memory does AutoConnect consume?"},{"location":"faq.html#sketch-size","text":"It increases about 53K bytes compared to the case without AutoConnect. A sketch size of the most simple example introduced in the Getting started is about 330K bytes. (270K byte without AutoConnect)","title":"Sketch size"},{"location":"faq.html#heap-size","text":"It consumes about 2K bytes in the static and about 12K bytes are consumed at the moment when menu executed.","title":"Heap size"},{"location":"faq.html#i-cannot-complete-to-wi-fi-login-from-smartphone","text":"Because AutoConnect does not send a login success response to the captive portal requests from the smartphone. The login success response varies iOS, Android and Windows. By analyzing the request URL of different login success inquiries for each OS, the correct behavior can be implemented, but not yet. Please resets ESP8266 from the AutoConnect menu.","title":" I cannot complete to Wi-Fi login from smartphone."},{"location":"faq.html#i-cannot-see-the-custom-web-page","text":"If the sketch is correct, a JSON syntax error may have occurred. In this case, activate the AC_DEBUG and rerun. If you take the message of JSON syntax error, the Json Assistant helps syntax checking. This online tool is provided by the author of ArduinoJson and is most consistent for the AutoConnect.","title":" I cannot see the custom Web page."},{"location":"faq.html#submit-element-in-a-custom-web-page-does-not-react","text":"Is there the AutoConnectElements element named SUBMIT in the custom Web page? (case sensitive ignored) AutoConnect does not rely on the input type=submit element for the form submission and uses HTML form element submit function instead. So, the submit function will fail if there is an element named 'submit' in the form. You can not use SUBMIT as the element name of AutoConnectElements in a custom Web page that declares the AutoConnectSubmit element.","title":" Submit element in a custom Web page does not react."},{"location":"faq.html#still-not-stable-with-my-sketch","text":"If AutoConnect behavior is not stable with your sketch, you can try the following measures.","title":" Still, not stable with my sketch."},{"location":"faq.html#1-change-wifi-channel","text":"Both ESP8266 and ESP32 can only work on one channel at any given moment. This will cause your station to lose connectivity on the channel hosting the captive portal. If the channel of the AP which you want to connect is different from the SoftAP channel, the operation of the captive portal will not respond with the screen of the AutoConnect connection attempt remains displayed. In such a case, please try to configure the channel with AutoConnectConfig to match the access point. AutoConnect portal; AutoConnectConfig config; config.channel = 3 ; // Specifies a channel number that matches the AP portal.config(config); // Apply channel configurration portal.begin(); // Start the portal Channel selection guide Espressif Systems has released a channel selection guide .","title":"1. Change WiFi channel"},{"location":"faq.html#2-change-the-arduino-core-version","text":"I recommend change installed an arduino core version to the upstream when your sketch is not stable with AutoConnect on each board.","title":"2. Change the arduino core version"},{"location":"faq.html#with-esp8266-arduino-core","text":"You can select the lwIP variant to contribute for the stable behavior. The lwIP v2 Lower memory option of Arduino IDE for core version 2.4.2 is based on the lwIP-v2. On the other hand, the core version 2.5.0 upstream is based on the lwIP-2.1.2 stable release. You can select the option from Arduino IDE as Tool menu, if you are using ESP8266 core 2.5.0. It can be select lwIP v2 Lower Memory option. (not lwIP v2 Lower Memory (no features) ) It is expected to improve response performance and stability.","title":"with ESP8266 arduino core"},{"location":"faq.html#with-esp32-arduino-core","text":"The arduino-esp32 is still under development. It is necessary to judge whether the problem cause of the core or AutoConnect. Trace the log with the esp32 core and the AutoConnect debug option enabled for problem diagnosis and please you check the issue of arduino-esp32 . The problem that your sketch possesses may already have been solved.","title":"with ESP32 arduino core"},{"location":"faq.html#3-turn-on-the-debug-log-options","text":"To fully enable for the AutoConnect debug logging options, change the following two files. AutoConnectDefs.h #define AC_DEBUG PageBuilder.h 1 #define PB_DEBUG","title":"3. Turn on the debug log options"},{"location":"faq.html#4-reports-the-issue-to-autoconnect-github-repository","text":"If you can not solve AutoConnect problems please report to Issues . And please make your question comprehensively, not a statement. Include all relevant information to start the problem diagnostics as follows: 2 Hardware module Arduino core version Including the upstream commit ID if necessary Operating System which you use Your smartphone OS and version (Especially for Android) Your AP information (IP, channel) if related lwIP variant Problem description If you have a STACK DUMP decoded result with formatted by the code block tag The sketch code with formatted by the code block tag (Reduce to the reproducible minimum code for the problem) Debug messages output (Including arduino core) I will make efforts to solve as quickly as possible. But I would like you to know that it is not always possible. Thank you. PageBuilder.h exists in the libraries/PageBuilder/src directory under your sketch folder. \u21a9 Without this information, the reproducibility of the problem is reduced, making diagnosis and analysis difficult. \u21a9","title":"4. Reports the issue to AutoConnect Github repository"},{"location":"gettingstarted.html","text":"Let's do the most simple sketch \u00b6 Open the Arduino IDE, write the following sketch and upload it. The feature of this sketch is that the SSID and Password are not coded. #include <ESP8266WiFi.h> // Replace with WiFi.h for ESP32 #include <ESP8266WebServer.h> // Replace with WebServer.h for ESP32 #include <AutoConnect.h> ESP8266WebServer Server; // Replace with WebServer for ESP32 AutoConnect Portal (Server); void rootPage () { char content[] = \"Hello, world\" ; Server.send( 200 , \"text/plain\" , content); } void setup () { delay( 1000 ); Serial.begin( 115200 ); Serial.println(); Server.on( \"/\" , rootPage); if (Portal.begin()) { Serial.println( \"WiFi connected: \" + WiFi.localIP().toString()); } } void loop () { Portal.handleClient(); } The above code can be applied to ESP8266. To apply to ESP32, replace ESP8266WebServer class with WebServer and include WiFi.h and WebServer.h of arduino-esp32 appropriately. Run at first \u00b6 After about 30 seconds, if the ESP8266 cannot connect to nearby Wi-Fi spot, you pull out your smartphone and open Wi-Fi settings from the Settings Apps. You can see the esp8266ap 1 in the list of \"CHOOSE A NETWORK...\" . Then tap the esp8266ap and enter password 12345678 , a something screen pops up automatically as shown below. This is the AutoConnect statistics screen. This screen displays the current status of the established connection, WiFi mode, IP address, free memory size, and etc. Also, the hamburger icon is the control menu of AutoConnect seems at the upper right. By tap the hamburger icon, the control menu appears as the below. Join to the new access point \u00b6 Here, tap \"Configure new AP\" to connect the new access point then the SSID configuration screen would be shown. Enter the SSID and Passphrase and tap apply to start connecting the access point. Connection establishment \u00b6 After connection established, the current status screen will appear. It is already connected to WLAN with WiFi mode as WIFI_AP_STA and the IP connection status is displayed there including the SSID. Then at this screen, you have two options for the next step. For one, continues execution of the sketch while keeping this connection. You can access ESP8266 via browser through the established IP address after cancel to \" Log in \" by upper right on the screen. Or, \" RESET \" can be selected. The ESP8266 resets and reboots. After that, immediately before the connection will be restored automatically with WIFI_STA mode. Run for usually \u00b6 The IP address of ESP8266 would be displayed on the serial monitor after connection restored. Please access its address from the browser. The \"Hello, world\" page will respond. It's the page that was handled by in the sketch with \" on \" function of ESP8266WebServer . window.onload = function() { Gifffer(); }; When applied to ESP32, SSID will appear as esp32ap . \u21a9","title":"Getting started"},{"location":"gettingstarted.html#lets-do-the-most-simple-sketch","text":"Open the Arduino IDE, write the following sketch and upload it. The feature of this sketch is that the SSID and Password are not coded. #include <ESP8266WiFi.h> // Replace with WiFi.h for ESP32 #include <ESP8266WebServer.h> // Replace with WebServer.h for ESP32 #include <AutoConnect.h> ESP8266WebServer Server; // Replace with WebServer for ESP32 AutoConnect Portal (Server); void rootPage () { char content[] = \"Hello, world\" ; Server.send( 200 , \"text/plain\" , content); } void setup () { delay( 1000 ); Serial.begin( 115200 ); Serial.println(); Server.on( \"/\" , rootPage); if (Portal.begin()) { Serial.println( \"WiFi connected: \" + WiFi.localIP().toString()); } } void loop () { Portal.handleClient(); } The above code can be applied to ESP8266. To apply to ESP32, replace ESP8266WebServer class with WebServer and include WiFi.h and WebServer.h of arduino-esp32 appropriately.","title":"Let's do the most simple sketch"},{"location":"gettingstarted.html#run-at-first","text":"After about 30 seconds, if the ESP8266 cannot connect to nearby Wi-Fi spot, you pull out your smartphone and open Wi-Fi settings from the Settings Apps. You can see the esp8266ap 1 in the list of \"CHOOSE A NETWORK...\" . Then tap the esp8266ap and enter password 12345678 , a something screen pops up automatically as shown below. This is the AutoConnect statistics screen. This screen displays the current status of the established connection, WiFi mode, IP address, free memory size, and etc. Also, the hamburger icon is the control menu of AutoConnect seems at the upper right. By tap the hamburger icon, the control menu appears as the below.","title":" Run at first"},{"location":"gettingstarted.html#join-to-the-new-access-point","text":"Here, tap \"Configure new AP\" to connect the new access point then the SSID configuration screen would be shown. Enter the SSID and Passphrase and tap apply to start connecting the access point.","title":" Join to the new access point"},{"location":"gettingstarted.html#connection-establishment","text":"After connection established, the current status screen will appear. It is already connected to WLAN with WiFi mode as WIFI_AP_STA and the IP connection status is displayed there including the SSID. Then at this screen, you have two options for the next step. For one, continues execution of the sketch while keeping this connection. You can access ESP8266 via browser through the established IP address after cancel to \" Log in \" by upper right on the screen. Or, \" RESET \" can be selected. The ESP8266 resets and reboots. After that, immediately before the connection will be restored automatically with WIFI_STA mode.","title":" Connection establishment"},{"location":"gettingstarted.html#run-for-usually","text":"The IP address of ESP8266 would be displayed on the serial monitor after connection restored. Please access its address from the browser. The \"Hello, world\" page will respond. It's the page that was handled by in the sketch with \" on \" function of ESP8266WebServer . window.onload = function() { Gifffer(); }; When applied to ESP32, SSID will appear as esp32ap . \u21a9","title":" Run for usually"},{"location":"howtoembed.html","text":"Embed the AutoConnect to the sketch \u00b6 Here hold two case examples. Both examples perform the same function. Only how to incorporate the AutoConnect into the sketch differs. Also included in the sample folder, HandlePortal.ino also shows how to use the PageBuilder library for HTML assemblies. What does this example do? \u00b6 Uses the web interface to light the LED connected to the D0 (sometimes called BUILTIN_LED ) port of the NodeMCU module like the following animation. Access to the ESP8266 module connected WiFi from the browser then the page contains the current value of the D0 port would be displayed. The page has the buttons to switch the port value. The LED will blink according to the value with clicked by the button. This example is a typical sketch of manipulating ESP8266's GPIO via WLAN. Embed AutoConnect library into this sketch. There are few places to be changed. And you can use AutoConnect's captive portal function to establish a connection freely to other WiFi spots. Embed AutoConnect \u00b6 Pattern A. \u00b6 Bind to ESP8266WebServer, performs handleClient with handleRequest. In what situations should the handleRequest be used. It is something needs to be done immediately after the handle client. It is better to call only AutoConnect::handleClient whenever possible. Pattern B. \u00b6 Declare only AutoConnect, performs handleClient. Used with MQTT as a client application \u00b6 The effect of AutoConnect is not only for ESP8266/ESP32 as the web server. It has advantages for something WiFi client as well. For example, AutoConnect is also convenient for publishing MQTT messages from various measurement points. Even if the SSID is different for each measurement point, it is not necessary to modify the sketch. This example tries to publish the WiFi signal strength of ESP8266 with MQTT. It uses the ThingSpeak for MQTT broker. ESP8266 publishes the RSSI value to the channel created on ThingSpeak as MQTT client . This example is well suited to demonstrate the usefulness of AutoConnect, as RSSI values are measured at each access point usually. Just adding a few lines of code makes it unnecessary to upload sketches with the different SSIDs rewrite for each access point. Advance procedures \u00b6 Arduino Client for MQTT - It's the PubSubClient , install it to Arduino IDE. If you have the latest version already, this step does not need. Create a channel on ThingSpeak. Get the Channel API Keys from ThingSpeak, put its keys to the sketch. The ThingSpeak is the open IoT platform. It is capable of sending data privately to the cloud and analyzing, visualizing its data. If you do not have an account of ThingSpeak, you need that account to proceed further. ThingSpeak has the free plan for the account which uses within the scope of this example. 1 You can sign up with the ThingSpeak sign-up page . Whether you should do sign-up or not. You are entrusted with the final judgment of account creation for ThingSpeak. Create an account at your own risk. Create a channel on ThingSpeak \u00b6 Sign in ThingSpeak. Select Channels to show the My Channels , then click New Channel . At the New Channel screen, enter each field as a below. And click Save Channel at the bottom of the screen to save. Name: ESP8266 Signal Strength Description: ESP8266 RSSI publish Field1: RSSI Get Channel ID and API Keys \u00b6 The channel successfully created, you can see the channel status screen as a below. Channel ID is displayed there. 2 Here, switch the channel status tab to API Keys . The API key required to publish the message is the Write API Key . The last key you need is the User API Key and can be confirmed it in the user profile. Pull down Account from the top menu, select My profile . Then you can see the ThingSpeak settings and the User API Key is displayed middle of this screen. The sketch, Publishes messages \u00b6 The complete code of the sketch is mqttRSSI.ino in the AutoConnect repository . Replace the following #define in a sketch with User API Key , Write API Key and Channel ID . After Keys updated, compile the sketch and upload it. #define MQTT_USER_KEY \"****************\" // Replace to User API Key. #define CHANNEL_ID \"******\" // Replace to Channel ID. #define CHANNEL_API_KEY_WR \"****************\" // Replace to the write API Key. Publish messages \u00b6 After upload and reboot complete, the message publishing will start via the access point now set. The message carries RSSI as the current WiFi signal strength. The signal strength variations in RSSI are displayed on ThingSpeak's Channel status screen. How embed to your sketches \u00b6 For the client sketches, the code required to connect to WiFi is the following four parts only. #include directive 3 Include AutoConnect.h header file behind the include of ESP8266WiFi.h . Declare AutoConnect The declaration of the AutoConnect variable is not accompanied by ESP8266WebServer. Invokes \"begin()\" Call AutoConnect::begin . If you need to assign a static IP address, executes AutoConnectConfig before that. Performs \"handleClent()\" in \"loop()\" Invokes AutoConnect::handleClient() at inside loop() to enable the AutoConnect menu. window.onload = function() { Gifffer(); }; As of March 21, 2018. \u21a9 '454951' in the example above, but your channel ID should be different. \u21a9 #include <ESP8266WebServer.h> does not necessary for uses only client. \u21a9","title":"How to embed"},{"location":"howtoembed.html#embed-the-autoconnect-to-the-sketch","text":"Here hold two case examples. Both examples perform the same function. Only how to incorporate the AutoConnect into the sketch differs. Also included in the sample folder, HandlePortal.ino also shows how to use the PageBuilder library for HTML assemblies.","title":"Embed the AutoConnect to the sketch"},{"location":"howtoembed.html#what-does-this-example-do","text":"Uses the web interface to light the LED connected to the D0 (sometimes called BUILTIN_LED ) port of the NodeMCU module like the following animation. Access to the ESP8266 module connected WiFi from the browser then the page contains the current value of the D0 port would be displayed. The page has the buttons to switch the port value. The LED will blink according to the value with clicked by the button. This example is a typical sketch of manipulating ESP8266's GPIO via WLAN. Embed AutoConnect library into this sketch. There are few places to be changed. And you can use AutoConnect's captive portal function to establish a connection freely to other WiFi spots.","title":"What does this example do?"},{"location":"howtoembed.html#embed-autoconnect","text":"","title":"Embed AutoConnect"},{"location":"howtoembed.html#pattern-a","text":"Bind to ESP8266WebServer, performs handleClient with handleRequest. In what situations should the handleRequest be used. It is something needs to be done immediately after the handle client. It is better to call only AutoConnect::handleClient whenever possible.","title":" Pattern A."},{"location":"howtoembed.html#pattern-b","text":"Declare only AutoConnect, performs handleClient.","title":" Pattern B."},{"location":"howtoembed.html#used-with-mqtt-as-a-client-application","text":"The effect of AutoConnect is not only for ESP8266/ESP32 as the web server. It has advantages for something WiFi client as well. For example, AutoConnect is also convenient for publishing MQTT messages from various measurement points. Even if the SSID is different for each measurement point, it is not necessary to modify the sketch. This example tries to publish the WiFi signal strength of ESP8266 with MQTT. It uses the ThingSpeak for MQTT broker. ESP8266 publishes the RSSI value to the channel created on ThingSpeak as MQTT client . This example is well suited to demonstrate the usefulness of AutoConnect, as RSSI values are measured at each access point usually. Just adding a few lines of code makes it unnecessary to upload sketches with the different SSIDs rewrite for each access point.","title":"Used with MQTT as a client application"},{"location":"howtoembed.html#advance-procedures","text":"Arduino Client for MQTT - It's the PubSubClient , install it to Arduino IDE. If you have the latest version already, this step does not need. Create a channel on ThingSpeak. Get the Channel API Keys from ThingSpeak, put its keys to the sketch. The ThingSpeak is the open IoT platform. It is capable of sending data privately to the cloud and analyzing, visualizing its data. If you do not have an account of ThingSpeak, you need that account to proceed further. ThingSpeak has the free plan for the account which uses within the scope of this example. 1 You can sign up with the ThingSpeak sign-up page . Whether you should do sign-up or not. You are entrusted with the final judgment of account creation for ThingSpeak. Create an account at your own risk.","title":"Advance procedures"},{"location":"howtoembed.html#create-a-channel-on-thingspeak","text":"Sign in ThingSpeak. Select Channels to show the My Channels , then click New Channel . At the New Channel screen, enter each field as a below. And click Save Channel at the bottom of the screen to save. Name: ESP8266 Signal Strength Description: ESP8266 RSSI publish Field1: RSSI","title":"Create a channel on ThingSpeak"},{"location":"howtoembed.html#get-channel-id-and-api-keys","text":"The channel successfully created, you can see the channel status screen as a below. Channel ID is displayed there. 2 Here, switch the channel status tab to API Keys . The API key required to publish the message is the Write API Key . The last key you need is the User API Key and can be confirmed it in the user profile. Pull down Account from the top menu, select My profile . Then you can see the ThingSpeak settings and the User API Key is displayed middle of this screen.","title":"Get Channel ID and API Keys"},{"location":"howtoembed.html#the-sketch-publishes-messages","text":"The complete code of the sketch is mqttRSSI.ino in the AutoConnect repository . Replace the following #define in a sketch with User API Key , Write API Key and Channel ID . After Keys updated, compile the sketch and upload it. #define MQTT_USER_KEY \"****************\" // Replace to User API Key. #define CHANNEL_ID \"******\" // Replace to Channel ID. #define CHANNEL_API_KEY_WR \"****************\" // Replace to the write API Key.","title":"The sketch, Publishes messages"},{"location":"howtoembed.html#publish-messages","text":"After upload and reboot complete, the message publishing will start via the access point now set. The message carries RSSI as the current WiFi signal strength. The signal strength variations in RSSI are displayed on ThingSpeak's Channel status screen.","title":"Publish messages"},{"location":"howtoembed.html#how-embed-to-your-sketches","text":"For the client sketches, the code required to connect to WiFi is the following four parts only. #include directive 3 Include AutoConnect.h header file behind the include of ESP8266WiFi.h . Declare AutoConnect The declaration of the AutoConnect variable is not accompanied by ESP8266WebServer. Invokes \"begin()\" Call AutoConnect::begin . If you need to assign a static IP address, executes AutoConnectConfig before that. Performs \"handleClent()\" in \"loop()\" Invokes AutoConnect::handleClient() at inside loop() to enable the AutoConnect menu. window.onload = function() { Gifffer(); }; As of March 21, 2018. \u21a9 '454951' in the example above, but your channel ID should be different. \u21a9 #include <ESP8266WebServer.h> does not necessary for uses only client. \u21a9","title":"How embed to your sketches"},{"location":"license.html","text":"MIT License Copyright \u00a9 2018-2019 Hieromon Ikasamo Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Acknowledgments Each of the following libraries used by AutoConnect is under its license: The Luxbar is licensed under the MIT License. https://github.com/balzss/luxbar ArduinoJson is licensed under the MIT License. https://arduinojson.org/","title":"License"},{"location":"lsbegin.html","text":"AutoConnect::begin logic sequence \u00b6 Several parameters as follows of AutoConnectConfig affect the behavior of AutoConnect::begin function. Each parameter affects the behaves in interacted order with the priority and apply to the logic sequence of AutoConnect::begin . immediateStart : The captive portal start immediately, without first WiFi.begin. autoReconenct : Attempt re-connect with past SSID by saved credential. portalTimeout : Time out limit for the portal. retainPortal : Keep DNS server functioning for the captive portal. You can use these parameters in combination with sketch requirements and need to understand correctly the behavior caused by the parameters. The following chart shows the AutoConnect::begin logic sequence including the effect of these parameters. For example, AutoConnect::begin will not exits without the portalTimeout while the connection not establishes, but WebServer will start to work. A DNS server that detects the probe of the captive portal is also effective. So, your sketch may work seemingly, but it will close with inside a loop of the AutoConnect::begin function. Especially when invoking AutoConnect::begin in the setup() , execution control does not pass to the loop() . As different scenes, you may use the immediateStart effectively. Equipped the external switch to activate the captive portal with the ESP module, combined with the portalTime and the retainPortal it will become WiFi active connection feature. You can start AutoConnect::begin at any point in the loop() , which allows your sketch can behave both the offline mode and the online mode. The retainPortal option allows the DNS server to continue operation after exiting from AutoConnect::begin . AutoConnect traps captive portal detection from the client and redirects it to the AutoConnect menu. That trap will answer all unresolved addresses with SoftAP's IP address. If the URI handler for the source request is undefined, it returns a 302 response with SoftAPIP/_ac to the client. This is the mechanism of AutoConnect's captive portal. Captive portal probes will frequently occur while you are attempting on the client device's WiFi connection Apps and these implementations are varied each OS, so it not realistic to identify all probing URIs. Therefore, while retainPortal is enabled, it is not preferable to executing the sketch under the WiFi connection Apps on the client device. (Probably not work correctly) You need to exit from the WiFi connection Apps once. Please consider these kinds of influence when you make sketches. The AutoConnect::begin 3 rd parameter Another parameter as the 3 rd parameter of AutoConnect::begin related to timeout constrains the connection wait time after WiFi.begin. It is the CONNECTED judgment of the above chart that it has an effect.","title":"Inside AutoConnect::begin"},{"location":"lsbegin.html#autoconnectbegin-logic-sequence","text":"Several parameters as follows of AutoConnectConfig affect the behavior of AutoConnect::begin function. Each parameter affects the behaves in interacted order with the priority and apply to the logic sequence of AutoConnect::begin . immediateStart : The captive portal start immediately, without first WiFi.begin. autoReconenct : Attempt re-connect with past SSID by saved credential. portalTimeout : Time out limit for the portal. retainPortal : Keep DNS server functioning for the captive portal. You can use these parameters in combination with sketch requirements and need to understand correctly the behavior caused by the parameters. The following chart shows the AutoConnect::begin logic sequence including the effect of these parameters. For example, AutoConnect::begin will not exits without the portalTimeout while the connection not establishes, but WebServer will start to work. A DNS server that detects the probe of the captive portal is also effective. So, your sketch may work seemingly, but it will close with inside a loop of the AutoConnect::begin function. Especially when invoking AutoConnect::begin in the setup() , execution control does not pass to the loop() . As different scenes, you may use the immediateStart effectively. Equipped the external switch to activate the captive portal with the ESP module, combined with the portalTime and the retainPortal it will become WiFi active connection feature. You can start AutoConnect::begin at any point in the loop() , which allows your sketch can behave both the offline mode and the online mode. The retainPortal option allows the DNS server to continue operation after exiting from AutoConnect::begin . AutoConnect traps captive portal detection from the client and redirects it to the AutoConnect menu. That trap will answer all unresolved addresses with SoftAP's IP address. If the URI handler for the source request is undefined, it returns a 302 response with SoftAPIP/_ac to the client. This is the mechanism of AutoConnect's captive portal. Captive portal probes will frequently occur while you are attempting on the client device's WiFi connection Apps and these implementations are varied each OS, so it not realistic to identify all probing URIs. Therefore, while retainPortal is enabled, it is not preferable to executing the sketch under the WiFi connection Apps on the client device. (Probably not work correctly) You need to exit from the WiFi connection Apps once. Please consider these kinds of influence when you make sketches. The AutoConnect::begin 3 rd parameter Another parameter as the 3 rd parameter of AutoConnect::begin related to timeout constrains the connection wait time after WiFi.begin. It is the CONNECTED judgment of the above chart that it has an effect.","title":"AutoConnect::begin logic sequence"},{"location":"menu.html","text":"Luxbar The AutoConnect menu is developed using the LuxBar which is licensed under the MIT License. See the License . Where the from \u00b6 The AutoConnect menu appears when you access the AutoConnect root path . It is assigned \" /_ac \" located on the local IP address of ESP8266/ESP32 module by default. This location can be changed in the sketch. The following screen will appear at access to http://{localIP}/_ac as the root path. This is the statistics of the current WiFi connection. You can access the menu from the here, to invoke it tap at right on top. (e.g. http://192.168.244.1/_ac for SoftAP mode.) What's the local IP? A local IP means Local IP at connection established or SoftAP's IP. Right on top \u00b6 Currently, AutoConnect supports four menus. Undermost menu as \"HOME\" returns to the home path of its sketch. Configure new AP : Configure SSID and Password for new access point. Open SSIDs : Opens the past SSID which has been established connection from EEPROM. Disconnect : Disconnects current connection. Reset... : Rest the ESP8266/ESP32 module. HOME : Return to user home page. Configure new AP \u00b6 Scan all available access point in the vicinity and display it. Strength and security of the detected AP are marked. The is indicated for the SSID that needs a security key. \" Hidden: \" means the number of hidden SSIDs discovered. Enter SSID and Passphrase and tap \" apply \" to starts WiFi connection. Open SSIDs \u00b6 Once it was established WiFi connection, its SSID and password will be saved in EEPROM of ESP8266/ESP32 automatically. The Open SSIDs menu reads the saved SSID credentials from the EEPROM. The stored credential data are listed by the SSID as shown below. Its label is a clickable button. Tap the SSID button, starts WiFi connection it. Disconnect \u00b6 Disconnect ESP8266/ESP32 from the current connection. It can also reset the ESP8266/ESP32 automatically after disconnection by instructing with using API in the sketch. After tapping \"Disconnect\", you will not be able to reach the AutoConnect menu. Once disconnected, you will need to set the SSID again for connecting the WLAN. Reset... \u00b6 Reset the ESP8266/ESP32 module, it will start rebooting. After rebooting complete, the ESP8266/ESP32 module begins establishing the previous connection with WIFI_STA mode, and esp8266ap or esp32ap of an access point will disappear from WLAN. Not every ESP8266 module will be rebooted normally The Reset menu is using the ESP.reset() function for ESP8266. This is an almost hardware reset. In order to resume the sketch normally, the state of GPIO0 is important. Since this depends on the circuit implementation for each module, not every module will be rebooted normally. See also FAQ . Custom menu items \u00b6 The menu items of the custom Web page line up at the below in the AutoConnect menu if the custom Web pages are joined. Details for Custom Web pages in AutoConnect menu . HOME \u00b6 A HOME item located at the bottom of the menu list is a link to the home path. The URI as the home path is / by default, and it is defined by AUTOCONNECT_HOMEURI with AutoConnectDefs.h file. #define AUTOCONNECT_HOMEURI \"/\" You can change the HOME path using the AutoConnect API. The AutoConnect::home function sets the URI as a link of the HOME item of the AutoConnect menu. by attaching AutoConnect menu \u00b6 The AutoConnect menu can contain HTML pages of your owns sketch as custom items. It works for HTML pages implemented by ESP8266WebServer::on handler or WebServer::on handler for ESP32. That is, you can make it as menu items to invoke the legacy web page. The below screenshot is the result of adding an example sketch for the ESP8266WebServer library known as FSBrowser to the AutoConnect menu item. It adds Edit and List items with little modification to the legacy sketch code. You can extend the AutoConnect menu to improve the original sketches and according to the procedure described in section Advanced Usage .","title":"AutoConnect menu"},{"location":"menu.html#where-the-from","text":"The AutoConnect menu appears when you access the AutoConnect root path . It is assigned \" /_ac \" located on the local IP address of ESP8266/ESP32 module by default. This location can be changed in the sketch. The following screen will appear at access to http://{localIP}/_ac as the root path. This is the statistics of the current WiFi connection. You can access the menu from the here, to invoke it tap at right on top. (e.g. http://192.168.244.1/_ac for SoftAP mode.) What's the local IP? A local IP means Local IP at connection established or SoftAP's IP.","title":" Where the from"},{"location":"menu.html#right-on-top","text":"Currently, AutoConnect supports four menus. Undermost menu as \"HOME\" returns to the home path of its sketch. Configure new AP : Configure SSID and Password for new access point. Open SSIDs : Opens the past SSID which has been established connection from EEPROM. Disconnect : Disconnects current connection. Reset... : Rest the ESP8266/ESP32 module. HOME : Return to user home page.","title":" Right on top"},{"location":"menu.html#configure-new-ap","text":"Scan all available access point in the vicinity and display it. Strength and security of the detected AP are marked. The is indicated for the SSID that needs a security key. \" Hidden: \" means the number of hidden SSIDs discovered. Enter SSID and Passphrase and tap \" apply \" to starts WiFi connection.","title":" Configure new AP"},{"location":"menu.html#open-ssids","text":"Once it was established WiFi connection, its SSID and password will be saved in EEPROM of ESP8266/ESP32 automatically. The Open SSIDs menu reads the saved SSID credentials from the EEPROM. The stored credential data are listed by the SSID as shown below. Its label is a clickable button. Tap the SSID button, starts WiFi connection it.","title":" Open SSIDs"},{"location":"menu.html#disconnect","text":"Disconnect ESP8266/ESP32 from the current connection. It can also reset the ESP8266/ESP32 automatically after disconnection by instructing with using API in the sketch. After tapping \"Disconnect\", you will not be able to reach the AutoConnect menu. Once disconnected, you will need to set the SSID again for connecting the WLAN.","title":" Disconnect"},{"location":"menu.html#reset","text":"Reset the ESP8266/ESP32 module, it will start rebooting. After rebooting complete, the ESP8266/ESP32 module begins establishing the previous connection with WIFI_STA mode, and esp8266ap or esp32ap of an access point will disappear from WLAN. Not every ESP8266 module will be rebooted normally The Reset menu is using the ESP.reset() function for ESP8266. This is an almost hardware reset. In order to resume the sketch normally, the state of GPIO0 is important. Since this depends on the circuit implementation for each module, not every module will be rebooted normally. See also FAQ .","title":" Reset..."},{"location":"menu.html#custom-menu-items","text":"The menu items of the custom Web page line up at the below in the AutoConnect menu if the custom Web pages are joined. Details for Custom Web pages in AutoConnect menu .","title":" Custom menu items"},{"location":"menu.html#home","text":"A HOME item located at the bottom of the menu list is a link to the home path. The URI as the home path is / by default, and it is defined by AUTOCONNECT_HOMEURI with AutoConnectDefs.h file. #define AUTOCONNECT_HOMEURI \"/\" You can change the HOME path using the AutoConnect API. The AutoConnect::home function sets the URI as a link of the HOME item of the AutoConnect menu.","title":" HOME"},{"location":"menu.html#by-attaching-autoconnect-menu","text":"The AutoConnect menu can contain HTML pages of your owns sketch as custom items. It works for HTML pages implemented by ESP8266WebServer::on handler or WebServer::on handler for ESP32. That is, you can make it as menu items to invoke the legacy web page. The below screenshot is the result of adding an example sketch for the ESP8266WebServer library known as FSBrowser to the AutoConnect menu item. It adds Edit and List items with little modification to the legacy sketch code. You can extend the AutoConnect menu to improve the original sketches and according to the procedure described in section Advanced Usage .","title":" by attaching AutoConnect menu"},{"location":"menuize.html","text":"What menus can be made using AutoConnect \u00b6 AutoConnect generates a menu dynamically depending on the instantiated AutoConnectAux at the sketch executing time. Usually, it is a collection of AutoConnectElement . In addition to this, you can generate a menu from only AutoConnectAux, without AutoConnectElements. In other words, you can easily create a built-in menu featuring the WiFi connection facility embedding the legacy web pages. Basic mechanism of menu generation \u00b6 The sketch can display the AutoConnect menu by following three patterns depending on AutoConnect-API usage. \u2002 Basic menu It is the most basic menu for only connecting WiFi. Sketch can automatically display this menu with the basic call sequence of the AutoConnect API which invokes AutoConnect::begin and AutoConnect::handleClient . \u2002 Extra menu with custom Web pages which is consisted by AutoConnectElements It is an extended menu that appears when the sketch consists of the custom Web pages with AutoConnectAux and AutoConnectElements. Refer to section Custom Web pages section . \u2002 Extra menu which contains legacy pages It is for the legacy sketches using the on handler of ESP8266WebServer/WebServer(for ESP32) class natively and looks the same as the extra menu as above. The mechanism to generate the AutoConnect menu is simple. It will insert the item as <li> tag generated from the title and uri member variable of the AutoConnectAux object to the menu list of AutoConnect's built-in HTML. Therefore, the legacy sketches can invoke the web pages from the AutoConnect menu with just declaration the title and URI to AutoConnectAux. Place the item for the legacy sketches on the menu \u00b6 To implement this with your sketch, use only the AutoConnectAux constructed with the title and URI of that page. AutoConnectElements is not required. The AutoConnect library package contains an example sketch for ESP8266WebServer known as FSBrowser. Its example is a sample implementation that supports AutoConnect without changing the structure of the original FSBrowser and has the menu item for Edit and List . The changes I made to adapt the FSBrowser to the AutoConnect menu are slight as follows: Add AutoConnect declaration. Add the menu item named \" Edit \" and \" List \" of AutoConnectAux as each page. Replace the instance of ESP8266WebServer to AutoConnect. Change the menu title to FSBrowser using AutoConnectConfig::title . Join the legacy pages to AutoConnect declared at step #1 using AutoConnect::join . Joining multiple at one time with the list initialization for std::vector . According to the basic procedure of AutoConnect. Establish a connection with AutoConnect::begin and perform AutoConnect::handleClient in loop() . \u2002 Modification for FSBrowser (a part of sketch code) ... and embeds a hyperlink with an icon in the bottom of the body section of index.htm contained in the data folder to jump to the AutoConnect menu. < p style = \"padding-top:15px;text-align:center\" > < a href = \"/_ac\" >< img src = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAC2klEQVRIS61VvWsUQRSfmU2pon9BUIkQUaKFaCBKgooSb2d3NSSFKbQR/KrEIiIKBiGF2CgRxEpjQNHs7mwOUcghwUQ7g58IsbGxEBWsb2f8zR177s3t3S2cA8ftzPu993vzvoaSnMu2vRKlaqgKp74Q/tE8qjQPyHGcrUrRjwlWShmDbFMURd/a6TcQwNiYUmpFCPElUebcuQ2vz6aNATMVReHEPwzfSSntDcNwNo2rI+DcvQzhpAbA40VKyV0p1Q9snzBG1qYVcYufXV1sREraDcxpyHdXgkfpRBj6Uwm2RsC5dxxmZ9pdOY9cKTISRcHTCmGiUCh4fYyplTwG2mAUbtMTBMHXOgK9QfyXEZr+TkgQ1oUwDA40hEgfIAfj+HuQRaBzAs9eKyUZ5Htx+T3ZODKG8DzOJMANhmGomJVMXPll+hx9UUAlzZrJJ4QNCDG3VEfguu7mcpmcB/gkBOtShhQhchAlu5jlLUgc9ENgyP5gf9+y6LTv+58p5zySkgwzLNOIGc8sEoT1Lc53NMlbCQQuvMxeCME1NNPVVkmH/i3IzzXDtCSA0qQQwZWOCJDY50jsQRjJmkslEOxvTcDRO6zPxOh5xZglKkYLhWM9jMVnkIsTyMT6NBj7IbOCEjm6HxNVVTo2WXqEWJZ1T8rytB6GxizyDkPhWVpBqfiXUtbo/HywYJSpA9kMamNNPZ71R9Hcm+TMHHZNGw3EuraXEUldbfvw25UdOjqOt+JhMwJd7+jSTpZaEiIcaCDwPK83jtWnTkwnunFMtxeL/ge9r4XItt1RNNaj/0GAcV2bR3U5sG3nEh6M61US+Qrfd9Bs31GGulI2GOS/8dgcQZV1w+ApjIxB7TDwF9GcNzJzoA+rD0/8HvPnXQJCt2qFCwbBTfRI7UyXumWVt+HJ9NO4XI++bdsb0YyrqXmlh+AWOLHaLqS5CLQR5EggR3YlcVS9gKeH2hnX8r8Kmi1CAsl36QAAAABJRU5ErkJggg==\" border = \"0\" title = \"AutoConnect menu\" alt = \"AutoConnect menu\" /></ a > </ p > window.onload = function() { Gifffer(); };","title":"Attach the menu"},{"location":"menuize.html#what-menus-can-be-made-using-autoconnect","text":"AutoConnect generates a menu dynamically depending on the instantiated AutoConnectAux at the sketch executing time. Usually, it is a collection of AutoConnectElement . In addition to this, you can generate a menu from only AutoConnectAux, without AutoConnectElements. In other words, you can easily create a built-in menu featuring the WiFi connection facility embedding the legacy web pages.","title":"What menus can be made using AutoConnect"},{"location":"menuize.html#basic-mechanism-of-menu-generation","text":"The sketch can display the AutoConnect menu by following three patterns depending on AutoConnect-API usage. \u2002 Basic menu It is the most basic menu for only connecting WiFi. Sketch can automatically display this menu with the basic call sequence of the AutoConnect API which invokes AutoConnect::begin and AutoConnect::handleClient . \u2002 Extra menu with custom Web pages which is consisted by AutoConnectElements It is an extended menu that appears when the sketch consists of the custom Web pages with AutoConnectAux and AutoConnectElements. Refer to section Custom Web pages section . \u2002 Extra menu which contains legacy pages It is for the legacy sketches using the on handler of ESP8266WebServer/WebServer(for ESP32) class natively and looks the same as the extra menu as above. The mechanism to generate the AutoConnect menu is simple. It will insert the item as <li> tag generated from the title and uri member variable of the AutoConnectAux object to the menu list of AutoConnect's built-in HTML. Therefore, the legacy sketches can invoke the web pages from the AutoConnect menu with just declaration the title and URI to AutoConnectAux.","title":"Basic mechanism of menu generation"},{"location":"menuize.html#place-the-item-for-the-legacy-sketches-on-the-menu","text":"To implement this with your sketch, use only the AutoConnectAux constructed with the title and URI of that page. AutoConnectElements is not required. The AutoConnect library package contains an example sketch for ESP8266WebServer known as FSBrowser. Its example is a sample implementation that supports AutoConnect without changing the structure of the original FSBrowser and has the menu item for Edit and List . The changes I made to adapt the FSBrowser to the AutoConnect menu are slight as follows: Add AutoConnect declaration. Add the menu item named \" Edit \" and \" List \" of AutoConnectAux as each page. Replace the instance of ESP8266WebServer to AutoConnect. Change the menu title to FSBrowser using AutoConnectConfig::title . Join the legacy pages to AutoConnect declared at step #1 using AutoConnect::join . Joining multiple at one time with the list initialization for std::vector . According to the basic procedure of AutoConnect. Establish a connection with AutoConnect::begin and perform AutoConnect::handleClient in loop() . \u2002 Modification for FSBrowser (a part of sketch code) ... and embeds a hyperlink with an icon in the bottom of the body section of index.htm contained in the data folder to jump to the AutoConnect menu. < p style = \"padding-top:15px;text-align:center\" > < a href = \"/_ac\" >< img src = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAC2klEQVRIS61VvWsUQRSfmU2pon9BUIkQUaKFaCBKgooSb2d3NSSFKbQR/KrEIiIKBiGF2CgRxEpjQNHs7mwOUcghwUQ7g58IsbGxEBWsb2f8zR177s3t3S2cA8ftzPu993vzvoaSnMu2vRKlaqgKp74Q/tE8qjQPyHGcrUrRjwlWShmDbFMURd/a6TcQwNiYUmpFCPElUebcuQ2vz6aNATMVReHEPwzfSSntDcNwNo2rI+DcvQzhpAbA40VKyV0p1Q9snzBG1qYVcYufXV1sREraDcxpyHdXgkfpRBj6Uwm2RsC5dxxmZ9pdOY9cKTISRcHTCmGiUCh4fYyplTwG2mAUbtMTBMHXOgK9QfyXEZr+TkgQ1oUwDA40hEgfIAfj+HuQRaBzAs9eKyUZ5Htx+T3ZODKG8DzOJMANhmGomJVMXPll+hx9UUAlzZrJJ4QNCDG3VEfguu7mcpmcB/gkBOtShhQhchAlu5jlLUgc9ENgyP5gf9+y6LTv+58p5zySkgwzLNOIGc8sEoT1Lc53NMlbCQQuvMxeCME1NNPVVkmH/i3IzzXDtCSA0qQQwZWOCJDY50jsQRjJmkslEOxvTcDRO6zPxOh5xZglKkYLhWM9jMVnkIsTyMT6NBj7IbOCEjm6HxNVVTo2WXqEWJZ1T8rytB6GxizyDkPhWVpBqfiXUtbo/HywYJSpA9kMamNNPZ71R9Hcm+TMHHZNGw3EuraXEUldbfvw25UdOjqOt+JhMwJd7+jSTpZaEiIcaCDwPK83jtWnTkwnunFMtxeL/ge9r4XItt1RNNaj/0GAcV2bR3U5sG3nEh6M61US+Qrfd9Bs31GGulI2GOS/8dgcQZV1w+ApjIxB7TDwF9GcNzJzoA+rD0/8HvPnXQJCt2qFCwbBTfRI7UyXumWVt+HJ9NO4XI++bdsb0YyrqXmlh+AWOLHaLqS5CLQR5EggR3YlcVS9gKeH2hnX8r8Kmi1CAsl36QAAAABJRU5ErkJggg==\" border = \"0\" title = \"AutoConnect menu\" alt = \"AutoConnect menu\" /></ a > </ p > window.onload = function() { Gifffer(); };","title":"Place the item for the legacy sketches on the menu"},{"location":"wojson.html","text":"Suppress increase in memory consumption \u00b6 Custom Web page processing consumes a lot of memory. AutoConnect will take a whole string of the JSON document for the custom Web pages into memory. The required buffer size for the JSON document of example sketch mqttRSSI reaches approximately 3000 bytes. And actually, it needs twice the heap area. Especially this constraint will be a problem with the ESP8266 which has a heap size poor. AutoConnect can handle custom Web pages without using JSON. In that case, since the ArduinoJson library will not be bound, the sketch size will also be reduced. Writing the custom Web pages without JSON \u00b6 To handle the custom Web pages without using JSON, follow the steps below. Create or define AutoConnectAux for each page. Create or define AutoConnectElement(s) . Add AutoConnectElement(s) to AutoConnectAux. Create more AutoConnectAux containing AutoConnectElement(s) , if necessary. Register the request handlers for the custom Web pages. Join prepared AutoConnectAux(s) to AutoConnect. Invoke AutoConnect::begin() . In addition to the above procedure, to completely cut off for binding with the ArduinoJson library, turn off the ArduinoJson use indicator which is declared by the AutoConnect definitions . Its declaration is in AutoConnectDefs.h file. 1 // Comment out the AUTOCONNECT_USE_JSON macro to detach the ArduinoJson. #define AUTOCONNECT_USE_JSON JSON processing will be disabled Commenting out the AUTOCONNECT_USE_JSON macro invalidates all functions related to JSON processing. If the sketch is using the JSON function, it will result in a compile error. Implementation example without ArduinoJson \u00b6 The code excluding JSON processing from the mqttRSSI sketch attached to the library is as follows. (It is a part of code. Refer to mqttRSSI_NA.ino for the whole sketch.) The JSON document for mqttRSSI [ { \"title\" : \"MQTT Setting\" , \"uri\" : \"/mqtt_setting\" , \"menu\" : true , \"element\" : [ { \"name\" : \"header\" , \"type\" : \"ACText\" , \"value\" : \"<h2>MQTT broker settings</h2>\" , \"style\" : \"text-align:center;color:#2f4f4f;padding:10px;\" }, { \"name\" : \"caption\" , \"type\" : \"ACText\" , \"value\" : \"Publishing the WiFi signal strength to MQTT channel. RSSI value of ESP8266 to the channel created on ThingSpeak\" , \"style\" : \"font-family:serif;color:#4682b4;\" }, { \"name\" : \"mqttserver\" , \"type\" : \"ACInput\" , \"value\" : \"\" , \"label\" : \"Server\" , \"pattern\" : \"^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\\\-]*[a-zA-Z0-9])\\\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\\\-]*[A-Za-z0-9])$\" , \"placeholder\" : \"MQTT broker server\" }, { \"name\" : \"channelid\" , \"type\" : \"ACInput\" , \"label\" : \"Channel ID\" , \"pattern\" : \"^[0-9]{6}$\" }, { \"name\" : \"userkey\" , \"type\" : \"ACInput\" , \"label\" : \"User Key\" }, { \"name\" : \"apikey\" , \"type\" : \"ACInput\" , \"label\" : \"API Key\" }, { \"name\" : \"newline\" , \"type\" : \"ACElement\" , \"value\" : \"<hr>\" }, { \"name\" : \"uniqueid\" , \"type\" : \"ACCheckbox\" , \"value\" : \"unique\" , \"label\" : \"Use APID unique\" , \"checked\" : false }, { \"name\" : \"period\" , \"type\" : \"ACRadio\" , \"value\" : [ \"30 sec.\" , \"60 sec.\" , \"180 sec.\" ], \"label\" : \"Update period\" , \"arrange\" : \"vertical\" , \"checked\" : 1 }, { \"name\" : \"newline\" , \"type\" : \"ACElement\" , \"value\" : \"<hr>\" }, { \"name\" : \"hostname\" , \"type\" : \"ACInput\" , \"value\" : \"\" , \"label\" : \"ESP host name\" , \"pattern\" : \"^([a-zA-Z0-9]([a-zA-Z0-9-])*[a-zA-Z0-9]){1,32}$\" }, { \"name\" : \"save\" , \"type\" : \"ACSubmit\" , \"value\" : \"Save&amp;Start\" , \"uri\" : \"/mqtt_save\" }, { \"name\" : \"discard\" , \"type\" : \"ACSubmit\" , \"value\" : \"Discard\" , \"uri\" : \"/\" } ] }, { \"title\" : \"MQTT Setting\" , \"uri\" : \"/mqtt_save\" , \"menu\" : false , \"element\" : [ { \"name\" : \"caption\" , \"type\" : \"ACText\" , \"value\" : \"<h4>Parameters saved as:</h4>\" , \"style\" : \"text-align:center;color:#2f4f4f;padding:10px;\" }, { \"name\" : \"parameters\" , \"type\" : \"ACText\" }, { \"name\" : \"clear\" , \"type\" : \"ACSubmit\" , \"value\" : \"Clear channel\" , \"uri\" : \"/mqtt_clear\" } ] } ] Exclude the JSON and replace to the AutoConnectElements natively // In the declaration, // Declare AutoConnectElements for the page asf /mqtt_setting ACText(header, \"<h2>MQTT broker settings</h2>\" , \"text-align:center;color:#2f4f4f;padding:10px;\" ); ACText(caption, \"Publishing the WiFi signal strength to MQTT channel. RSSI value of ESP8266 to the channel created on ThingSpeak\" , \"font-family:serif;color:#4682b4;\" ); ACInput(mqttserver, \"\" , \"Server\" , \"^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9 \\\\ -]*[a-zA-Z0-9]) \\\\ .)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9 \\\\ -]*[A-Za-z0-9])$\" , \"MQTT broker server\" ); ACInput(channelid, \"\" , \"Channel ID\" , \"^[0-9]{6}$\" ); ACInput(userkey, \"\" , \"User Key\" ); ACInput(apikey, \"\" , \"API Key\" ); ACElement(newline, \"<hr>\" ); ACCheckbox(uniqueid, \"unique\" , \"Use APID unique\" ); ACRadio(period, { \"30 sec.\" , \"60 sec.\" , \"180 sec.\" }, \"Update period\" , AC_Vertical, 1 ); ACSubmit(save, \"Start\" , \"mqtt_save\" ); ACSubmit(discard, \"Discard\" , \"/\" ); // Declare the custom Web page as /mqtt_setting and contains the AutoConnectElements AutoConnectAux mqtt_setting ( \"/mqtt_setting\" , \"MQTT Setting\" , true, { header, caption, mqttserver, channelid, userkey, apikey, newline, uniqueid, period, newline, save, discard }); // Declare AutoConnectElements for the page as /mqtt_save ACText(caption2, \"<h4>Parameters available as:</h4>\" , \"text-align:center;color:#2f4f4f;padding:10px;\" ); ACText(parameters); ACSubmit(clear, \"Clear channel\" , \"/mqtt_clear\" ); // Declare the custom Web page as /mqtt_save and contains the AutoConnectElements AutoConnectAux mqtt_save ( \"/mqtt_save\" , \"MQTT Setting\" , false, { caption2, parameters, clear }); // In the setup(), // Join the custom Web pages and performs begin portal.join({ mqtt_setting, mqtt_save }); portal.begin(); Detaching the ArduinoJson library reduces the sketch size by approximately 10K bytes. \u21a9","title":"Custom Web pages w/o JSON"},{"location":"wojson.html#suppress-increase-in-memory-consumption","text":"Custom Web page processing consumes a lot of memory. AutoConnect will take a whole string of the JSON document for the custom Web pages into memory. The required buffer size for the JSON document of example sketch mqttRSSI reaches approximately 3000 bytes. And actually, it needs twice the heap area. Especially this constraint will be a problem with the ESP8266 which has a heap size poor. AutoConnect can handle custom Web pages without using JSON. In that case, since the ArduinoJson library will not be bound, the sketch size will also be reduced.","title":"Suppress increase in memory consumption"},{"location":"wojson.html#writing-the-custom-web-pages-without-json","text":"To handle the custom Web pages without using JSON, follow the steps below. Create or define AutoConnectAux for each page. Create or define AutoConnectElement(s) . Add AutoConnectElement(s) to AutoConnectAux. Create more AutoConnectAux containing AutoConnectElement(s) , if necessary. Register the request handlers for the custom Web pages. Join prepared AutoConnectAux(s) to AutoConnect. Invoke AutoConnect::begin() . In addition to the above procedure, to completely cut off for binding with the ArduinoJson library, turn off the ArduinoJson use indicator which is declared by the AutoConnect definitions . Its declaration is in AutoConnectDefs.h file. 1 // Comment out the AUTOCONNECT_USE_JSON macro to detach the ArduinoJson. #define AUTOCONNECT_USE_JSON JSON processing will be disabled Commenting out the AUTOCONNECT_USE_JSON macro invalidates all functions related to JSON processing. If the sketch is using the JSON function, it will result in a compile error.","title":"Writing the custom Web pages without JSON"},{"location":"wojson.html#implementation-example-without-arduinojson","text":"The code excluding JSON processing from the mqttRSSI sketch attached to the library is as follows. (It is a part of code. Refer to mqttRSSI_NA.ino for the whole sketch.) The JSON document for mqttRSSI [ { \"title\" : \"MQTT Setting\" , \"uri\" : \"/mqtt_setting\" , \"menu\" : true , \"element\" : [ { \"name\" : \"header\" , \"type\" : \"ACText\" , \"value\" : \"<h2>MQTT broker settings</h2>\" , \"style\" : \"text-align:center;color:#2f4f4f;padding:10px;\" }, { \"name\" : \"caption\" , \"type\" : \"ACText\" , \"value\" : \"Publishing the WiFi signal strength to MQTT channel. RSSI value of ESP8266 to the channel created on ThingSpeak\" , \"style\" : \"font-family:serif;color:#4682b4;\" }, { \"name\" : \"mqttserver\" , \"type\" : \"ACInput\" , \"value\" : \"\" , \"label\" : \"Server\" , \"pattern\" : \"^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\\\-]*[a-zA-Z0-9])\\\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\\\-]*[A-Za-z0-9])$\" , \"placeholder\" : \"MQTT broker server\" }, { \"name\" : \"channelid\" , \"type\" : \"ACInput\" , \"label\" : \"Channel ID\" , \"pattern\" : \"^[0-9]{6}$\" }, { \"name\" : \"userkey\" , \"type\" : \"ACInput\" , \"label\" : \"User Key\" }, { \"name\" : \"apikey\" , \"type\" : \"ACInput\" , \"label\" : \"API Key\" }, { \"name\" : \"newline\" , \"type\" : \"ACElement\" , \"value\" : \"<hr>\" }, { \"name\" : \"uniqueid\" , \"type\" : \"ACCheckbox\" , \"value\" : \"unique\" , \"label\" : \"Use APID unique\" , \"checked\" : false }, { \"name\" : \"period\" , \"type\" : \"ACRadio\" , \"value\" : [ \"30 sec.\" , \"60 sec.\" , \"180 sec.\" ], \"label\" : \"Update period\" , \"arrange\" : \"vertical\" , \"checked\" : 1 }, { \"name\" : \"newline\" , \"type\" : \"ACElement\" , \"value\" : \"<hr>\" }, { \"name\" : \"hostname\" , \"type\" : \"ACInput\" , \"value\" : \"\" , \"label\" : \"ESP host name\" , \"pattern\" : \"^([a-zA-Z0-9]([a-zA-Z0-9-])*[a-zA-Z0-9]){1,32}$\" }, { \"name\" : \"save\" , \"type\" : \"ACSubmit\" , \"value\" : \"Save&amp;Start\" , \"uri\" : \"/mqtt_save\" }, { \"name\" : \"discard\" , \"type\" : \"ACSubmit\" , \"value\" : \"Discard\" , \"uri\" : \"/\" } ] }, { \"title\" : \"MQTT Setting\" , \"uri\" : \"/mqtt_save\" , \"menu\" : false , \"element\" : [ { \"name\" : \"caption\" , \"type\" : \"ACText\" , \"value\" : \"<h4>Parameters saved as:</h4>\" , \"style\" : \"text-align:center;color:#2f4f4f;padding:10px;\" }, { \"name\" : \"parameters\" , \"type\" : \"ACText\" }, { \"name\" : \"clear\" , \"type\" : \"ACSubmit\" , \"value\" : \"Clear channel\" , \"uri\" : \"/mqtt_clear\" } ] } ] Exclude the JSON and replace to the AutoConnectElements natively // In the declaration, // Declare AutoConnectElements for the page asf /mqtt_setting ACText(header, \"<h2>MQTT broker settings</h2>\" , \"text-align:center;color:#2f4f4f;padding:10px;\" ); ACText(caption, \"Publishing the WiFi signal strength to MQTT channel. RSSI value of ESP8266 to the channel created on ThingSpeak\" , \"font-family:serif;color:#4682b4;\" ); ACInput(mqttserver, \"\" , \"Server\" , \"^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9 \\\\ -]*[a-zA-Z0-9]) \\\\ .)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9 \\\\ -]*[A-Za-z0-9])$\" , \"MQTT broker server\" ); ACInput(channelid, \"\" , \"Channel ID\" , \"^[0-9]{6}$\" ); ACInput(userkey, \"\" , \"User Key\" ); ACInput(apikey, \"\" , \"API Key\" ); ACElement(newline, \"<hr>\" ); ACCheckbox(uniqueid, \"unique\" , \"Use APID unique\" ); ACRadio(period, { \"30 sec.\" , \"60 sec.\" , \"180 sec.\" }, \"Update period\" , AC_Vertical, 1 ); ACSubmit(save, \"Start\" , \"mqtt_save\" ); ACSubmit(discard, \"Discard\" , \"/\" ); // Declare the custom Web page as /mqtt_setting and contains the AutoConnectElements AutoConnectAux mqtt_setting ( \"/mqtt_setting\" , \"MQTT Setting\" , true, { header, caption, mqttserver, channelid, userkey, apikey, newline, uniqueid, period, newline, save, discard }); // Declare AutoConnectElements for the page as /mqtt_save ACText(caption2, \"<h4>Parameters available as:</h4>\" , \"text-align:center;color:#2f4f4f;padding:10px;\" ); ACText(parameters); ACSubmit(clear, \"Clear channel\" , \"/mqtt_clear\" ); // Declare the custom Web page as /mqtt_save and contains the AutoConnectElements AutoConnectAux mqtt_save ( \"/mqtt_save\" , \"MQTT Setting\" , false, { caption2, parameters, clear }); // In the setup(), // Join the custom Web pages and performs begin portal.join({ mqtt_setting, mqtt_save }); portal.begin(); Detaching the ArduinoJson library reduces the sketch size by approximately 10K bytes. \u21a9","title":"Implementation example without ArduinoJson"}]}
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/sitemap.xml b/lib/AutoConnect-master/docs/sitemap.xml
deleted file mode 100644
index 9a7c2538b2344c2afd8205050f682243b74d71e4..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/sitemap.xml
+++ /dev/null
@@ -1,128 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/index.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/gettingstarted.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/menu.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/basicusage.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/advancedusage.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/acintro.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/acelements.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/acjson.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/achandling.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/api.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/apiaux.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/apiconfig.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/apielements.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/apiextra.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/howtoembed.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/datatips.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/menuize.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/wojson.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/lsbegin.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/credit.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/acupload.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/colorized.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/faq.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/changelog.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-    <url>
-     <loc>https://Hieromon.github.io/AutoConnect/license.html</loc>
-     <lastmod>2019-06-12</lastmod>
-     <changefreq>daily</changefreq>
-    </url>
-</urlset>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/docs/sitemap.xml.gz b/lib/AutoConnect-master/docs/sitemap.xml.gz
deleted file mode 100644
index f7ee090888d082e3e18f0e40ffb7063aeac2b2b8..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/docs/sitemap.xml.gz and /dev/null differ




diff --git a/lib/AutoConnect-master/docs/wojson.html b/lib/AutoConnect-master/docs/wojson.html
deleted file mode 100644
index f0ff5dbfbf8dc29153602ccbc2e45964d2cda1dc..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/docs/wojson.html
+++ /dev/null
@@ -1,219 +0,0 @@
-<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="description" content="ESP8266/ESP32 WLAN configuration at run time with web interface"><link rel="canonical" href="https://Hieromon.github.io/AutoConnect/wojson.html"><meta name="author" content="Hieromon Ikasamo"><meta name="lang:clipboard.copy" content="Copy to clipboard"><meta name="lang:clipboard.copied" content="Copied to clipboard"><meta name="lang:search.language" content="en"><meta name="lang:search.pipeline.stopwords" content="True"><meta name="lang:search.pipeline.trimmer" content="True"><meta name="lang:search.result.none" content="No matching documents"><meta name="lang:search.result.one" content="1 matching document"><meta name="lang:search.result.other" content="# matching documents"><meta name="lang:search.tokenizer" content="[\s\-]+"><link rel="shortcut icon" href="assets/images/favicon.png"><meta name="generator" content="mkdocs-1.0.4, mkdocs-material-4.3.1"><title>Custom Web pages w/o JSON - AutoConnect for ESP8266/ESP32</title><link rel="stylesheet" href="assets/stylesheets/application.4031d38b.css"><link rel="stylesheet" href="assets/stylesheets/application-palette.224b79ff.css"><meta name="theme-color" content="#3f51b5"><script src="assets/javascripts/modernizr.74668098.js"></script><link href="https://fonts.gstatic.com" rel="preconnect" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,400i,700|Roboto+Mono&display=swap"><style>body,input{font-family:"Roboto","Helvetica Neue",Helvetica,Arial,sans-serif}code,kbd,pre{font-family:"Roboto Mono","Courier New",Courier,monospace}</style><link rel="stylesheet" href="assets/fonts/material-icons.css"><link rel="stylesheet" href="css/paragraph.css"><link rel="stylesheet" href="css/extra.css"><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css"><script>window.ga = window.ga || function() {
-    (ga.q = ga.q || []).push(arguments)
-  }
-  ga.l = +new Date
-  /* Setup integration and send page view */
-  ga("create", "UA-116150854-1", "auto")
-  ga("set", "anonymizeIp", true)
-  ga("send", "pageview")
-  /* Register handler to log search on blur */
-  document.addEventListener("DOMContentLoaded", () => {
-    if (document.forms.search) {
-      var query = document.forms.search.query
-      query.addEventListener("blur", function() {
-        if (this.value) {
-          var path = document.location.pathname;
-          ga("send", "pageview", path + "?q=" + this.value)
-        }
-      })
-    }
-  })</script><script async src="https://www.google-analytics.com/analytics.js"></script></head><body dir="ltr" data-md-color-primary="indigo" data-md-color-accent="indigo"><svg class="md-svg"><defs><svg xmlns="http://www.w3.org/2000/svg" width="416" height="448" viewBox="0 0 416 448" id="__github"><path fill="currentColor" d="M160 304q0 10-3.125 20.5t-10.75 19T128 352t-18.125-8.5-10.75-19T96 304t3.125-20.5 10.75-19T128 256t18.125 8.5 10.75 19T160 304zm160 0q0 10-3.125 20.5t-10.75 19T288 352t-18.125-8.5-10.75-19T256 304t3.125-20.5 10.75-19T288 256t18.125 8.5 10.75 19T320 304zm40 0q0-30-17.25-51T296 232q-10.25 0-48.75 5.25Q229.5 240 208 240t-39.25-2.75Q130.75 232 120 232q-29.5 0-46.75 21T56 304q0 22 8 38.375t20.25 25.75 30.5 15 35 7.375 37.25 1.75h42q20.5 0 37.25-1.75t35-7.375 30.5-15 20.25-25.75T360 304zm56-44q0 51.75-15.25 82.75-9.5 19.25-26.375 33.25t-35.25 21.5-42.5 11.875-42.875 5.5T212 416q-19.5 0-35.5-.75t-36.875-3.125-38.125-7.5-34.25-12.875T37 371.5t-21.5-28.75Q0 312 0 260q0-59.25 34-99-6.75-20.5-6.75-42.5 0-29 12.75-54.5 27 0 47.5 9.875t47.25 30.875Q171.5 96 212 96q37 0 70 8 26.25-20.5 46.75-30.25T376 64q12.75 25.5 12.75 54.5 0 21.75-6.75 42 34 40 34 99.5z"/></svg></defs></svg> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" data-md-component="overlay" for="__drawer"></label><a href="#suppress-increase-in-memory-consumption" tabindex="1" class="md-skip">Skip to content </a><header class="md-header" data-md-component="header"><nav class="md-header-nav md-grid"><div class="md-flex"><div class="md-flex__cell md-flex__cell--shrink"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-header-nav__button md-logo"><img src="images/arduino-logo.svg" width="24" height="24"></a></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--menu md-header-nav__button" for="__drawer"></label></div><div class="md-flex__cell md-flex__cell--stretch"><div class="md-flex__ellipsis md-header-nav__title" data-md-component="title"><span class="md-header-nav__topic">AutoConnect for ESP8266/ESP32</span><span class="md-header-nav__topic">Custom Web pages w/o JSON</span></div></div><div class="md-flex__cell md-flex__cell--shrink"><label class="md-icon md-icon--search md-header-nav__button" for="__search"></label><div class="md-search" data-md-component="search" role="dialog"><label class="md-search__overlay" for="__search"></label><div class="md-search__inner" role="search"><form class="md-search__form" name="search"><input type="text" class="md-search__input" name="query" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="query" data-md-state="active"> <label class="md-icon md-search__icon" for="__search"></label> <button type="reset" class="md-icon md-search__icon" data-md-component="reset" tabindex="-1">&#xE5CD;</button></form><div class="md-search__output"><div class="md-search__scrollwrap" data-md-scrollfix><div class="md-search-result" data-md-component="result"><div class="md-search-result__meta">Type to start searching</div><ol class="md-search-result__list"></ol></div></div></div></div></div></div><div class="md-flex__cell md-flex__cell--shrink"><div class="md-header-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div></div></div></nav></header><div class="md-container"><main class="md-main"><div class="md-main__inner md-grid" data-md-component="container"><div class="md-sidebar md-sidebar--primary" data-md-component="navigation"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--primary" data-md-level="0"><label class="md-nav__title md-nav__title--site" for="__drawer"><a href="https://Hieromon.github.io/AutoConnect/" title="AutoConnect for ESP8266/ESP32" class="md-nav__button md-logo"><img src="images/arduino-logo.svg" width="48" height="48"></a>AutoConnect for ESP8266/ESP32</label><div class="md-nav__source"><a href="https://github.com/Hieromon/AutoConnect" title="Go to repository" class="md-source" data-md-source="github"><div class="md-source__icon"><svg viewBox="0 0 24 24" width="24" height="24"><use xlink:href="#__github" width="24" height="24"></use></svg></div><div class="md-source__repository">Hieromon/AutoConnect</div></a></div><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="index.html" title="Overview" class="md-nav__link">Overview</a></li><li class="md-nav__item"><a href="gettingstarted.html" title="Getting started" class="md-nav__link">Getting started</a></li><li class="md-nav__item"><a href="menu.html" title="AutoConnect menu" class="md-nav__link">AutoConnect menu</a></li><li class="md-nav__item"><a href="basicusage.html" title="Basic usage" class="md-nav__link">Basic usage</a></li><li class="md-nav__item"><a href="advancedusage.html" title="Advanced usage" class="md-nav__link">Advanced usage</a></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-6" type="checkbox" id="nav-6"><label class="md-nav__link" for="nav-6">Custom Web pages</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-6">Custom Web pages</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="acintro.html" title="Custom Web pages with AutoConnect" class="md-nav__link">Custom Web pages with AutoConnect</a></li><li class="md-nav__item"><a href="acelements.html" title="AutoConnectElements" class="md-nav__link">AutoConnectElements</a></li><li class="md-nav__item"><a href="acjson.html" title="Custom Web pages with JSON" class="md-nav__link">Custom Web pages with JSON</a></li><li class="md-nav__item"><a href="achandling.html" title="Handling the custom Web pages" class="md-nav__link">Handling the custom Web pages</a></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-7" type="checkbox" id="nav-7"><label class="md-nav__link" for="nav-7">Library APIs</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-7">Library APIs</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="api.html" title="AutoConnect API" class="md-nav__link">AutoConnect API</a></li><li class="md-nav__item"><a href="apiaux.html" title="AutoConnectAux API" class="md-nav__link">AutoConnectAux API</a></li><li class="md-nav__item"><a href="apiconfig.html" title="AutoConnectConfig API" class="md-nav__link">AutoConnectConfig API</a></li><li class="md-nav__item"><a href="apielements.html" title="AutoConnectElements API" class="md-nav__link">AutoConnectElements API</a></li><li class="md-nav__item"><a href="apiextra.html" title="Something extra" class="md-nav__link">Something extra</a></li></ul></nav></li><li class="md-nav__item md-nav__item--active md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-8" type="checkbox" id="nav-8" checked><label class="md-nav__link" for="nav-8">Examples</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-8">Examples</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="howtoembed.html" title="How to embed" class="md-nav__link">How to embed</a></li><li class="md-nav__item"><a href="datatips.html" title="Tips for data conversion" class="md-nav__link">Tips for data conversion</a></li><li class="md-nav__item"><a href="menuize.html" title="Attach the menu" class="md-nav__link">Attach the menu</a></li><li class="md-nav__item md-nav__item--active"><input class="md-toggle md-nav__toggle" data-md-toggle="toc" type="checkbox" id="__toc"><label class="md-nav__link md-nav__link--active" for="__toc">Custom Web pages w/o JSON</label><a href="wojson.html" title="Custom Web pages w/o JSON" class="md-nav__link md-nav__link--active">Custom Web pages w/o JSON</a><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#suppress-increase-in-memory-consumption" title="Suppress increase in memory consumption" class="md-nav__link">Suppress increase in memory consumption</a></li><li class="md-nav__item"><a href="#writing-the-custom-web-pages-without-json" title="Writing the custom Web pages without JSON" class="md-nav__link">Writing the custom Web pages without JSON</a></li><li class="md-nav__item"><a href="#implementation-example-without-arduinojson" title="Implementation example without ArduinoJson" class="md-nav__link">Implementation example without ArduinoJson</a></li></ul></nav></li></ul></nav></li><li class="md-nav__item md-nav__item--nested"><input class="md-toggle md-nav__toggle" data-md-toggle="nav-9" type="checkbox" id="nav-9"><label class="md-nav__link" for="nav-9">Appendix</label><nav class="md-nav" data-md-component="collapsible" data-md-level="1"><label class="md-nav__title" for="nav-9">Appendix</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-nav__link">Inside AutoConnect::begin</a></li><li class="md-nav__item"><a href="credit.html" title="Saved credentail access" class="md-nav__link">Saved credentail access</a></li><li class="md-nav__item"><a href="acupload.html" title="File upload handler" class="md-nav__link">File upload handler</a></li><li class="md-nav__item"><a href="colorized.html" title="Custom colorized" class="md-nav__link">Custom colorized</a></li></ul></nav></li><li class="md-nav__item"><a href="faq.html" title="FAQ" class="md-nav__link">FAQ</a></li><li class="md-nav__item"><a href="changelog.html" title="Change log" class="md-nav__link">Change log</a></li><li class="md-nav__item"><a href="license.html" title="License" class="md-nav__link">License</a></li></ul></nav></div></div></div><div class="md-sidebar md-sidebar--secondary" data-md-component="toc"><div class="md-sidebar__scrollwrap"><div class="md-sidebar__inner"><nav class="md-nav md-nav--secondary"><label class="md-nav__title" for="__toc">Table of contents</label><ul class="md-nav__list" data-md-scrollfix><li class="md-nav__item"><a href="#suppress-increase-in-memory-consumption" title="Suppress increase in memory consumption" class="md-nav__link">Suppress increase in memory consumption</a></li><li class="md-nav__item"><a href="#writing-the-custom-web-pages-without-json" title="Writing the custom Web pages without JSON" class="md-nav__link">Writing the custom Web pages without JSON</a></li><li class="md-nav__item"><a href="#implementation-example-without-arduinojson" title="Implementation example without ArduinoJson" class="md-nav__link">Implementation example without ArduinoJson</a></li></ul></nav></div></div></div><div class="md-content"><article class="md-content__inner md-typeset"><h1>Custom Web pages w/o JSON</h1><h2 id="suppress-increase-in-memory-consumption">Suppress increase in memory consumption<a class="headerlink" href="#suppress-increase-in-memory-consumption" title="Permanent link">&para;</a></h2>
-<p>Custom Web page processing consumes a lot of memory. AutoConnect will take a whole string of the JSON document for the custom Web pages into memory. The required buffer size for the JSON document of example sketch <em>mqttRSSI</em> reaches approximately 3000 bytes. And actually, it needs twice the heap area. Especially this constraint will be a problem with the ESP8266 which has a heap size poor.</p>
-<p>AutoConnect can handle custom Web pages without using JSON. In that case, since the ArduinoJson library will not be bound, the sketch size will also be reduced.</p>
-<h2 id="writing-the-custom-web-pages-without-json">Writing the custom Web pages without JSON<a class="headerlink" href="#writing-the-custom-web-pages-without-json" title="Permanent link">&para;</a></h2>
-<p>To handle the custom Web pages without using JSON, follow the steps below.</p>
-<ol>
-<li>Create or define <a href="apiaux.html">AutoConnectAux</a> for each page.</li>
-<li>Create or define <a href="acelements.html">AutoConnectElement(s)</a>.</li>
-<li>Add <a href="acelements.html">AutoConnectElement(s)</a> to AutoConnectAux.</li>
-<li>Create more AutoConnectAux containing <a href="acelements.html">AutoConnectElement(s)</a>, if necessary.</li>
-<li>Register the request handlers for the custom Web pages.</li>
-<li><a href="api.html#join">Join</a> prepared AutoConnectAux(s) to AutoConnect.</li>
-<li>Invoke <a href="api.html#begin">AutoConnect::begin()</a>.</li>
-</ol>
-<p>In addition to the above procedure, to completely cut off for binding with the ArduinoJson library, turn off the ArduinoJson use indicator which is declared by the <a href="api.html#defined-macros">AutoConnect definitions</a>. Its declaration is in <strong>AutoConnectDefs.h</strong> file.<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup></p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">// Comment out the AUTOCONNECT_USE_JSON macro to detach the ArduinoJson.</span>
-<span style="color: #75715e">#define AUTOCONNECT_USE_JSON</span>
-</pre></div>
-
-<div class="admonition caution">
-<p class="admonition-title">JSON processing will be disabled</p>
-<p>Commenting out the <strong>AUTOCONNECT_USE_JSON</strong> macro invalidates all functions related to JSON processing. If the sketch is using the JSON function, it will result in a compile error.</p>
-</div>
-<h2 id="implementation-example-without-arduinojson">Implementation example without ArduinoJson<a class="headerlink" href="#implementation-example-without-arduinojson" title="Permanent link">&para;</a></h2>
-<p>The code excluding JSON processing from the mqttRSSI sketch attached to the library is as follows. <small>(It is a part of code. Refer to mqttRSSI_NA.ino for the whole sketch.)</small></p>
-<p><i class="fa fa-code"></i> The JSON document for mqttRSSI</p>
-<p><div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #f8f8f2">[</span>
-  <span style="color: #f8f8f2">{</span>
-    <span style="color: #f92672">&quot;title&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;MQTT Setting&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;uri&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;/mqtt_setting&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;menu&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #66d9ef">true</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;element&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #f8f8f2">[</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;header&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACText&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;&lt;h2&gt;MQTT broker settings&lt;/h2&gt;&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;style&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;text-align:center;color:#2f4f4f;padding:10px;&quot;</span>
-      <span style="color: #f8f8f2">},</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;caption&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACText&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Publishing the WiFi signal strength to MQTT channel. RSSI value of ESP8266 to the channel created on ThingSpeak&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;style&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;font-family:serif;color:#4682b4;&quot;</span>
-      <span style="color: #f8f8f2">},</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;mqttserver&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACInput&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;label&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Server&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;pattern&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;placeholder&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;MQTT broker server&quot;</span>
-      <span style="color: #f8f8f2">},</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;channelid&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACInput&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;label&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Channel ID&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;pattern&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;^[0-9]{6}$&quot;</span>
-      <span style="color: #f8f8f2">},</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;userkey&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACInput&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;label&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;User Key&quot;</span>
-      <span style="color: #f8f8f2">},</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;apikey&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACInput&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;label&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;API Key&quot;</span>
-      <span style="color: #f8f8f2">},</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;newline&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACElement&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;&lt;hr&gt;&quot;</span>
-      <span style="color: #f8f8f2">},</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;uniqueid&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACCheckbox&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;unique&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;label&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Use APID unique&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;checked&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #66d9ef">false</span>
-      <span style="color: #f8f8f2">},</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;period&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACRadio&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #f8f8f2">[</span>
-          <span style="color: #e6db74">&quot;30 sec.&quot;</span><span style="color: #f8f8f2">,</span>
-          <span style="color: #e6db74">&quot;60 sec.&quot;</span><span style="color: #f8f8f2">,</span>
-          <span style="color: #e6db74">&quot;180 sec.&quot;</span>
-        <span style="color: #f8f8f2">],</span>
-        <span style="color: #f92672">&quot;label&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Update period&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;arrange&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;vertical&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;checked&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #ae81ff">1</span>
-      <span style="color: #f8f8f2">},</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;newline&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACElement&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;&lt;hr&gt;&quot;</span>
-      <span style="color: #f8f8f2">},</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;hostname&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACInput&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;label&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ESP host name&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;pattern&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;^([a-zA-Z0-9]([a-zA-Z0-9-])*[a-zA-Z0-9]){1,32}$&quot;</span>
-      <span style="color: #f8f8f2">},</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;save&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACSubmit&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Save&amp;amp;Start&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;uri&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;/mqtt_save&quot;</span>
-      <span style="color: #f8f8f2">},</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;discard&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACSubmit&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Discard&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;uri&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;/&quot;</span>
-      <span style="color: #f8f8f2">}</span>
-    <span style="color: #f8f8f2">]</span>
-  <span style="color: #f8f8f2">},</span>
-  <span style="color: #f8f8f2">{</span>
-    <span style="color: #f92672">&quot;title&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;MQTT Setting&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;uri&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;/mqtt_save&quot;</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;menu&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #66d9ef">false</span><span style="color: #f8f8f2">,</span>
-    <span style="color: #f92672">&quot;element&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #f8f8f2">[</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;caption&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACText&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;&lt;h4&gt;Parameters saved as:&lt;/h4&gt;&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;style&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;text-align:center;color:#2f4f4f;padding:10px;&quot;</span>
-      <span style="color: #f8f8f2">},</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;parameters&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACText&quot;</span>
-      <span style="color: #f8f8f2">},</span>
-      <span style="color: #f8f8f2">{</span>
-        <span style="color: #f92672">&quot;name&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;clear&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;type&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;ACSubmit&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;value&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;Clear channel&quot;</span><span style="color: #f8f8f2">,</span>
-        <span style="color: #f92672">&quot;uri&quot;</span><span style="color: #f8f8f2">:</span> <span style="color: #e6db74">&quot;/mqtt_clear&quot;</span>
-      <span style="color: #f8f8f2">}</span>
-    <span style="color: #f8f8f2">]</span>
-  <span style="color: #f8f8f2">}</span>
-<span style="color: #f8f8f2">]</span>
-</pre></div>
-<span style="margin-right:6px;margin-top:2px;"><img align="middle" width="32" height="32" src="images/arrow_down.png"></span><i class="fa fa-code"></i> Exclude the JSON and replace to the AutoConnectElements natively</p>
-<div class="codehilite" style="background: #272822"><pre style="line-height: 125%"><span></span><span style="color: #75715e">// In the declaration,</span>
-<span style="color: #75715e">// Declare AutoConnectElements for the page asf /mqtt_setting</span>
-<span style="color: #f8f8f2">ACText(header,</span> <span style="color: #e6db74">&quot;&lt;h2&gt;MQTT broker settings&lt;/h2&gt;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;text-align:center;color:#2f4f4f;padding:10px;&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">ACText(caption,</span> <span style="color: #e6db74">&quot;Publishing the WiFi signal strength to MQTT channel. RSSI value of ESP8266 to the channel created on ThingSpeak&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;font-family:serif;color:#4682b4;&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">ACInput(mqttserver,</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;Server&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9</span><span style="color: #ae81ff">\\</span><span style="color: #e6db74">-]*[a-zA-Z0-9])</span><span style="color: #ae81ff">\\</span><span style="color: #e6db74">.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9</span><span style="color: #ae81ff">\\</span><span style="color: #e6db74">-]*[A-Za-z0-9])$&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;MQTT broker server&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">ACInput(channelid,</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;Channel ID&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;^[0-9]{6}$&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">ACInput(userkey,</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;User Key&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">ACInput(apikey,</span> <span style="color: #e6db74">&quot;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;API Key&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">ACElement(newline,</span> <span style="color: #e6db74">&quot;&lt;hr&gt;&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">ACCheckbox(uniqueid,</span> <span style="color: #e6db74">&quot;unique&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;Use APID unique&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">ACRadio(period,</span> <span style="color: #f8f8f2">{</span> <span style="color: #e6db74">&quot;30 sec.&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;60 sec.&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;180 sec.&quot;</span> <span style="color: #f8f8f2">},</span> <span style="color: #e6db74">&quot;Update period&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">AC_Vertical,</span> <span style="color: #ae81ff">1</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">ACSubmit(save,</span> <span style="color: #e6db74">&quot;Start&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;mqtt_save&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">ACSubmit(discard,</span> <span style="color: #e6db74">&quot;Discard&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;/&quot;</span><span style="color: #f8f8f2">);</span>
-
-<span style="color: #75715e">// Declare the custom Web page as /mqtt_setting and contains the AutoConnectElements</span>
-<span style="color: #f8f8f2">AutoConnectAux</span> <span style="color: #a6e22e">mqtt_setting</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;/mqtt_setting&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;MQTT Setting&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">true,</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">header,</span>
-  <span style="color: #f8f8f2">caption,</span>
-  <span style="color: #f8f8f2">mqttserver,</span>
-  <span style="color: #f8f8f2">channelid,</span>
-  <span style="color: #f8f8f2">userkey,</span>
-  <span style="color: #f8f8f2">apikey,</span>
-  <span style="color: #f8f8f2">newline,</span>
-  <span style="color: #f8f8f2">uniqueid,</span>
-  <span style="color: #f8f8f2">period,</span>
-  <span style="color: #f8f8f2">newline,</span>
-  <span style="color: #f8f8f2">save,</span>
-  <span style="color: #f8f8f2">discard</span>
-<span style="color: #f8f8f2">});</span>
-
-<span style="color: #75715e">// Declare AutoConnectElements for the page as /mqtt_save</span>
-<span style="color: #f8f8f2">ACText(caption2,</span> <span style="color: #e6db74">&quot;&lt;h4&gt;Parameters available as:&lt;/h4&gt;&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;text-align:center;color:#2f4f4f;padding:10px;&quot;</span><span style="color: #f8f8f2">);</span>
-<span style="color: #f8f8f2">ACText(parameters);</span>
-<span style="color: #f8f8f2">ACSubmit(clear,</span> <span style="color: #e6db74">&quot;Clear channel&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;/mqtt_clear&quot;</span><span style="color: #f8f8f2">);</span>
-
-<span style="color: #75715e">// Declare the custom Web page as /mqtt_save and contains the AutoConnectElements</span>
-<span style="color: #f8f8f2">AutoConnectAux</span> <span style="color: #a6e22e">mqtt_save</span><span style="color: #f8f8f2">(</span><span style="color: #e6db74">&quot;/mqtt_save&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #e6db74">&quot;MQTT Setting&quot;</span><span style="color: #f8f8f2">,</span> <span style="color: #f8f8f2">false,</span> <span style="color: #f8f8f2">{</span>
-  <span style="color: #f8f8f2">caption2,</span>
-  <span style="color: #f8f8f2">parameters,</span>
-  <span style="color: #f8f8f2">clear</span>
-<span style="color: #f8f8f2">});</span>
-
-<span style="color: #75715e">// In the setup(),</span>
-<span style="color: #75715e">// Join the custom Web pages and performs begin</span>
-  <span style="color: #f8f8f2">portal.join({</span> <span style="color: #f8f8f2">mqtt_setting,</span> <span style="color: #f8f8f2">mqtt_save</span> <span style="color: #f8f8f2">});</span>
-  <span style="color: #f8f8f2">portal.begin();</span>
-</pre></div>
-
-<div class="footnote">
-<hr />
-<ol>
-<li id="fn:1">
-<p>Detaching the ArduinoJson library reduces the sketch size by approximately 10K bytes.&#160;<a class="footnote-backref" href="#fnref:1" rev="footnote" title="Jump back to footnote 1 in the text">&#8617;</a></p>
-</li>
-</ol>
-</div></article></div></div></main><footer class="md-footer"><div class="md-footer-nav"><nav class="md-footer-nav__inner md-grid"><a href="menuize.html" title="Attach the menu" class="md-flex md-footer-nav__link md-footer-nav__link--prev" rel="prev"><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-back md-footer-nav__button"></i></div><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Previous</span>Attach the menu</span></div></a><a href="lsbegin.html" title="Inside AutoConnect::begin" class="md-flex md-footer-nav__link md-footer-nav__link--next" rel="next"><div class="md-flex__cell md-flex__cell--stretch md-footer-nav__title"><span class="md-flex__ellipsis"><span class="md-footer-nav__direction">Next</span>Inside AutoConnect::begin</span></div><div class="md-flex__cell md-flex__cell--shrink"><i class="md-icon md-icon--arrow-forward md-footer-nav__button"></i></div></a></nav></div><div class="md-footer-meta md-typeset"><div class="md-footer-meta__inner md-grid"><div class="md-footer-copyright"><div class="md-footer-copyright__highlight">Copyright &copy; 2018-2019 Hieromon Ikasamo</div>powered by <a href="https://www.mkdocs.org">MkDocs</a> and <a href="https://squidfunk.github.io/mkdocs-material/">Material for MkDocs</a></div><div class="md-footer-social"><link rel="stylesheet" href="assets/fonts/font-awesome.css"> <a href="https://github.com/Hieromon" class="md-footer-social__link fa fa-github"></a>  <a href="https://twitter.com/hieromon" class="md-footer-social__link fa fa-twitter"></a> </div></div></div></footer></div><script src="assets/javascripts/application.b260a35d.js"></script><script>app.initialize({version:"1.0.4",url:{base:"."}})</script><script src="js/gifffer.min.js"></script></body></html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/examples/Credential/Credential.ino b/lib/AutoConnect-master/examples/Credential/Credential.ino
deleted file mode 100644
index f187ab8020cdf6f9f98f1ca15e7254b55c3cf8c8..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/examples/Credential/Credential.ino
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
-  Credential.ino, AutoConnect for ESP8266.
-  https://github.com/Hieromon/AutoConnect
-  Copyright 2018, Hieromon Ikasamo.
-  Licensed under The MIT License.
-  https://opensource.org/licenses/MIT
-
-  An example sketch for an Arduino library for ESP8266 WLAN configuration
-  via the Web interface. This sketch provides a conservation measures
-  utility for saved credentials in EEPROM.
-  By accessing the root path, you can see the list of currently saved
-  credentials via the browser. Enter an entry number of the credential,
-  that entry will be deleted from EEPROM.
-  This sketch uses PageBuilder to support handling of operation pages.
-*/
-
-#if defined(ARDUINO_ARCH_ESP8266)
-#include <ESP8266WiFi.h>
-#include <ESP8266WebServer.h>
-#elif defined(ARDUINO_ARCH_ESP32)
-#include <WiFi.h>
-#include <WebServer.h>
-#endif
-#include <AutoConnect.h>
-#include <AutoConnectCredential.h>
-#include <PageBuilder.h>
-
-#if defined(ARDUINO_ARCH_ESP8266)
-ESP8266WebServer Server;
-#elif defined(ARDUINO_ARCH_ESP32)
-WebServer Server;
-#endif
-
-AutoConnect      Portal(Server);
-String viewCredential(PageArgument&);
-String delCredential(PageArgument&);
-
-// Specified the offset if the user data exists.
-// The following two lines define the boundalyOffset value to be supplied to
-// AutoConnectConfig respectively. It may be necessary to adjust the value
-// accordingly to the actual situation.
-
-#define CREDENTIAL_OFFSET 0
-//#define CREDENTIAL_OFFSET 64
-
-/**
- *  An HTML for the operation page.
- *  In PageBuilder, the token {{SSID}} contained in an HTML template below is
- *  replaced by the actual SSID due to the action of the token handler's
- * 'viewCredential' function.
- *  The number of the entry to be deleted is passed to the function in the
- *  POST method.
- */
-static const char PROGMEM html[] = R"*lit(
-<!DOCTYPE html>
-<html>
-<head>
-  <meta charset="UTF-8" name="viewport" content="width=device-width, initial-scale=1">
-  <style>
-  html {
-  font-family:Helvetica,Arial,sans-serif;
-  -ms-text-size-adjust:100%;
-  -webkit-text-size-adjust:100%;
-  }
-  .menu > a:link {
-    position: absolute;
-    display: inline-block;
-    right: 12px;
-    padding: 0 6px;
-    text-decoration: none;
-  }
-  </style>
-</head>
-<body>
-<div class="menu">{{AUTOCONNECT_MENU}}</div>
-<form action="/del" method="POST">
-  <ol>
-  {{SSID}}
-  </ol>
-  <p>Enter deleting entry:</p>
-  <input type="number" min="1" name="num">
-  <input type="submit">
-</form>
-</body>
-</html>
-)*lit";
-
-static const char PROGMEM autoconnectMenu[] = { AUTOCONNECT_LINK(BAR_24) };
-
-// URL path as '/'
-PageElement elmList(html,
-  {{ "SSID", viewCredential },
-   { "AUTOCONNECT_MENU", [](PageArgument& args) {
-                            return String(FPSTR(autoconnectMenu));} }
-  });
-PageBuilder rootPage("/", { elmList });
-
-// URL path as '/del'
-PageElement elmDel("{{DEL}}", {{ "DEL", delCredential }});
-PageBuilder delPage("/del", { elmDel });
-
-// Retrieve the credential entries from EEPROM, Build the SSID line
-// with the <li> tag.
-String viewCredential(PageArgument& args) {
-  AutoConnectCredential  ac(CREDENTIAL_OFFSET);
-  struct station_config  entry;
-  String content = "";
-  uint8_t  count = ac.entries();          // Get number of entries.
-
-  for (int8_t i = 0; i < count; i++) {    // Loads all entries.
-    ac.load(i, &entry);
-    // Build a SSID line of an HTML.
-    content += String("<li>") + String((char *)entry.ssid) + String("</li>");
-  }
-
-  // Returns the '<li>SSID</li>' container.
-  return content;
-}
-
-// Delete a credential entry, the entry to be deleted is passed in the
-// request parameter 'num'.
-String delCredential(PageArgument& args) {
-  AutoConnectCredential  ac(CREDENTIAL_OFFSET);
-  if (args.hasArg("num")) {
-    int8_t  e = args.arg("num").toInt();
-    if (e > 0) {
-      struct  station_config entry;
-
-      // If the input number is valid, delete that entry.
-      int8_t  de = ac.load(e - 1, &entry);  // A base of entry num is 0.
-      if (de > 0) {
-        ac.del((char *)entry.ssid);
-
-        // Returns the redirect response. The page is reloaded and its contents
-        // are updated to the state after deletion. It returns 302 response
-        // from inside this token handler.
-        Server.sendHeader("Location", String("http://") + Server.client().localIP().toString() + String("/"));
-        Server.send(302, "text/plain", "");
-        Server.client().flush();
-        Server.client().stop();
-
-        // Cancel automatic submission by PageBuilder.
-        delPage.cancel();
-      }
-    }
-  }
-  return "";
-}
-
-void setup() {
-  delay(1000);
-  Serial.begin(115200);
-  Serial.println();
-
-  rootPage.insert(Server);    // Instead of Server.on("/", ...);
-  delPage.insert(Server);     // Instead of Server.on("/del", ...);
-
-  // Set an address of the credential area.
-  AutoConnectConfig Config;
-  Config.boundaryOffset = CREDENTIAL_OFFSET;
-  Portal.config(Config);
-
-  // Start
-  if (Portal.begin()) {
-    Serial.println("WiFi connected: " + WiFi.localIP().toString());
-  }
-}
-
-void loop() {
-    Portal.handleClient();
-}




diff --git a/lib/AutoConnect-master/examples/Elements/Elements.ino b/lib/AutoConnect-master/examples/Elements/Elements.ino
deleted file mode 100644
index 1aeea491223d0e35091ace21eb083219b1de55ea..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/examples/Elements/Elements.ino
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
-  Elements.ino, Example for the AutoConnect library.
-  Copyright (c) 2019, Hieromon Ikasamo
-  https://github.com/Hieromon/AutoConnect
-  This software is released under the MIT License.
-  https://opensource.org/licenses/MIT
-
-  This example demonstrates the typical behavior of AutoConnectElement.
-  It also represents a basic structural frame for saving and reusing
-  values ​​entered in a custom web page into flash.
-*/
-
-#if defined(ARDUINO_ARCH_ESP8266)
-#include <ESP8266WiFi.h>
-#include <ESP8266WebServer.h>
-using WebServerClass = ESP8266WebServer;
-#elif defined(ARDUINO_ARCH_ESP32)
-#include <WiFi.h>
-#include <WebServer.h>
-#include <SPIFFS.h>
-using WebServerClass = WebServer;
-#endif
-#include <FS.h>
-#include <AutoConnect.h>
-
-#define PARAM_FILE      "/elements.json"
-
-static const char PAGE_ELEMENTS[] PROGMEM = R"(
-{
-  "uri": "/elements",
-  "title": "Elements",
-  "menu": true,
-  "element": [
-    {
-      "name": "text",
-      "type": "ACText",
-      "value": "AutoConnect element behaviors collection",
-      "style": "font-family:Arial;font-size:18px;font-weight:400;color:#191970"
-    },
-    {
-      "name": "check",
-      "type": "ACCheckbox",
-      "value": "check",
-      "label": "Check",
-      "checked": true
-    },
-    {
-      "name": "input",
-      "type": "ACInput",
-      "label": "Text input",
-      "placeholder": "This area accepts hostname patterns",
-      "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$"
-    },
-    {
-      "name": "radio",
-      "type": "ACRadio",
-      "value": [
-        "Button-1",
-        "Button-2",
-        "Butotn-3"
-      ],
-      "label": "Radio buttons",
-      "arrange": "vertical",
-      "checked": 1
-    },
-    {
-      "name": "select",
-      "type": "ACSelect",
-      "option": [
-        "Option-1",
-        "Option-2",
-        "Option-3"
-      ],
-      "label": "Select",
-      "selected": 2
-    },
-    {
-      "name": "element",
-      "type": "ACElement",
-      "value": "<br>"
-    },
-    {
-      "name": "load",
-      "type": "ACSubmit",
-      "value": "Load",
-      "uri": "/elements"
-    },
-    {
-      "name": "save",
-      "type": "ACSubmit",
-      "value": "Save",
-      "uri": "/save"
-    },
-    {
-      "name": "adjust_width",
-      "type": "ACElement",
-      "value": "<script type=\"text/javascript\">window.onload=function(){var t=document.querySelectorAll(\"input[type='text']\");for(i=0;i<t.length;i++){var e=t[i].getAttribute(\"placeholder\");e&&t[i].setAttribute(\"size\",e.length*.8)}};</script>"
-    }
-  ]
-}
-)";
-
-static const char PAGE_SAVE[] PROGMEM = R"(
-{
-  "uri": "/save",
-  "title": "Elements",
-  "menu": false,
-  "element": [
-    {
-      "name": "caption",
-      "type": "ACText",
-      "format": "Elements have been saved to %s",
-      "style": "font-family:Arial;font-size:18px;font-weight:400;color:#191970"
-    },
-    {
-      "name": "validated",
-      "type": "ACText",
-      "style": "color:red"
-    },
-    {
-      "name": "echo",
-      "type": "ACText",
-      "style": "font-family:monospace;font-size:small;white-space:pre;"
-    },
-    {
-      "name": "ok",
-      "type": "ACSubmit",
-      "value": "OK",
-      "uri": "/elements"
-    }
-  ]
-}
-)";
-
-WebServerClass  server;
-AutoConnect portal(server);
-AutoConnectAux  elementsAux;
-AutoConnectAux  saveAux;
-
-void setup() {
-  delay(1000);
-  Serial.begin(115200);
-  Serial.println();
-
-  // Responder of root page handled directly from WebServer class.
-  server.on("/", []() {
-    String content = "Place the root page with the sketch application.&ensp;";
-    content += AUTOCONNECT_LINK(COG_24);
-    server.send(200, "text/html", content);
-  });
-
-  // Load a custom web page described in JSON as PAGE_ELEMENT and
-  // register a handler. This handler will be invoked from
-  // AutoConnectSubmit named the Load defined on the same page.
-  elementsAux.load(FPSTR(PAGE_ELEMENTS));
-  elementsAux.on([] (AutoConnectAux& aux, PageArgument& arg) {
-    if (portal.where() == "/elements") {
-      // Use the AutoConnect::where function to identify the referer.
-      // Since this handler only supports AutoConnectSubmit called the
-      // Load, it uses the uri of the custom web page placed to
-      // determine whether the Load was called me or not.
-      SPIFFS.begin();
-      File param = SPIFFS.open(PARAM_FILE, "r");
-      if (param) {
-        aux.loadElement(param, { "text", "check", "input", "radio", "select" } );
-        param.close();
-      }
-      SPIFFS.end();
-    }
-    return String();
-  });
-
-  saveAux.load(FPSTR(PAGE_SAVE));
-  saveAux.on([] (AutoConnectAux& aux, PageArgument& arg) {
-    // You can validate input values ​​before saving with
-    // AutoConnectInput::isValid function.
-    // Verification is using performed regular expression set in the
-    // pattern attribute in advance.
-    AutoConnectInput& input = elementsAux["input"].as<AutoConnectInput>();
-    aux["validated"].value = input.isValid() ? String() : String("Input data pattern missmatched.");
-
-    // The following line sets only the value, but it is HTMLified as
-    // formatted text using the format attribute.
-    aux["caption"].value = PARAM_FILE;
-
-    SPIFFS.begin();
-    File param = SPIFFS.open(PARAM_FILE, "w");
-    if (param) {
-      // Save as a loadable set for parameters.
-      elementsAux.saveElement(param, { "text", "check", "input", "radio", "select" });
-      param.close();
-      // Read the saved elements again to display.
-      param = SPIFFS.open(PARAM_FILE, "r");
-      aux["echo"].value = param.readString();
-      param.close();
-    }
-    else {
-      aux["echo"].value = "SPIFFS failed to open.";
-    }
-    SPIFFS.end();
-    return String();
-  });
-
-  portal.join({ elementsAux, saveAux });
-  portal.begin();
-}
-
-void loop() {
-  portal.handleClient();
-}




diff --git a/lib/AutoConnect-master/examples/FSBrowser/FSBrowser.ino b/lib/AutoConnect-master/examples/FSBrowser/FSBrowser.ino
deleted file mode 100644
index 010c017e8095565fc1d0bc8f02892da949dfcbd7..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/examples/FSBrowser/FSBrowser.ino
+++ /dev/null
@@ -1,358 +0,0 @@
-/* 
-  FSWebServer - Example WebServer with SPIFFS backend for esp8266
-  Copyright (c) 2015 Hristo Gochkov. All rights reserved.
-  This file is part of the ESP8266WebServer library for Arduino environment.
- 
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public
-  License as published by the Free Software Foundation; either
-  version 2.1 of the License, or (at your option) any later version.
-  This library is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  Lesser General Public License for more details.
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
-  
-  upload the contents of the data folder with MkSPIFFS Tool ("ESP8266 Sketch Data Upload" in Tools menu in Arduino IDE)
-  or you can upload the contents of a folder if you CD in that folder and run the following command:
-  for file in `\ls -A1`; do curl -F "file=@$PWD/$file" esp8266fs.local/edit; done
-  
-  access the sample web page at http://esp8266fs.local
-  edit the page by going to http://esp8266fs.local/edit
-*/
-#if defined(ARDUINO_ARCH_ESP8266)
-#include <ESP8266WiFi.h>
-#include <WiFiClient.h>
-#include <ESP8266WebServer.h>
-#include <ESP8266mDNS.h>
-#include <FS.h>
-#elif defined(ARDUINO_ARCH_ESP32)
-#include <WiFi.h>
-#include <WiFiClient.h>
-#include <WebServer.h>
-#include <ESPmDNS.h>
-#include <SPIFFS.h>
-#endif
-//Add a below line for AutoConnect.
-#include <AutoConnect.h>
-
-#define DBG_OUTPUT_PORT Serial
-
-const char* ssid = "wifi-ssid";
-const char* password = "wifi-password";
-#if defined(ARDUINO_ARCH_ESP8266)
-const char* host = "esp8266fs";
-
-ESP8266WebServer server(80);
-#elif defined(ARDUINO_ARCH_ESP32)
-const char* host = "esp32fs";
-
-WebServer server(80);
-#endif
-//Add a below line for AutoConnect.
-AutoConnect       portal(server);
-AutoConnectConfig config;
-AutoConnectAux    FSBedit("/edit", "Edit");
-AutoConnectAux    FSBlist("/list?dir=\"/\"", "List");
-//holds the current upload
-File fsUploadFile;
-
-//format bytes
-String formatBytes(size_t bytes){
-  if (bytes < 1024) {
-    return String(bytes) + "B";
-  } else if (bytes < (1024 * 1024)) {
-    return String(bytes / 1024.0) + "KB";
-  } else if (bytes < (1024 * 1024 * 1024)) {
-    return String(bytes / 1024.0 / 1024.0) + "MB";
-  } else {
-    return String(bytes / 1024.0 / 1024.0 / 1024.0) + "GB";
-  }
-}
-
-String getContentType(String filename) {
-  if (server.hasArg("download")) {
-    return "application/octet-stream";
-  } else if (filename.endsWith(".htm")) {
-    return "text/html";
-  } else if (filename.endsWith(".html")) {
-    return "text/html";
-  } else if (filename.endsWith(".css")) {
-    return "text/css";
-  } else if (filename.endsWith(".js")) {
-    return "application/javascript";
-  } else if (filename.endsWith(".png")) {
-    return "image/png";
-  } else if (filename.endsWith(".gif")) {
-    return "image/gif";
-  } else if (filename.endsWith(".jpg")) {
-    return "image/jpeg";
-  } else if (filename.endsWith(".ico")) {
-    return "image/x-icon";
-  } else if (filename.endsWith(".xml")) {
-    return "text/xml";
-  } else if (filename.endsWith(".pdf")) {
-    return "application/x-pdf";
-  } else if (filename.endsWith(".zip")) {
-    return "application/x-zip";
-  } else if (filename.endsWith(".gz")) {
-    return "application/x-gzip";
-  }
-  return "text/plain";
-}
-
-bool handleFileRead(String path) {
-  DBG_OUTPUT_PORT.println("handleFileRead: " + path);
-  if (path.endsWith("/")) {
-    path += "index.htm";
-  }
-  String contentType = getContentType(path);
-  String pathWithGz = path + ".gz";
-  if (SPIFFS.exists(pathWithGz) || SPIFFS.exists(path)) {
-    if (SPIFFS.exists(pathWithGz)) {
-      path += ".gz";
-    }
-    File file = SPIFFS.open(path, "r");
-    server.streamFile(file, contentType);
-    file.close();
-    return true;
-  }
-  return false;
-}
-
-void handleFileUpload() {
-  if (server.uri() != "/edit") {
-    return;
-  }
-  HTTPUpload& upload = server.upload();
-  if (upload.status == UPLOAD_FILE_START) {
-    String filename = upload.filename;
-    if (!filename.startsWith("/")) {
-      filename = "/" + filename;
-    }
-    DBG_OUTPUT_PORT.print("handleFileUpload Name: "); DBG_OUTPUT_PORT.println(filename);
-    fsUploadFile = SPIFFS.open(filename, "w");
-    filename = String();
-  } else if (upload.status == UPLOAD_FILE_WRITE) {
-    //DBG_OUTPUT_PORT.print("handleFileUpload Data: "); DBG_OUTPUT_PORT.println(upload.currentSize);
-    if (fsUploadFile) {
-      fsUploadFile.write(upload.buf, upload.currentSize);
-    }
-  } else if (upload.status == UPLOAD_FILE_END) {
-    if (fsUploadFile) {
-      fsUploadFile.close();
-    }
-    DBG_OUTPUT_PORT.print("handleFileUpload Size: "); DBG_OUTPUT_PORT.println(upload.totalSize);
-  }
-}
-
-void handleFileDelete() {
-  if (server.args() == 0) {
-    return server.send(500, "text/plain", "BAD ARGS");
-  }
-  String path = server.arg(0);
-  DBG_OUTPUT_PORT.println("handleFileDelete: " + path);
-  if (path == "/") {
-    return server.send(500, "text/plain", "BAD PATH");
-  }
-  if (!SPIFFS.exists(path)) {
-    return server.send(404, "text/plain", "FileNotFound");
-  }
-  SPIFFS.remove(path);
-  server.send(200, "text/plain", "");
-  path = String();
-}
-
-void handleFileCreate() {
-  if (server.args() == 0) {
-    return server.send(500, "text/plain", "BAD ARGS");
-  }
-  String path = server.arg(0);
-  DBG_OUTPUT_PORT.println("handleFileCreate: " + path);
-  if (path == "/") {
-    return server.send(500, "text/plain", "BAD PATH");
-  }
-  if (SPIFFS.exists(path)) {
-    return server.send(500, "text/plain", "FILE EXISTS");
-  }
-  File file = SPIFFS.open(path, "w");
-  if (file) {
-    file.close();
-  } else {
-    return server.send(500, "text/plain", "CREATE FAILED");
-  }
-  server.send(200, "text/plain", "");
-  path = String();
-}
-
-void handleFileList() {
-  if (!server.hasArg("dir")) {
-    server.send(500, "text/plain", "BAD ARGS");
-    return;
-  }
-  
-  String path = server.arg("dir");
-  DBG_OUTPUT_PORT.println("handleFileList: " + path);
-#if defined(ARDUINO_ARCH_ESP8266)
-  Dir dir = SPIFFS.openDir(path);
-#elif defined(ARDUINO_ARCH_ESP32)
-  File root = SPIFFS.open(path);
-#endif
-  path = String();
-
-  String output = "[";
-#if defined(ARDUINO_ARCH_ESP8266)
-  while (dir.next()) {
-    File entry = dir.openFile("r");
-    if (output != "[") {
-      output += ',';
-    }
-    bool isDir = false;
-    output += "{\"type\":\"";
-    output += (isDir) ? "dir" : "file";
-    output += "\",\"name\":\"";
-    output += String(entry.name()).substring(1);
-    output += "\"}";
-    entry.close();
-  }
-#elif defined(ARDUINO_ARCH_ESP32)
-  if(root.isDirectory()){
-    File file = root.openNextFile();
-    while(file){
-      if (output != "[") {
-        output += ',';
-      }
-      output += "{\"type\":\"";
-      output += (file.isDirectory()) ? "dir" : "file";
-      output += "\",\"name\":\"";
-      output += String(file.name()).substring(1);
-      output += "\"}";
-      file = root.openNextFile();
-    }
-  }
-#endif
-  
-  output += "]";
-  server.send(200, "text/json", output);
-}
-
-void setup(void){
-  DBG_OUTPUT_PORT.begin(115200);
-  DBG_OUTPUT_PORT.print("\n");
-  DBG_OUTPUT_PORT.setDebugOutput(true);
-  SPIFFS.begin();
-  {
-#if defined(ARDUINO_ARCH_ESP8266)
-    Dir dir = SPIFFS.openDir("/");
-    while (dir.next()) {
-      String fileName = dir.fileName();
-      size_t fileSize = dir.fileSize();
-      DBG_OUTPUT_PORT.printf("FS File: %s, size: %s\n", fileName.c_str(), formatBytes(fileSize).c_str());
-    }
-#elif defined(ARDUINO_ARCH_ESP32)
-    File root = SPIFFS.open("/");
-    File file = root.openNextFile();
-    while(file){
-      String fileName = file.name();
-      size_t fileSize = file.size();
-      DBG_OUTPUT_PORT.printf("FS File: %s, size: %s\n", fileName.c_str(), formatBytes(fileSize).c_str());
-      file = root.openNextFile();
-    }
-#endif
-    DBG_OUTPUT_PORT.printf("\n");
-  }
-  
-
-  //WIFI INIT
-  DBG_OUTPUT_PORT.printf("Connecting to %s\n", ssid);
-  //Comment out as follows to make AutoConnect recognition.
-  //if (String(WiFi.SSID()) != String(ssid)) {
-  //  WiFi.mode(WIFI_STA);
-  //  WiFi.begin(ssid, password);
-  //}
-  
-  //while (WiFi.status() != WL_CONNECTED) {
-  //  delay(500);
-  //  DBG_OUTPUT_PORT.print(".");
-  //}
-  
-  //SERVER INIT
-  //list directory
-  server.on("/list", HTTP_GET, handleFileList);
-  //load editor
-  server.on("/edit", HTTP_GET, []() {
-    if (!handleFileRead("/edit.htm")) {
-      server.send(404, "text/plain", "FileNotFound");
-    }
-  });
-  //create file
-  server.on("/edit", HTTP_PUT, handleFileCreate);
-  //delete file
-  server.on("/edit", HTTP_DELETE, handleFileDelete);
-  //first callback is called after the request has ended with all parsed arguments
-  //second callback handles file uploads at that location
-  server.on("/edit", HTTP_POST, []() {
-    server.send(200, "text/plain", "");
-  }, handleFileUpload);
-
-  //called when the url is not defined here
-  //use it to load content from SPIFFS
-  //Replacement as follows to make AutoConnect recognition.
-  //server.onNotFound([](){
-  portal.onNotFound([](){
-    if(!handleFileRead(server.uri()))
-      server.send(404, "text/plain", "FileNotFound");
-  });
-
-  //get heap status, analog input value and all GPIO statuses in one json call
-  server.on("/all", HTTP_GET, [](){
-    String json = "{";
-    json += "\"heap\":"+String(ESP.getFreeHeap());
-    json += ", \"analog\":"+String(analogRead(A0));
-#if defined(ARDUINO_ARCH_ESP8266)
-    json += ", \"gpio\":"+String((uint32_t)(((GPI | GPO) & 0xFFFF) | ((GP16I & 0x01) << 16)));
-#elif defined(ARDUINO_ARCH_ESP32)
-    json += ", \"gpio\":" + String((uint32_t)(0));
-#endif
-    json += "}";
-    server.send(200, "text/json", json);
-    json = String();
-  });
-
-  //Set menu title
-  config.title = "FSBrowser";
-  portal.config(config);
-  //Register AutoConnect menu
-  portal.join({ FSBedit, FSBlist });
-  //Replacement as follows to make AutoConnect recognition.
-  //server.begin();
-  portal.begin();
-  DBG_OUTPUT_PORT.println("HTTP server started");
-
-  //Relocation as follows to make AutoConnect recognition.
-  DBG_OUTPUT_PORT.println("");
-  DBG_OUTPUT_PORT.print("Connected! IP address: ");
-  DBG_OUTPUT_PORT.println(WiFi.localIP());
-
-  //Relocation as follows to make AutoConnect recognition.
-  if (MDNS.begin(host)) {
-    MDNS.addService("http", "tcp", 80);
-    DBG_OUTPUT_PORT.print("Open http://");
-    DBG_OUTPUT_PORT.print(host);
-    DBG_OUTPUT_PORT.println(".local/edit to see the file browser");
-  }
-  else {
-    DBG_OUTPUT_PORT.print("mDNS start failed");
-  }
-}
- 
-void loop(void){
-  //Replacement as follows to make AutoConnect recognition.
-  //server.handleClient();
-  portal.handleClient();
-#ifdef ARDUINO_ARCH_ESP8266
-  MDNS.update();
-#endif
-}




diff --git a/lib/AutoConnect-master/examples/FSBrowser/LICENSE b/lib/AutoConnect-master/examples/FSBrowser/LICENSE
deleted file mode 100644
index f166cc57b2783565bc48e8999103c572fca4c0e4..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/examples/FSBrowser/LICENSE
+++ /dev/null
@@ -1,502 +0,0 @@
-                  GNU LESSER GENERAL PUBLIC LICENSE
-                       Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL.  It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
-                            Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it.  You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
-  When we speak of free software, we are referring to freedom of use,
-not price.  Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
-  To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights.  These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  To protect each distributor, we want to make it very clear that
-there is no warranty for the free library.  Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
-  Finally, software patents pose a constant threat to the existence of
-any free program.  We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder.  Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
-  Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License.  This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License.  We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
-  When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library.  The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom.  The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
-  We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License.  It also provides other free software developers Less
-of an advantage over competing non-free programs.  These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries.  However, the Lesser license provides advantages in certain
-special circumstances.
-
-  For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard.  To achieve this, non-free programs must be
-allowed to use the library.  A more frequent case is that a free
-library does the same job as widely used non-free libraries.  In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
-  In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software.  For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
-  Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
-                  GNU LESSER GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Use a suitable shared library mechanism for linking with the
-    Library.  A suitable mechanism is one that (1) uses at run time a
-    copy of the library already present on the user's computer system,
-    rather than copying library functions into the executable, and (2)
-    will operate properly with a modified version of the library, if
-    the user installs one, as long as the modified version is
-    interface-compatible with the version that the work was made with.
-
-    c) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    d) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    e) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-                            NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-                     END OF TERMS AND CONDITIONS
-
-           How to Apply These Terms to Your New Libraries
-
-  If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change.  You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
-  To apply these terms, attach the following notices to the library.  It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the library's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the
-  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
-  <signature of Ty Coon>, 1 April 1990
-  Ty Coon, President of Vice
-
-That's all there is to it!
\ No newline at end of file




diff --git a/lib/AutoConnect-master/examples/FSBrowser/README.md b/lib/AutoConnect-master/examples/FSBrowser/README.md
deleted file mode 100644
index fe1949205f5eed782f7ffd900ad18f9628366448..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/examples/FSBrowser/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-### FSBrowser from the example of ESP8266WebServer
-
-This example sketch is in ESP8266WebServer library for Arduino environment. The [FSWebServer](https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer/examples/FSBrowser) is cited as an example of combining AutoConnect library.
-
-The modification describes in the source code.
-
-#### License
-
-FSWebServer - Example WebServer with SPIFFS backend for esp8266  
-Copyright (c) 2015 Hristo Gochkov. All rights reserved.  
-This file is part of the ESP8266WebServer library for Arduino environment.
-
-License under the LGPL-2.1.




diff --git a/lib/AutoConnect-master/examples/FSBrowser/data/edit.htm.gz b/lib/AutoConnect-master/examples/FSBrowser/data/edit.htm.gz
deleted file mode 100644
index 69ce414f47f4b25a70160fc4985b2bd320c9b90a..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/examples/FSBrowser/data/edit.htm.gz and /dev/null differ




diff --git a/lib/AutoConnect-master/examples/FSBrowser/data/favicon.ico b/lib/AutoConnect-master/examples/FSBrowser/data/favicon.ico
deleted file mode 100644
index 71b25fe6ee6012a4c26602977262d217af885520..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/examples/FSBrowser/data/favicon.ico and /dev/null differ




diff --git a/lib/AutoConnect-master/examples/FSBrowser/data/graphs.js.gz b/lib/AutoConnect-master/examples/FSBrowser/data/graphs.js.gz
deleted file mode 100644
index 72435445a7ef86e00fe6c66b3b71c47fdbd53a93..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/examples/FSBrowser/data/graphs.js.gz and /dev/null differ




diff --git a/lib/AutoConnect-master/examples/FSBrowser/data/index.htm b/lib/AutoConnect-master/examples/FSBrowser/data/index.htm
deleted file mode 100644
index 26ff6055af585aff89b24cd0ddf542333262745d..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/examples/FSBrowser/data/index.htm
+++ /dev/null
@@ -1,101 +0,0 @@
-<!-- 
-  FSWebServer - Example Index Page
-  Copyright (c) 2015 Hristo Gochkov. All rights reserved.
-  This file is part of the ESP8266WebServer library for Arduino environment.
- 
-  This library is free software; you can redistribute it and/or
-  modify it under the terms of the GNU Lesser General Public
-  License as published by the Free Software Foundation; either
-  version 2.1 of the License, or (at your option) any later version.
-  This library is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-  Lesser General Public License for more details.
-  You should have received a copy of the GNU Lesser General Public
-  License along with this library; if not, write to the Free Software
-  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
--->
-<!DOCTYPE html>
-<html>
-<head>
-  <meta http-equiv="Content-type" content="text/html; charset=utf-8">
-  <meta name="viewport" content="width=device-width,initial-scale=1">
-  <title>ESP Monitor</title>
-  <script type="text/javascript" src="graphs.js"></script>
-  <script type="text/javascript">
-    var heap,temp,digi;
-    var reloadPeriod = 1000;
-    var running = false;
-    
-    function loadValues(){
-      if(!running) return;
-      var xh = new XMLHttpRequest();
-      xh.onreadystatechange = function(){
-        if (xh.readyState == 4){
-          if(xh.status == 200) {
-            var res = JSON.parse(xh.responseText);
-            heap.add(res.heap);
-            temp.add(res.analog);
-            digi.add(res.gpio);
-            if(running) setTimeout(loadValues, reloadPeriod);
-          } else running = false;
-        }
-      };
-      xh.open("GET", "/all", true);
-      xh.send(null);
-    };
-    
-    function run(){
-      if(!running){
-        running = true;
-        loadValues();
-      }
-    }
-    
-    function onBodyLoad(){
-      var refreshInput = document.getElementById("refresh-rate");
-      refreshInput.value = reloadPeriod;
-      refreshInput.onchange = function(e){
-        var value = parseInt(e.target.value);
-        reloadPeriod = (value > 0)?value:0;
-        e.target.value = reloadPeriod;
-      }
-      var stopButton = document.getElementById("stop-button");
-      stopButton.onclick = function(e){
-        running = false;
-      }
-      var startButton = document.getElementById("start-button");
-      startButton.onclick = function(e){
-        run();
-      }
-      
-      // Example with 10K thermistor
-      //function calcThermistor(v) {
-      //  var t = Math.log(((10230000 / v) - 10000));
-      //  t = (1/(0.001129148+(0.000234125*t)+(0.0000000876741*t*t*t)))-273.15;
-      //  return (t>120)?0:Math.round(t*10)/10;
-      //}
-      //temp = createGraph(document.getElementById("analog"), "Temperature", 100, 128, 10, 40, false, "cyan", calcThermistor);
-      
-      temp = createGraph(document.getElementById("analog"), "Analog Input", 100, 128, 0, 1023, false, "cyan");
-      heap = createGraph(document.getElementById("heap"), "Current Heap", 100, 125, 0, 30000, true, "orange");
-      digi = createDigiGraph(document.getElementById("digital"), "GPIO", 100, 146, [0, 4, 5, 16], "gold");
-      run();
-    }
-  </script>
-</head>
-<body id="index" style="margin:0; padding:0;" onload="onBodyLoad()">
-  <div id="controls" style="display: block; border: 1px solid rgb(68, 68, 68); padding: 5px; margin: 5px; width: 362px; background-color: rgb(238, 238, 238);">
-    <label>Period (ms):</label>
-    <input type="number" id="refresh-rate"/>
-    <input type="button" id="start-button" value="Start"/>
-    <input type="button" id="stop-button" value="Stop"/>
-  </div>
-  <div id="heap"></div>
-  <div id="analog"></div>
-  <div id="digital"></div>
-  <p style="padding-top:15px;text-align:center">
-    <a href="/_ac"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAC2klEQVRIS61VvWsUQRSfmU2pon9BUIkQUaKFaCBKgooSb2d3NSSFKbQR/KrEIiIKBiGF2CgRxEpjQNHs7mwOUcghwUQ7g58IsbGxEBWsb2f8zR177s3t3S2cA8ftzPu993vzvoaSnMu2vRKlaqgKp74Q/tE8qjQPyHGcrUrRjwlWShmDbFMURd/a6TcQwNiYUmpFCPElUebcuQ2vz6aNATMVReHEPwzfSSntDcNwNo2rI+DcvQzhpAbA40VKyV0p1Q9snzBG1qYVcYufXV1sREraDcxpyHdXgkfpRBj6Uwm2RsC5dxxmZ9pdOY9cKTISRcHTCmGiUCh4fYyplTwG2mAUbtMTBMHXOgK9QfyXEZr+TkgQ1oUwDA40hEgfIAfj+HuQRaBzAs9eKyUZ5Htx+T3ZODKG8DzOJMANhmGomJVMXPll+hx9UUAlzZrJJ4QNCDG3VEfguu7mcpmcB/gkBOtShhQhchAlu5jlLUgc9ENgyP5gf9+y6LTv+58p5zySkgwzLNOIGc8sEoT1Lc53NMlbCQQuvMxeCME1NNPVVkmH/i3IzzXDtCSA0qQQwZWOCJDY50jsQRjJmkslEOxvTcDRO6zPxOh5xZglKkYLhWM9jMVnkIsTyMT6NBj7IbOCEjm6HxNVVTo2WXqEWJZ1T8rytB6GxizyDkPhWVpBqfiXUtbo/HywYJSpA9kMamNNPZ71R9Hcm+TMHHZNGw3EuraXEUldbfvw25UdOjqOt+JhMwJd7+jSTpZaEiIcaCDwPK83jtWnTkwnunFMtxeL/ge9r4XItt1RNNaj/0GAcV2bR3U5sG3nEh6M61US+Qrfd9Bs31GGulI2GOS/8dgcQZV1w+ApjIxB7TDwF9GcNzJzoA+rD0/8HvPnXQJCt2qFCwbBTfRI7UyXumWVt+HJ9NO4XI++bdsb0YyrqXmlh+AWOLHaLqS5CLQR5EggR3YlcVS9gKeH2hnX8r8Kmi1CAsl36QAAAABJRU5ErkJggg==" border="0" title="AutoConnect menu" alt="AutoConnect menu"/></a>
-  </p>
-</body>
-</html>
\ No newline at end of file




diff --git a/lib/AutoConnect-master/examples/FileUpload/FileUpload.ino b/lib/AutoConnect-master/examples/FileUpload/FileUpload.ino
deleted file mode 100644
index fc40a3a4302d77800797b4de38db327dc9acb915..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/examples/FileUpload/FileUpload.ino
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
-  FileUpload.ino, Example for the AutoConnect library.
-  Copyright (c) 2019, Hieromon Ikasamo
-  https://github.com/Hieromon/AutoConnect
-
-  This software is released under the MIT License.
-  https://opensource.org/licenses/MIT
-
-  FileUpload.ino writes the file uploaded from the HTTP client to SPIFFS
-  with its file name. To run this example successfully, you need the
-  SPIFFS area setting with Arduino IDE Tool menu which is larger than
-  the size of the upload file.
-
-  This example leverages the AutoConnectFile element to upload files to
-  the flash on ​the ESP8266/ESP32 module. The necessary basic process
-  for uploading and storing to flash is already embedded in the
-  AutoConnectFile element. By the sketch, just place the AutoConnectFile
-  element on a custom web page.
-*/
-
-#if defined(ARDUINO_ARCH_ESP8266)
-#include <ESP8266WiFi.h>
-#include <ESP8266WebServer.h>
-#elif defined(ARDUINO_ARCH_ESP32)
-#include <WiFi.h>
-#include <WebServer.h>
-#include <SPIFFS.h>
-#endif
-#include <FS.h>
-#include <AutoConnect.h>
-
-// Upload request custom Web page
-static const char PAGE_UPLOAD[] PROGMEM = R"(
-{
-  "uri": "/",
-  "title": "Upload",
-  "menu": true,
-  "element": [
-    {
-      "name": "caption",
-      "type": "ACText",
-      "value": "<h2>File uploading platform<h2>"
-    },
-    {
-      "name": "upload_file",
-      "type": "ACFile",
-      "label": "Select file: ",
-      "store": "fs"
-    },
-    {
-      "name": "upload",
-      "type": "ACSubmit",
-      "value": "UPLOAD",
-      "uri": "/upload"
-    }
-  ]
-}
-)";
-
-// Upload result display
-static const char PAGE_BROWSE[] PROGMEM = R"(
-{
-  "uri": "/upload",
-  "title": "Upload",
-  "menu": false,
-  "element": [
-    {
-      "name": "caption",
-      "type": "ACText",
-      "value": "<h2>Uploading ended<h2>"
-    },
-    {
-      "name": "filename",
-      "type": "ACText"
-    },
-    {
-      "name": "size",
-      "type": "ACText",
-      "format": "%s bytes uploaded"
-    },
-    {
-      "name": "content_type",
-      "type": "ACText",
-      "format": "Content: %s"
-    }
-  ]
-}
-)";
-
-#if defined(ARDUINO_ARCH_ESP8266)
-#define FILE_MODE_R "r"
-typedef ESP8266WebServer  WiFiWebServer;
-#elif defined(ARDUINO_ARCH_ESP32)
-#define FILE_MODE_R FILE_READ
-typedef WebServer WiFiWebServer;
-#endif
-
-WiFiWebServer server;
-AutoConnect portal(server);
-// Declare AutoConnectAux separately as a custom web page to access
-// easily for each page in the post-upload handler.
-AutoConnectAux auxUpload;
-AutoConnectAux auxBrowse;
-
-/**
- * Post uploading, AutoConnectFile's built-in upload handler reads the
- * file saved in SPIFFS and displays the file contents on /upload custom
- * web page. However, only files with mime type uploaded as text are
- * displayed. A custom web page handler is called after upload.
- * @param  aux  AutoConnectAux(/upload)
- * @param  args PageArgument
- * @return Uploaded text content
- */
-String postUpload(AutoConnectAux& aux, PageArgument& args) {
-  String  content;
-  // Explicitly cast to the desired element to correctly extract
-  // the element using the operator [].
-  AutoConnectFile&  upload = auxUpload["upload_file"].as<AutoConnectFile>();
-  AutoConnectText&  aux_filename = aux["filename"].as<AutoConnectText>();
-  AutoConnectText&  aux_size = aux["size"].as<AutoConnectText>();
-  AutoConnectText&  aux_contentType = aux["content_type"].as<AutoConnectText>();
-  // Assignment operator can be used for the element attribute.
-  aux_filename.value = upload.value;
-  aux_size.value = String(upload.size);
-  aux_contentType.value = upload.mimeType;
-  // The file saved by the AutoConnect upload handler is read from
-  // the EEPROM and echoed to a custom web page.
-  if (upload.mimeType.indexOf("text/") >= 0) {
-    SPIFFS.begin();
-    File uploadFile = SPIFFS.open(String("/" + upload.value).c_str(), FILE_MODE_R);
-    if (uploadFile) {
-      while (uploadFile.available()) {
-        char c = uploadFile.read();
-        if (c == '\n')
-          content += "<br>";
-        else
-          content += c;
-      }
-      uploadFile.close();
-    }
-    else
-      content = "Not saved";
-    SPIFFS.end();
-  }
-  return content;
-}
-
-void setup() {
-  delay(1000);
-  Serial.begin(115200);
-  Serial.println();
-
-  auxUpload.load(PAGE_UPLOAD);
-  auxBrowse.load(PAGE_BROWSE);
-  portal.join({ auxUpload, auxBrowse });
-  auxBrowse.on(postUpload);
-  portal.begin();
-}
-
-void loop() {
-  portal.handleClient();
-}




diff --git a/lib/AutoConnect-master/examples/HandleClient/HandleClient.ino b/lib/AutoConnect-master/examples/HandleClient/HandleClient.ino
deleted file mode 100644
index 2b16e447b1fa2695706ab23bb4d607121cf98a51..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/examples/HandleClient/HandleClient.ino
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
-  HandleCline.ino, Example for the AutoConnect library.
-  Copyright (c) 2018, Hieromon Ikasamo
-  https://github.com/Hieromon/AutoConnect
-
-  This software is released under the MIT License.
-  https://opensource.org/licenses/MIT
-*/
-
-#if defined(ARDUINO_ARCH_ESP8266)
-#include <ESP8266WiFi.h>
-#include <ESP8266WebServer.h>
-#elif defined(ARDUINO_ARCH_ESP32)
-#include <WiFi.h>
-#include <WebServer.h>
-#endif
-#include <AutoConnect.h>
-
-#if defined(ARDUINO_ARCH_ESP8266)
-ESP8266WebServer server;
-#elif defined(ARDUINO_ARCH_ESP32)
-WebServer server;
-#endif
-
-#ifndef BUILTIN_LED
-#define BUILTIN_LED  2  // backward compatibility
-#endif
-
-AutoConnect         portal(server);
-
-void handleRoot() {
-  String page = PSTR(
-"<html>"
-"</head>"
-  "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">"
-  "<style type=\"text/css\">"
-    "body {"
-    "-webkit-appearance:none;"
-    "-moz-appearance:none;"
-    "font-family:'Arial',sans-serif;"
-    "text-align:center;"
-    "}"
-    ".menu > a:link {"
-    "position: absolute;"
-    "display: inline-block;"
-    "right: 12px;"
-    "padding: 0 6px;"
-    "text-decoration: none;"
-    "}"
-    ".button {"
-    "display:inline-block;"
-    "border-radius:7px;"
-    "background:#73ad21;"
-    "margin:0 10px 0 10px;"
-    "padding:10px 20px 10px 20px;"
-    "text-decoration:none;"
-    "color:#000000;"
-    "}"
-  "</style>"
-"</head>"
-"<body>"
-  "<div class=\"menu\">" AUTOCONNECT_LINK(BAR_24) "</div>"
-  "BUILT-IN LED<br>"
-  "GPIO(");
-  page += String(BUILTIN_LED);
-  page += String(F(") : <span style=\"font-weight:bold;color:"));
-  page += digitalRead(BUILTIN_LED) ? String("Tomato\">HIGH") : String("SlateBlue\">LOW");
-  page += String(F("</span>"));
-  page += String(F("<p><a class=\"button\" href=\"/io?v=low\">low</a><a class=\"button\" href=\"/io?v=high\">high</a></p>"));
-  page += String(F("</body></html>"));
-  server.send(200, "text/html", page);
-}
-
-void handleGPIO() {
-  if (server.arg("v") == "low")
-    digitalWrite(BUILTIN_LED, LOW);
-  else if (server.arg("v") == "high")
-    digitalWrite(BUILTIN_LED, HIGH);
-  sendRedirect("/");
-}
-
-void sendRedirect(String uri) {
-  server.sendHeader("Location", uri, true);
-  server.send(302, "text/plain", "");
-  server.client().stop();
-}
-
-bool atDetect(IPAddress softapIP) {
-  Serial.println("Captive portal started, SoftAP IP:" + softapIP.toString());
-  return true;
-}
-
-void setup() {
-  delay(1000);
-  Serial.begin(115200);
-  Serial.println();
-  pinMode(BUILTIN_LED, OUTPUT);
-
-  // Put the home location of the web site.
-  // But in usually, setting the home uri is not needed cause default location is "/".
-  //portal.home("/");   
-
-  server.on("/", handleRoot);
-  server.on("/io", handleGPIO);
-
-  // Starts user web site included the AutoConnect portal.
-  portal.onDetect(atDetect);
-  if (portal.begin()) {
-    Serial.println("Started, IP:" + WiFi.localIP().toString());
-  }
-  else {
-    Serial.println("Connection failed.");
-    while (true) { yield(); }
-  }
-}
-
-void loop() {
-  server.handleClient();
-  portal.handleRequest();   // Need to handle AutoConnect menu.
-  if (WiFi.status() == WL_IDLE_STATUS) {
-#if defined(ARDUINO_ARCH_ESP8266)
-    ESP.reset();
-#elif defined(ARDUINO_ARCH_ESP32)
-    ESP.restart();
-#endif
-    delay(1000);
-  }
-}




diff --git a/lib/AutoConnect-master/examples/HandlePortal/HandlePortal.ino b/lib/AutoConnect-master/examples/HandlePortal/HandlePortal.ino
deleted file mode 100644
index 048cabb1d6a4d2a27f04d9cd0a155bb466a088c8..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/examples/HandlePortal/HandlePortal.ino
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
-  HandlePortal.ino, Example for the AutoConnect library.
-  Copyright (c) 2018, Hieromon Ikasamo
-  https://github.com/Hieromon/AutoConnect
-
-  This software is released under the MIT License.
-  https://opensource.org/licenses/MIT
-*/
-/*
-  This is a way of not explicitly declaring ESP8266WebServer. It uses
-  the ESP8266WebServer function without its declaration.
-  I recommend that you consider this example compared to HandlePortalEX.ino.
-  https://github.com/Hieromon/AutoConnect/blob/master/examples/HandlePortalEX/HandlePortalEX.ino
-  It will help you understand AutoConnect usage.
-*/
-
-#if defined(ARDUINO_ARCH_ESP8266)
-#include <ESP8266WiFi.h>
-#include <ESP8266WebServer.h>
-#elif defined(ARDUINO_ARCH_ESP32)
-#include <WiFi.h>
-#include <WebServer.h>
-#endif
-#include <AutoConnect.h>
-
-#ifndef BUILTIN_LED
-#define BUILTIN_LED  2  // backward compatibility
-#endif
-
-AutoConnect portal;
-
-void handleRoot() {
-  String page = PSTR(
-"<html>"
-"<head>"
-  "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">"
-  "<style type=\"text/css\">"
-    "body {"
-    "-webkit-appearance:none;"
-    "-moz-appearance:none;"
-    "font-family:'Arial',sans-serif;"
-    "text-align:center;"
-    "}"
-    ".menu > a:link {"
-    "position: absolute;"
-    "display: inline-block;"
-    "right: 12px;"
-    "padding: 0 6px;"
-    "text-decoration: none;"
-    "}"
-    ".button {"
-    "display:inline-block;"
-    "border-radius:7px;"
-    "background:#73ad21;"
-    "margin:0 10px 0 10px;"
-    "padding:10px 20px 10px 20px;"
-    "text-decoration:none;"
-    "color:#000000;"
-    "}"
-  "</style>"
-"</head>"
-"<body>"
-  "<div class=\"menu\">" AUTOCONNECT_LINK(BAR_32) "</div>"
-  "BUILT-IN LED<br>"
-  "GPIO(");
-  page += String(BUILTIN_LED);
-  page += String(F(") : <span style=\"font-weight:bold;color:"));
-  page += digitalRead(BUILTIN_LED) ? String("Tomato\">HIGH") : String("SlateBlue\">LOW");
-  page += String(F("</span>"));
-  page += String(F("<p><a class=\"button\" href=\"/io?v=low\">low</a><a class=\"button\" href=\"/io?v=high\">high</a></p>"));
-  page += String(F("</body></html>"));
-  portal.host().send(200, "text/html", page);
-}
-
-void handleGPIO() {
-  WebServerClass& server = portal.host();
-  if (server.arg("v") == "low")
-    digitalWrite(BUILTIN_LED, LOW);
-  else if (server.arg("v") == "high")
-    digitalWrite(BUILTIN_LED, HIGH);
-  sendRedirect("/");
-}
-
-void sendRedirect(String uri) {
-  WebServerClass& server = portal.host();
-  server.sendHeader("Location", uri, true);
-  server.send(302, "text/plain", "");
-  server.client().stop();
-}
-
-bool atDetect(IPAddress softapIP) {
-  Serial.println("Captive portal started, SoftAP IP:" + softapIP.toString());
-  return true;
-}
-
-void setup() {
-  delay(1000);
-  Serial.begin(115200);
-  Serial.println();
-  pinMode(BUILTIN_LED, OUTPUT);
-
-  // Put the home location of the web site.
-  // But in usually, setting the home uri is not needed cause default location is "/".
-  //portal.home("/");   
-
-  // Starts user web site included the AutoConnect portal.
-  portal.onDetect(atDetect);
-  if (portal.begin()) {
-    WebServerClass& server = portal.host();
-    server.on("/", handleRoot);
-    server.on("/io", handleGPIO);
-    Serial.println("Started, IP:" + WiFi.localIP().toString());
-  }
-  else {
-    Serial.println("Connection failed.");
-    while (true) { yield(); }
-  }
-}
-
-void loop() {
-  portal.handleClient();
-  if (WiFi.status() == WL_IDLE_STATUS) {
-#if defined(ARDUINO_ARCH_ESP8266)
-    ESP.reset();
-#elif defined(ARDUINO_ARCH_ESP32)
-    ESP.restart();
-#endif
-    delay(1000);
-  }
-}




diff --git a/lib/AutoConnect-master/examples/HandlePortalEX/HandlePortalEX.ino b/lib/AutoConnect-master/examples/HandlePortalEX/HandlePortalEX.ino
deleted file mode 100644
index 181ef999f6489fe48bf4f17df8ab2ae4710833ca..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/examples/HandlePortalEX/HandlePortalEX.ino
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
-  HandlePortalEX.ino, Example for the AutoConnect library.
-  Copyright (c) 2018, Hieromon Ikasamo
-  https://github.com/Hieromon/AutoConnect
-
-  This software is released under the MIT License.
-  https://opensource.org/licenses/MIT
-*/
-/*
-  This is an explicit declaration of ESP8266WebServer. AutoConnect uses
-  its declaration. Also, by using PageBuilder for HTML assembly, you can
-  display the web page without using the ESP8266WebServer::send() function.
-  I recommend that you consider this example compared to HandlePortal.ino.
-  https://github.com/Hieromon/AutoConnect/blob/master/examples/HandlePortal/HandlePortal.ino
-  It will help you understand AutoConnect usage.
-*/
-
-#if defined(ARDUINO_ARCH_ESP8266)
-#include <ESP8266WiFi.h>
-#include <ESP8266WebServer.h>
-#elif defined(ARDUINO_ARCH_ESP32)
-#include <WiFi.h>
-#include <WebServer.h>
-#endif
-#include <PageBuilder.h>
-#include <AutoConnect.h>
-
-#ifndef BUILTIN_LED
-#define BUILTIN_LED  2  // backward compatibility
-#endif
-
-#if defined(ARDUINO_ARCH_ESP8266)
-ESP8266WebServer server;
-#elif defined(ARDUINO_ARCH_ESP32)
-WebServer server;
-#endif
-AutoConnect      portal(server);
-
-static const char PROGMEM mold_page[] = R"*lit(
-<html>
-<head>
-  <meta name="viewport" content="width=device-width, initial-scale=1">
-  <style type="text/css">
-  body {
-    -webkit-appearance:none;
-    -moz-appearance:none;
-    font-family:'Arial',sans-serif;
-    text-align:center;
-  }
-  .menu > a:link {
-    position: absolute;
-    display: inline-block;
-    right: 12px;
-    padding: 0 6px;
-    text-decoration: none;
-  }
-  .button {
-    display:inline-block;
-    border-radius:7px;
-    background:#73ad21;
-    margin:0 10px 0 10px;
-    padding:10px 20px 10px 20px;
-    text-decoration:none;
-    color:#000000;
-  }
-  </style>
-</head>
-<body>
-  <div class="menu">{{AUTOCONNECT_MENU}}</div>
-  BUILT-IN LED<br>
-  GPIO({{LED}}) : <span style="font-weight:bold;color:{{COLOR}}">{{GPIO}}</span>
-  <p><a class="button" href="/io?v=low">low</a><a class="button" href="/io?v=high">high</a></p>
-  </body>
-</html>
-)*lit";
-
-static const char PROGMEM autoconnectMenu[] = { AUTOCONNECT_LINK(BAR_24) };
-
-String getLEDPort(PageArgument& args) {
-  return String(BUILTIN_LED);
-}
-
-String setColor(PageArgument& args) {
-  return digitalRead(BUILTIN_LED) ? "Tomato" : "SlateBlue";
-}
-
-String readLEDPort(PageArgument& args) {
-  return digitalRead(BUILTIN_LED) ? "HIGH" : "LOW";
-}
-
-PageElement elm_gpio(mold_page, {
-  {"LED", getLEDPort},
-  {"COLOR", setColor},
-  {"GPIO", readLEDPort},
-  {"AUTOCONNECT_MENU", [](PageArgument& args) {
-    return String(FPSTR(autoconnectMenu));}}
-});
-PageBuilder root("/", { elm_gpio });
-
-
-String gpio(PageArgument& args) {
-  if (args.arg("v") == "low")
-    digitalWrite(BUILTIN_LED, LOW);
-  else if (args.arg("v") == "high")
-    digitalWrite(BUILTIN_LED, HIGH);
-  sendRedirect("/");
-  return "";
-}
-
-PageElement elm_io("{{IO}}", { {"IO", gpio} });
-PageBuilder io("/io", { elm_io });
-
-// This function is for redirect only.
-// The actual sending the HTML performs in PageBuilder.
-void sendRedirect(String uri) {
-  server.sendHeader("Location", uri, true);
-  server.send(302, "text/plain", "");
-  server.client().stop();
-  io.cancel();
-}
-
-bool atDetect(IPAddress softapIP) {
-  Serial.println("Captive portal started, SoftAP IP:" + softapIP.toString());
-  return true;
-}
-
-void setup() {
-  delay(1000);
-  Serial.begin(115200);
-  Serial.println();
-  pinMode(BUILTIN_LED, OUTPUT);
-
-  // Put the home location of the web site.
-  // But in usually, setting the home uri is not needed cause default location is "/".
-  //portal.home("/");   
-  
-  // Starts user web site included the AutoConnect portal.
-  portal.onDetect(atDetect);
-  if (portal.begin()) {
-    // Register the page request handlers.
-    root.insert(server);
-    io.insert(server);
-    Serial.println("Started, IP:" + WiFi.localIP().toString());
-  }
-  else {
-    Serial.println("Connection failed.");
-    while (true) { yield(); }
-  }
-}
-
-void loop() {
-  portal.handleClient();
-  if (WiFi.status() == WL_IDLE_STATUS) {
-#if defined(ARDUINO_ARCH_ESP8266)
-    ESP.reset();
-#elif defined(ARDUINO_ARCH_ESP32)
-    ESP.restart();
-#endif
-    delay(1000);
-  }
-}




diff --git a/lib/AutoConnect-master/examples/HelloWorld/Data/style.json b/lib/AutoConnect-master/examples/HelloWorld/Data/style.json
deleted file mode 100644
index 6d2efd340c76c6edc76a16f580f5ed40a20662d4..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/examples/HelloWorld/Data/style.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "name" : "Caption",
-  "type" : "ACText",
-  "style": "text-align:center;font-size:24px;font-family:'Impact','Futura',sans-serif;color:tomato;"
-}




diff --git a/lib/AutoConnect-master/examples/HelloWorld/HelloWorld.ino b/lib/AutoConnect-master/examples/HelloWorld/HelloWorld.ino
deleted file mode 100644
index df4bf7ecc74abf202662f65e2cbc87151b7cadf9..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/examples/HelloWorld/HelloWorld.ino
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
-  HelloWorld.ino, Example for the AutoConnect library.
-  Copyright (c) 2019, Hieromon Ikasamo
-  https://github.com/Hieromon/AutoConnect
-
-  This software is released under the MIT License.
-  https://opensource.org/licenses/MIT
-*/
-/*
-  To experience this example, upload the JSON file which is style.json
-  from the data folder. Its file contains the attributes for the Caption
-  of AutoConnectText. You can change the elements for your realization.
-*/
-
-#if defined(ARDUINO_ARCH_ESP8266)
-#include <ESP8266WiFi.h>
-#include <ESP8266WebServer.h>
-typedef ESP8266WebServer WEBServer;
-#elif defined(ARDUINO_ARCH_ESP32)
-#include <WiFi.h>
-#include <WebServer.h>
-#include <SPIFFS.h>
-typedef WebServer WEBServer;
-#endif
-#include <FS.h>
-#include <AutoConnect.h>
-
-#define HELLO_URI   "/hello"
-#define PARAM_STYLE "/style.json"
-
-// Declare AutoConnectText with only a value.
-// Qualify the Caption by reading style attributes from the SPIFFS style.json file.
-ACText(Caption, "Hello, world");
-
-//AutoConnectAux for the custom Web page.
-AutoConnectAux helloPage(HELLO_URI, "Hello", true, { Caption });
-AutoConnect portal;
-
-// JSON document loading buffer
-String ElementJson;
-
-// Redirects from root to the hello page.
-void onRoot() {
-  WEBServer& webServer = portal.host();
-  webServer.sendHeader("Location", String("http://") + webServer.client().localIP().toString() + String(HELLO_URI));
-  webServer.send(302, "text/plain", "");
-  webServer.client().flush();
-  webServer.client().stop();
-}
-
-// Load the attribute of the element to modify at runtime from external.
-String onHello(AutoConnectAux& aux, PageArgument& args) {
-  aux.loadElement(ElementJson);
-  return String();
-}
-
-// Load the element from specified file in SPIFFS.
-void loadParam(const char* fileName) {
-  SPIFFS.begin();
-  File param = SPIFFS.open(fileName, "r");
-  if (param) {
-    ElementJson = param.readString();
-    param.close();
-  }
-  SPIFFS.end();
-}
-
-void setup() {
-  delay(1000);
-  Serial.begin(115200);
-
-  loadParam(PARAM_STYLE);     // Pre-load the element from JSON.
-  helloPage.on(onHello);      // Register the attribute overwrite handler.
-  portal.join(helloPage);     // Join the hello page.
-  portal.begin();
-
-  WEBServer& webServer = portal.host();
-  webServer.on("/", onRoot);  // Register the root page redirector.
-}
-
-void loop() {
-  portal.handleClient();
-}




diff --git a/lib/AutoConnect-master/examples/Simple/Simple.ino b/lib/AutoConnect-master/examples/Simple/Simple.ino
deleted file mode 100644
index 1b5e130dd37f0499cd684f4e814639adef984b35..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/examples/Simple/Simple.ino
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
-  Simple.ino, Example for the AutoConnect library.
-  Copyright (c) 2018, Hieromon Ikasamo
-  https://github.com/Hieromon/AutoConnect
-
-  This software is released under the MIT License.
-  https://opensource.org/licenses/MIT
-*/
-
-#if defined(ARDUINO_ARCH_ESP8266)
-#include <ESP8266WiFi.h>
-#include <ESP8266WebServer.h>
-#elif defined(ARDUINO_ARCH_ESP32)
-#include <WiFi.h>
-#include <WebServer.h>
-#endif
-#include <time.h>
-#include <AutoConnect.h>
-
-static const char AUX_TIMEZONE[] PROGMEM = R"(
-{
-  "title": "TimeZone",
-  "uri": "/timezone",
-  "menu": true,
-  "element": [
-    {
-      "name": "caption",
-      "type": "ACText",
-      "value": "Sets the time zone to get the current local time.",
-      "style": "font-family:Arial;font-weight:bold;text-align:center;margin-bottom:10px;color:DarkSlateBlue"
-    },
-    {
-      "name": "timezone",
-      "type": "ACSelect",
-      "label": "Select TZ name",
-      "option": [],
-      "selected": 10
-    },
-    {
-      "name": "newline",
-      "type": "ACElement",
-      "value": "<br>"
-    },
-    {
-      "name": "start",
-      "type": "ACSubmit",
-      "value": "OK",
-      "uri": "/start"
-    }
-  ]
-}
-)";
-
-typedef struct {
-  const char* zone;
-  const char* ntpServer;
-  int8_t      tzoff;
-} Timezone_t;
-
-static const Timezone_t TZ[] = {
-  { "Europe/London", "europe.pool.ntp.org", 0 },
-  { "Europe/Berlin", "europe.pool.ntp.org", 1 },
-  { "Europe/Helsinki", "europe.pool.ntp.org", 2 },
-  { "Europe/Moscow", "europe.pool.ntp.org", 3 },
-  { "Asia/Dubai", "asia.pool.ntp.org", 4 },
-  { "Asia/Karachi", "asia.pool.ntp.org", 5 },
-  { "Asia/Dhaka", "asia.pool.ntp.org", 6 },
-  { "Asia/Jakarta", "asia.pool.ntp.org", 7 },
-  { "Asia/Manila", "asia.pool.ntp.org", 8 },
-  { "Asia/Tokyo", "asia.pool.ntp.org", 9 },
-  { "Australia/Brisbane", "oceania.pool.ntp.org", 10 },
-  { "Pacific/Noumea", "oceania.pool.ntp.org", 11 },
-  { "Pacific/Auckland", "oceania.pool.ntp.org", 12 },
-  { "Atlantic/Azores", "europe.pool.ntp.org", -1 },
-  { "America/Noronha", "south-america.pool.ntp.org", -2 },
-  { "America/Araguaina", "south-america.pool.ntp.org", -3 },
-  { "America/Blanc-Sablon", "north-america.pool.ntp.org", -4},
-  { "America/New_York", "north-america.pool.ntp.org", -5 },
-  { "America/Chicago", "north-america.pool.ntp.org", -6 },
-  { "America/Denver", "north-america.pool.ntp.org", -7 },
-  { "America/Los_Angeles", "north-america.pool.ntp.org", -8 },
-  { "America/Anchorage", "north-america.pool.ntp.org", -9 },
-  { "Pacific/Honolulu", "north-america.pool.ntp.org", -10 },
-  { "Pacific/Samoa", "oceania.pool.ntp.org", -11 }
-};
-
-#if defined(ARDUINO_ARCH_ESP8266)
-ESP8266WebServer Server;
-#elif defined(ARDUINO_ARCH_ESP32)
-WebServer Server;
-#endif
-
-AutoConnect       Portal(Server);
-AutoConnectConfig Config;       // Enable autoReconnect supported on v0.9.4
-AutoConnectAux    Timezone;
-
-void rootPage() {
-  String  content =
-    "<html>"
-    "<head>"
-    "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">"
-    "</head>"
-    "<body>"
-    "<h2 align=\"center\" style=\"color:blue;margin:20px;\">Hello, world</h2>"
-    "<h3 align=\"center\" style=\"color:gray;margin:10px;\">{{DateTime}}</h3>"
-    "<p style=\"text-align:center;\">Reload the page to update the time.</p>"
-    "<p></p><p style=\"padding-top:15px;text-align:center\">" AUTOCONNECT_LINK(COG_24) "</p>"
-    "</body>"
-    "</html>";
-  static const char *wd[7] = { "Sun","Mon","Tue","Wed","Thr","Fri","Sat" };
-  struct tm *tm;
-  time_t  t;
-  char    dateTime[26];
-
-  t = time(NULL);
-  tm = localtime(&t);
-  sprintf(dateTime, "%04d/%02d/%02d(%s) %02d:%02d:%02d.",
-    tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
-    wd[tm->tm_wday],
-    tm->tm_hour, tm->tm_min, tm->tm_sec);
-  content.replace("{{DateTime}}", String(dateTime));
-  Server.send(200, "text/html", content);
-}
-
-void startPage() {
-  // Retrieve the value of AutoConnectElement with arg function of WebServer class.
-  // Values are accessible with the element name.
-  String  tz = Server.arg("timezone");
-
-  for (uint8_t n = 0; n < sizeof(TZ) / sizeof(Timezone_t); n++) {
-    String  tzName = String(TZ[n].zone);
-    if (tz.equalsIgnoreCase(tzName)) {
-      configTime(TZ[n].tzoff * 3600, 0, TZ[n].ntpServer);
-      Serial.println("Time zone: " + tz);
-      Serial.println("ntp server: " + String(TZ[n].ntpServer));
-      break;
-    }
-  }
-
-  // The /start page just constitutes timezone,
-  // it redirects to the root page without the content response.
-  Server.sendHeader("Location", String("http://") + Server.client().localIP().toString() + String("/"));
-  Server.send(302, "text/plain", "");
-  Server.client().flush();
-  Server.client().stop();
-}
-
-void setup() {
-  delay(1000);
-  Serial.begin(115200);
-  Serial.println();
-
-  // Enable saved past credential by autoReconnect option,
-  // even once it is disconnected.
-  Config.autoReconnect = true;
-  Portal.config(Config);
-
-  // Load aux. page
-  Timezone.load(AUX_TIMEZONE);
-  // Retrieve the select element that holds the time zone code and
-  // register the zone mnemonic in advance.
-  AutoConnectSelect&  tz = Timezone["timezone"].as<AutoConnectSelect>();
-  for (uint8_t n = 0; n < sizeof(TZ) / sizeof(Timezone_t); n++) {
-    tz.add(String(TZ[n].zone));
-  }
-
-  Portal.join({ Timezone });        // Register aux. page
-
-  // Behavior a root path of ESP8266WebServer.
-  Server.on("/", rootPage);
-  Server.on("/start", startPage);   // Set NTP server trigger handler
-
-  // Establish a connection with an autoReconnect option.
-  if (Portal.begin()) {
-    Serial.println("WiFi connected: " + WiFi.localIP().toString());
-  }
-}
-
-void loop() {
-  Portal.handleClient();
-}




diff --git a/lib/AutoConnect-master/examples/WebUpdate/WebUpdate.ino b/lib/AutoConnect-master/examples/WebUpdate/WebUpdate.ino
deleted file mode 100644
index 034ff171d1c4cd30073d38d0846d7e007eb7b7c8..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/examples/WebUpdate/WebUpdate.ino
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
-  WebUpdate.ino, Example for the AutoConnect library.
-  Copyright (c) 2018, Hieromon Ikasamo
-  https://github.com/Hieromon/AutoConnect
-  This example is an implementation of a lightweight update feature
-  that updates the ESP8266's firmware from your web browser. It embeds
-  ESP8266HTTPUpdateServer into the AutoConnect menu and can invoke the
-  firmware update UI via a Web browser.
-  You need a compiled sketch binary file to the actual update and can
-  retrieve it using Arduino-IDE menu: [Sketck] -> [Export compiled binary].
-  Then you will find the .bin file in your sketch folder. Select the.bin
-  file on the update UI page to update the firmware.
-
-  Notes:
-  1. This example is valid only for ESP8266. In order to apply this
-  example to ESP32, it is necessary to quote WebUpdate.ino included
-  in the ESP32 arduino core distribution and implement a class
-  equivalent to ESP8266HTTPUpdateServer. But it is not included in this
-  example.
-
-  2. To experience this example, your client OS needs to be running a
-  service that can respond to multicast DNS.
-  For Mac OSX support is built in through Bonjour already.
-  For Linux, install Avahi.
-  For Windows10, available since Windows10 1803(April 2018 Update/RS4).
-
-  3. If you receive an error as follows:
-  Update error: ERROR[11]: Invalid bootstrapping state, reset ESP8266 before updating.
-  You need reset the module before sketch running.
-  Refer to https://hieromon.github.io/AutoConnect/faq.html#hang-up-after-reset for details.
-
-  This software is released under the MIT License.
-  https://opensource.org/licenses/MIT
-*/
-#ifdef ARDUINO_ARCH_ESP8266
-
-#include <ESP8266WiFi.h>
-#include <WiFiClient.h>
-#include <ESP8266WebServer.h>
-#include <ESP8266mDNS.h>
-#include <ESP8266HTTPUpdateServer.h>
-#include <AutoConnect.h>
-
-// This page for an example only, you can prepare the other for your application.
-static const char AUX_AppPage[] PROGMEM = R"(
-{
-  "title": "Hello world",
-  "uri": "/",
-  "menu": true,
-  "element": [
-    {
-      "name": "caption",
-      "type": "ACText",
-      "value": "<h2>Hello, world</h2>",
-      "style": "text-align:center;color:#2f4f4f;padding:10px;"
-    },
-    {
-      "name": "content",
-      "type": "ACText",
-      "value": "In this page, place the custom web page handled by the sketch application."
-    }
-  ]
-}
-)";
-
-// Fix hostname for mDNS. It is a requirement for the lightweight update feature.
-static const char* host = "esp8266-webupdate";
-#define HTTP_PORT 80
-
-// ESP8266WebServer instance will be shared both AutoConnect and UpdateServer.
-ESP8266WebServer  httpServer(HTTP_PORT);
-
-// Declare AutoConnectAux to bind the HTTPWebUpdateServer via /update url
-// and call it from the menu.
-// The custom web page is an empty page that does not contain AutoConnectElements.
-// Its content will be emitted by ESP8266HTTPUpdateServer.
-ESP8266HTTPUpdateServer httpUpdater;
-AutoConnectAux  update("/update", "Update");
-
-// Declare AutoConnect and the custom web pages for an application sketch.
-AutoConnect     portal(httpServer);
-AutoConnectAux  hello;
-
-void setup() {
-  delay(1000);
-  Serial.begin(115200);
-  Serial.println("\nBooting Sketch...");
-
-  // Prepare the ESP8266HTTPUpdateServer
-  // The /update handler will be registered during this function.
-  httpUpdater.setup(&httpServer);
-
-  // Load a custom web page for a sketch and a dummy page for the updater.
-  hello.load(AUX_AppPage);
-  portal.join({ hello, update });
-
-  if (portal.begin()) {
-    if (MDNS.begin(host)) {
-        MDNS.addService("http", "tcp", HTTP_PORT);
-        Serial.printf("HTTPUpdateServer ready! Open http://%s.local/update in your browser\n", host);
-    }
-    else
-      Serial.println("Error setting up MDNS responder");
-  }
-}
-
-void loop() {
-  // Sketch the application here.
-
-  // Invokes mDNS::update and AutoConnect::handleClient() for the menu processing.
-  MDNS.update();
-  portal.handleClient();
-}
-
-#else
-void setup() {}
-void loop() {}
-#endif




diff --git a/lib/AutoConnect-master/examples/mqttRSSI/README.md b/lib/AutoConnect-master/examples/mqttRSSI/README.md
deleted file mode 100644
index 6aa23dd544c4c6ec750b610c1527b11dff3cdebb..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/examples/mqttRSSI/README.md
+++ /dev/null
@@ -1,65 +0,0 @@
-## mqttRSSI
-
-### Publish ESP8266/ESP32 WiFi signal strength to MQTT broker
-
-This example is based on the description of the MQTT client application in the [AutoConnect documentation](https://hieromon.github.io/AutoConnect/examples/index.html#used-with-mqtt-as-a-client-application). To experience this example, you need to prepare the [ThingSpeak](https://thingspeak.com/) account and the channel for MQTT message exchange in advance.
-
-The mqttRSSI equips with a custom Web page for configuring broker parameters. You can invoke the MQTT Setting web interface from the AutoConnect menu to configure for the mqtt broker performed on Thingspeak. This custom Web page is written in JSON and embedded in the sketch. Also, the [mqttRSSI_FS](https://github.com/Hieromon/AutoConnect/tree/master/examples/mqttRSSI_FS) example stores the JSON document in the flash of ESP8266/ESP32 module and separates it completely from the sketch. Instructions and the APIs for equipping custom Web pages are available in the [documentation](https://hieromon.github.io/AutoConnect/acintro.html). (This example requires [ArduinoJson](https://github.com/bblanchon/ArduinoJson) version 5 or version 6 library.)
-
-<img src="https://hieromon.github.io/AutoConnect/images/ac_mqtt_setting.png" width="40%"/>
-&nbsp;&nbsp;
-<img src="https://hieromon.github.io/AutoConnect/images/ChannelStatus.png" width="40%"/>
-
-The ThingSpeak is the open IoT platform. It is capable of sending data privately to the cloud and analyzing, visualizing its data. If you do not have an account of ThingSpeak, you need that account to proceed further.
-
-### Advance procedures
-
-- Arduino Client for MQTT - It's the [PubSubClient](https://github.com/knolleary/pubsubclient), install it to Arduino IDE. If you have the latest version already, this step does not need.
-- Create a channel on ThingSpeak.
-- Get the Channel API Keys from ThingSpeak, put its keys to the sketch.
-
-You can sign up with the [ThingSpeak sign-up page](https://thingspeak.com/users/sign_up). (You are entrusted with the final judgment of account creation for ThingSpeak. Create an account at your own risk.) And you can learn about other steps from the [explanation page](https://hieromon.github.io/AutoConnect/howtoembed.html#used-with-mqtt-as-a-client-application) of this example.
-
-### Obtaining the keys you need
-
-A mqttRSSI requires the following three key data. After completing the above preparation you should be able to get the three key data. Specify those key data to the `value` in each element of the `param.json` file in the `data` folder.
-
-#### Channel ID
-
-```json
-{
-  "name": "channelid",
-  "type": "ACInput",
-  "value": "",
-  "label": "Channel ID"
-}
-```
-
-#### User API key
-
-```json
-{
-  "name": "userkey",
-  "type": "ACInput",
-  "value": "",
-  "label": "User Key"
-}
-```
-
-#### Write API key
-
-```json
-{
-  "name": "apikey",
-  "type": "ACInput",
-  "value": "",
-  "label": "API Key"
-}
-```
-
-### Sketch data upload
-
-To `param.json` file upload to ESP8266/ESP32 flash memory, you need use the plugin tools as sketch data uploader. You can get one (or both) of the plugins below and upload the `param.json` file to the module.
-
-- [Arduino ESP8266 filesystem uploader](https://github.com/esp8266/arduino-esp8266fs-plugin)
-- [Arduino ESP32 filesystem uploader](https://github.com/me-no-dev/arduino-esp32fs-plugin)




diff --git a/lib/AutoConnect-master/examples/mqttRSSI/data/param.json b/lib/AutoConnect-master/examples/mqttRSSI/data/param.json
deleted file mode 100644
index a89b77ee8cd803f7be08edb78667c6fd9f7a179c..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/examples/mqttRSSI/data/param.json
+++ /dev/null
@@ -1,27 +0,0 @@
-[
-  {
-    "name": "mqttserver",
-    "type": "ACInput",
-    "value": "mqtt.thingspeak.com",
-    "placeholder": "MQTT broker server",
-    "label": "Server"
-  },
-  {
-    "name": "channelid",
-    "type": "ACInput",
-    "value": "",
-    "label": "Channel ID"
-  },
-  {
-    "name": "userkey",
-    "type": "ACInput",
-    "value": "",
-    "label": "User Key"
-  },
-  {
-    "name": "apikey",
-    "type": "ACInput",
-    "value": "",
-    "label": "API Key"
-  }
-]




diff --git a/lib/AutoConnect-master/examples/mqttRSSI/mqttRSSI.ino b/lib/AutoConnect-master/examples/mqttRSSI/mqttRSSI.ino
deleted file mode 100644
index 7954e74632403748d3af38f4f175a79db7b68f82..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/examples/mqttRSSI/mqttRSSI.ino
+++ /dev/null
@@ -1,405 +0,0 @@
-/*
-ESP8266/ESP32 publish the RSSI as the WiFi signal strength to ThingSpeak channel.
-This example is for explaining how to use the AutoConnect library.
-
-In order to execute this example, the ThingSpeak account is needed. Sing up
-for New User Account and create a New Channel via My Channels.
-For details, please refer to the project page.
-https://hieromon.github.io/AutoConnect/howtoembed.html#used-with-mqtt-as-a-client-application
-
-This example is based on the environment as of March 20, 2018.
-Copyright (c) 2018 Hieromon Ikasamo.
-This software is released under the MIT License.
-https://opensource.org/licenses/MIT
-*/
-
-#if defined(ARDUINO_ARCH_ESP8266)
-#include <ESP8266WiFi.h>
-#include <ESP8266HTTPClient.h>
-#define GET_CHIPID()  (ESP.getChipId())
-#elif defined(ARDUINO_ARCH_ESP32)
-#include <WiFi.h>
-#include <SPIFFS.h>
-#include <HTTPClient.h>
-#define GET_CHIPID()  ((uint16_t)(ESP.getEfuseMac()>>32))
-#endif
-#include <FS.h>
-#include <PubSubClient.h>
-#include <AutoConnect.h>
-
-#define PARAM_FILE      "/param.json"
-#define AUX_SETTING_URI "/mqtt_setting"
-#define AUX_SAVE_URI    "/mqtt_save"
-#define AUX_CLEAR_URI   "/mqtt_clear"
-
-// JSON definition of AutoConnectAux.
-// Multiple AutoConnectAux can be defined in the JSON array.
-// In this example, JSON is hard-coded to make it easier to understand
-// the AutoConnectAux API. In practice, it will be an external content
-// which separated from the sketch, as the mqtt_RSSI_FS example shows.
-static const char AUX_mqtt_setting[] PROGMEM = R"raw(
-[
-  {
-    "title": "MQTT Setting",
-    "uri": "/mqtt_setting",
-    "menu": true,
-    "element": [
-      {
-        "name": "header",
-        "type": "ACText",
-        "value": "<h2>MQTT broker settings</h2>",
-        "style": "text-align:center;color:#2f4f4f;padding:10px;"
-      },
-      {
-        "name": "caption",
-        "type": "ACText",
-        "value": "Publishing the WiFi signal strength to MQTT channel. RSSI value of ESP8266 to the channel created on ThingSpeak",
-        "style": "font-family:serif;color:#4682b4;"
-      },
-      {
-        "name": "mqttserver",
-        "type": "ACInput",
-        "value": "",
-        "label": "Server",
-        "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$",
-        "placeholder": "MQTT broker server"
-      },
-      {
-        "name": "channelid",
-        "type": "ACInput",
-        "label": "Channel ID",
-        "pattern": "^[0-9]{6}$"
-      },
-      {
-        "name": "userkey",
-        "type": "ACInput",
-        "label": "User Key"
-      },
-      {
-        "name": "apikey",
-        "type": "ACInput",
-        "label": "API Key"
-      },
-      {
-        "name": "newline",
-        "type": "ACElement",
-        "value": "<hr>"
-      },
-      {
-        "name": "uniqueid",
-        "type": "ACCheckbox",
-        "value": "unique",
-        "label": "Use APID unique",
-        "checked": false
-      },
-      {
-        "name": "period",
-        "type": "ACRadio",
-        "value": [
-          "30 sec.",
-          "60 sec.",
-          "180 sec."
-        ],
-        "label": "Update period",
-        "arrange": "vertical",
-        "checked": 1
-      },
-      {
-        "name": "newline",
-        "type": "ACElement",
-        "value": "<hr>"
-      },
-      {
-        "name": "hostname",
-        "type": "ACInput",
-        "value": "",
-        "label": "ESP host name",
-        "pattern": "^([a-zA-Z0-9]([a-zA-Z0-9-])*[a-zA-Z0-9]){1,24}$"
-      },
-      {
-        "name": "save",
-        "type": "ACSubmit",
-        "value": "Save&amp;Start",
-        "uri": "/mqtt_save"
-      },
-      {
-        "name": "discard",
-        "type": "ACSubmit",
-        "value": "Discard",
-        "uri": "/"
-      }
-    ]
-  },
-  {
-    "title": "MQTT Setting",
-    "uri": "/mqtt_save",
-    "menu": false,
-    "element": [
-      {
-        "name": "caption",
-        "type": "ACText",
-        "value": "<h4>Parameters saved as:</h4>",
-        "style": "text-align:center;color:#2f4f4f;padding:10px;"
-      },
-      {
-        "name": "parameters",
-        "type": "ACText"
-      },
-      {
-        "name": "clear",
-        "type": "ACSubmit",
-        "value": "Clear channel",
-        "uri": "/mqtt_clear"
-      }
-    ]
-  }
-]
-)raw";
-
-// Adjusting WebServer class with between ESP8266 and ESP32.
-#if defined(ARDUINO_ARCH_ESP8266)
-typedef ESP8266WebServer  WiFiWebServer;
-#elif defined(ARDUINO_ARCH_ESP32)
-typedef WebServer WiFiWebServer;
-#endif
-
-AutoConnect  portal;
-AutoConnectConfig config;
-WiFiClient   wifiClient;
-PubSubClient mqttClient(wifiClient);
-String  serverName;
-String  channelId;
-String  userKey;
-String  apiKey;
-String  apid;
-String  hostName;
-bool  uniqueid;
-unsigned int  updateInterval = 0;
-unsigned long lastPub = 0;
-
-#define MQTT_USER_ID  "anyone"
-
-bool mqttConnect() {
-  static const char alphanum[] = "0123456789"
-    "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-    "abcdefghijklmnopqrstuvwxyz";  // For random generation of client ID.
-  char    clientId[9];
-
-  uint8_t retry = 3;
-  while (!mqttClient.connected()) {
-    if (serverName.length() <= 0)
-      break;
-
-    mqttClient.setServer(serverName.c_str(), 1883);
-    Serial.println(String("Attempting MQTT broker:") + serverName);
-
-    for (uint8_t i = 0; i < 8; i++) {
-      clientId[i] = alphanum[random(62)];
-    }
-    clientId[8] = '\0';
-
-    if (mqttClient.connect(clientId, MQTT_USER_ID, userKey.c_str())) {
-      Serial.println("Established:" + String(clientId));
-      return true;
-    }
-    else {
-      Serial.println("Connection failed:" + String(mqttClient.state()));
-      if (!--retry)
-        break;
-      delay(3000);
-    }
-  }
-  return false;
-}
-
-void mqttPublish(String msg) {
-  String path = String("channels/") + channelId + String("/publish/") + apiKey;
-  mqttClient.publish(path.c_str(), msg.c_str());
-}
-
-int getStrength(uint8_t points) {
-  uint8_t sc = points;
-  long    rssi = 0;
-
-  while (sc--) {
-    rssi += WiFi.RSSI();
-    delay(20);
-  }
-  return points ? static_cast<int>(rssi / points) : 0;
-}
-
-void getParams(AutoConnectAux& aux) {
-  serverName = aux["mqttserver"].value;
-  serverName.trim();
-  channelId = aux["channelid"].value;
-  channelId.trim();
-  userKey = aux["userkey"].value;
-  userKey.trim();
-  apiKey = aux["apikey"].value;
-  apiKey.trim();
-  AutoConnectRadio& period = aux["period"].as<AutoConnectRadio>();
-  updateInterval = period.value().substring(0, 2).toInt() * 1000;
-  uniqueid = aux["uniqueid"].as<AutoConnectCheckbox>().checked;
-  hostName = aux["hostname"].value;
-  hostName.trim();
-}
-
-// Load parameters saved with  saveParams from SPIFFS into the
-// elements defined in /mqtt_setting JSON.
-String loadParams(AutoConnectAux& aux, PageArgument& args) {
-  (void)(args);
-  File param = SPIFFS.open(PARAM_FILE, "r");
-  if (param) {
-    if (aux.loadElement(param)) {
-      getParams(aux);
-      Serial.println(PARAM_FILE " loaded");
-    }
-    else
-      Serial.println(PARAM_FILE " failed to load");
-    param.close();
-  }
-  else {
-    Serial.println(PARAM_FILE " open failed");
-#ifdef ARDUINO_ARCH_ESP32
-    Serial.println("If you get error as 'SPIFFS: mount failed, -10025', Please modify with 'SPIFFS.begin(true)'.");
-#endif
-  }
-  return String("");
-}
-
-// Save the value of each element entered by '/mqtt_setting' to the
-// parameter file. The saveParams as below is a callback function of
-// /mqtt_save. When invoking this handler, the input value of each
-// element is already stored in '/mqtt_setting'.
-// In Sketch, you can output to stream its elements specified by name.
-String saveParams(AutoConnectAux& aux, PageArgument& args) {
-  // The 'where()' function returns the AutoConnectAux that caused
-  // the transition to this page.
-  AutoConnectAux&   mqtt_setting = *portal.aux(portal.where());
-  getParams(mqtt_setting);
-  AutoConnectInput& mqttserver = mqtt_setting["mqttserver"].as<AutoConnectInput>();
-
-  // The entered value is owned by AutoConnectAux of /mqtt_setting.
-  // To retrieve the elements of /mqtt_setting, it is necessary to get
-  // the AutoConnectAux object of /mqtt_setting.
-  File param = SPIFFS.open(PARAM_FILE, "w");
-  mqtt_setting.saveElement(param, { "mqttserver", "channelid", "userkey", "apikey", "uniqueid", "period", "hostname" });
-  param.close();
-
-  // Echo back saved parameters to AutoConnectAux page.
-  AutoConnectText&  echo = aux["parameters"].as<AutoConnectText>();
-  echo.value = "Server: " + serverName;
-  echo.value += mqttserver.isValid() ? String(" (OK)") : String(" (ERR)");
-  echo.value += "<br>Channel ID: " + channelId + "<br>";
-  echo.value += "User Key: " + userKey + "<br>";
-  echo.value += "API Key: " + apiKey + "<br>";
-  echo.value += "Update period: " + String(updateInterval / 1000) + " sec.<br>";
-  echo.value += "Use APID unique: " + String(uniqueid == true ? "true" : "false") + "<br>";
-  echo.value += "ESP host name: " + hostName + "<br>";
-
-  return String("");
-}
-
-void handleRoot() {
-  String  content =
-    "<html>"
-    "<head>"
-    "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">"
-    "</head>"
-    "<body>"
-    "<iframe width=\"450\" height=\"260\" style=\"transform:scale(0.79);-o-transform:scale(0.79);-webkit-transform:scale(0.79);-moz-transform:scale(0.79);-ms-transform:scale(0.79);transform-origin:0 0;-o-transform-origin:0 0;-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;border: 1px solid #cccccc;\" src=\"https://thingspeak.com/channels/454951/charts/1?bgcolor=%23ffffff&color=%23d62020&dynamic=true&type=line\"></iframe>"
-    "<p style=\"padding-top:5px;text-align:center\">" AUTOCONNECT_LINK(COG_24) "</p>"
-    "</body>"
-    "</html>";
-
-  WiFiWebServer&  webServer = portal.host();
-  webServer.send(200, "text/html", content);
-}
-
-// Clear channel using ThingSpeak's API.
-void handleClearChannel() {
-  HTTPClient  httpClient;
-  WiFiClient  client;
-  String  endpoint = serverName;
-  endpoint.replace("mqtt", "api");
-  String  delUrl = "http://" + endpoint + "/channels/" + channelId + "/feeds.json?api_key=" + userKey;
-
-  Serial.print("DELETE " + delUrl);
-  if (httpClient.begin(client, delUrl)) {
-    Serial.print(":");
-    int resCode = httpClient.sendRequest("DELETE");
-    String  res = httpClient.getString();
-    httpClient.end();
-    Serial.println(String(resCode) + "," + res);
-  }
-  else
-    Serial.println(" failed");
-
-  // Returns the redirect response.
-  WiFiWebServer&  webServer = portal.host();
-  webServer.sendHeader("Location", String("http://") + webServer.client().localIP().toString() + String("/"));
-  webServer.send(302, "text/plain", "");
-  webServer.client().flush();
-  webServer.client().stop();
-}
-
-void setup() {
-  delay(1000);
-  Serial.begin(115200);
-  Serial.println();
-  SPIFFS.begin();
-
-  if (portal.load(FPSTR(AUX_mqtt_setting))) {
-    AutoConnectAux& mqtt_setting = *portal.aux(AUX_SETTING_URI);
-    PageArgument  args;
-    loadParams(mqtt_setting, args);
-    if (uniqueid) {
-      config.apid = String("ESP") + "-" + String(GET_CHIPID(), HEX);
-      Serial.println("apid set to " + config.apid);
-    }
-    if (hostName.length()) {
-      config.hostName = hostName;
-      Serial.println("hostname set to " + config.hostName);
-    }
-    config.bootUri = AC_ONBOOTURI_HOME;
-    config.homeUri = "/";
-    portal.config(config);
-
-    portal.on(AUX_SETTING_URI, loadParams);
-    portal.on(AUX_SAVE_URI, saveParams);
-  }
-  else
-    Serial.println("load error");
-
-  Serial.print("WiFi ");
-  if (portal.begin()) {
-    Serial.println("connected:" + WiFi.SSID());
-    Serial.println("IP:" + WiFi.localIP().toString());
-  }
-  else {
-    Serial.println("connection failed:" + String(WiFi.status()));
-    Serial.println("Needs WiFi connection to start publishing messages");
-  }
-
-  WiFiWebServer&  webServer = portal.host();
-  webServer.on("/", handleRoot);
-  webServer.on(AUX_CLEAR_URI, handleClearChannel);
-}
-
-void loop() {
-  if (WiFi.status() == WL_CONNECTED) {
-    // MQTT publish control
-    if (updateInterval > 0) {
-      if (millis() - lastPub > updateInterval) {
-        if (!mqttClient.connected()) {
-          mqttConnect();
-        }
-        String item = String("field1=") + String(getStrength(7));
-        mqttPublish(item);
-        mqttClient.loop();
-        lastPub = millis();
-      }
-    }
-  }
-  portal.handleClient();
-}




diff --git a/lib/AutoConnect-master/examples/mqttRSSI_FS/data/mqtt_save.json b/lib/AutoConnect-master/examples/mqttRSSI_FS/data/mqtt_save.json
deleted file mode 100644
index 6c8c687e7d0f05b14bc203bf69f1748fd1a69399..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/examples/mqttRSSI_FS/data/mqtt_save.json
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-  "title": "MQTT Setting",
-  "uri": "/mqtt_save",
-  "menu": false,
-  "element": [
-    {
-      "name": "caption",
-      "type": "ACText",
-      "value": "<h4>Parameters saved as:</h4>",
-      "style": "text-align:center;color:#2f4f4f;padding:10px;"
-    },
-    {
-      "name": "parameters",
-      "type": "ACText"
-    },
-    {
-      "name": "clear",
-      "type": "ACSubmit",
-      "value": "Clear channel",
-      "uri": "/mqtt_clear"
-    }
-  ]
-}




diff --git a/lib/AutoConnect-master/examples/mqttRSSI_FS/data/mqtt_setting.json b/lib/AutoConnect-master/examples/mqttRSSI_FS/data/mqtt_setting.json
deleted file mode 100644
index 6e5efca0468d66afff14d035a89d807470bd599b..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/examples/mqttRSSI_FS/data/mqtt_setting.json
+++ /dev/null
@@ -1,86 +0,0 @@
-{
-  "title": "MQTT Setting",
-  "uri": "/mqtt_setting",
-  "menu": true,
-  "element": [
-    {
-      "name": "header",
-      "type": "ACText",
-      "value": "<h2>MQTT broker settings</h2>",
-      "style": "text-align:center;color:#2f4f4f;"
-    },
-    {
-      "name": "caption",
-      "type": "ACText",
-      "value": "Publishing the WiFi signal strength to MQTT channel. RSSI value of ESP8266 to the channel created on ThingSpeak",
-      "style": "font-family:serif;color:#4682b4;"
-    },
-    {
-      "name": "mqttserver",
-      "type": "ACInput",
-      "value": "",
-      "placeholder": "MQTT broker server",
-      "label": "Server"
-    },
-    {
-      "name": "channelid",
-      "type": "ACInput",
-      "value": "",
-      "label": "Channel ID"
-    },
-    {
-      "name": "userkey",
-      "type": "ACInput",
-      "value": "NRTFYGJ6TJFGX4RC",
-      "label": "User Key"
-    },
-    {
-      "name": "apikey",
-      "type": "ACInput",
-      "value": "",
-      "label": "API Key"
-    },
-    {
-      "name": "period",
-      "type": "ACRadio",
-      "label": "Update period",
-      "value": [
-        "30 sec.",
-        "60 sec.",
-        "180 sec."
-      ],
-      "arrange": "vertical",
-      "checked": 1
-    },
-    {
-      "name": "newline",
-      "type": "ACElement",
-      "value": "<hr>"
-    },
-    {
-      "name": "uniqueid",
-      "type": "ACCheckbox",
-      "value": "unique",
-      "label": "Use APID unique",
-      "checked": false
-    },
-    {
-      "name": "hostname",
-      "type": "ACInput",
-      "label": "ESP host name",
-      "value": ""
-    },
-    {
-      "name": "save",
-      "type": "ACSubmit",
-      "value": "Save&Start",
-      "uri": "/mqtt_save"
-    },
-    {
-      "name": "discard",
-      "type": "ACSubmit",
-      "value": "Discard",
-      "uri": "/"
-    }
-  ]
-}




diff --git a/lib/AutoConnect-master/examples/mqttRSSI_FS/data/param.json b/lib/AutoConnect-master/examples/mqttRSSI_FS/data/param.json
deleted file mode 100644
index a73599b79febac9a2305ff624839a7d979ce404f..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/examples/mqttRSSI_FS/data/param.json
+++ /dev/null
@@ -1,27 +0,0 @@
-[
-  {
-    "name": "mqttserver",
-    "type": "ACInput",
-    "value": "mqtt.thingspeak.com",
-    "placeholder": "MQTT broker server",
-    "label": "Server"
-  },
-  {
-    "name": "channelid",
-    "type": "ACInput",
-    "value": "454951",
-    "label": "Channel ID"
-  },
-  {
-    "name": "userkey",
-    "type": "ACInput",
-    "value": "NRTFYGJ6TJFGX4RC",
-    "label": "User Key"
-  },
-  {
-    "name": "apikey",
-    "type": "ACInput",
-    "value": "HBVQ2XV6VYBI4582",
-    "label": "API Key"
-  }
-]




diff --git a/lib/AutoConnect-master/examples/mqttRSSI_FS/mqttRSSI_FS.ino b/lib/AutoConnect-master/examples/mqttRSSI_FS/mqttRSSI_FS.ino
deleted file mode 100644
index 4e6ec160f7bf337440a28f6e6349a62ee2d64360..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/examples/mqttRSSI_FS/mqttRSSI_FS.ino
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
-  ESP8266/ESP32 publish the RSSI as the WiFi signal strength to ThingSpeak channel.
-  This example is for explaining how to use the AutoConnect library.
-
-  In order to execute this example, the ThingSpeak account is needed. Sing up
-  for New User Account and create a New Channel via My Channels.
-  For details, please refer to the project page.
-  https://hieromon.github.io/AutoConnect/howtoembed.html#used-with-mqtt-as-a-client-application
-
-  Also, this example uses AutoConnectAux menu customization which stored in SPIFFS.
-  To evaluate this example, you upload the contents as mqtt_setting.json of
-  the data folder with MkSPIFFS Tool ("ESP8266 Sketch Data Upload" in Tools menu
-  in Arduino IDE).
-
-  This example is based on the thinkspeak.com environment as of Dec. 20, 2018.
-  Copyright (c) 2018 Hieromon Ikasamo.
-  This software is released under the MIT License.
-  https://opensource.org/licenses/MIT
-*/
-
-#if defined(ARDUINO_ARCH_ESP8266)
-#include <ESP8266WiFi.h>
-#include <ESP8266HTTPClient.h>
-#define GET_CHIPID()  (ESP.getChipId())
-#elif defined(ARDUINO_ARCH_ESP32)
-#include <WiFi.h>
-#include <WebServer.h>
-#include <SPIFFS.h>
-#include <HTTPClient.h>
-#define GET_CHIPID()  ((uint16_t)(ESP.getEfuseMac()>>32))
-#endif
-#include <FS.h>
-#include <PubSubClient.h>
-#include <AutoConnect.h>
-
-#define PARAM_FILE      "/param.json"
-#define AUX_MQTTSETTING "/mqtt_setting"
-#define AUX_MQTTSAVE    "/mqtt_save"
-#define AUX_MQTTCLEAR   "/mqtt_clear"
-
-// Adjusting WebServer class with between ESP8266 and ESP32.
-#if defined(ARDUINO_ARCH_ESP8266)
-typedef ESP8266WebServer  WiFiWebServer;
-#elif defined(ARDUINO_ARCH_ESP32)
-typedef WebServer WiFiWebServer;
-#endif
-
-AutoConnect  portal;
-AutoConnectConfig config;
-WiFiClient   wifiClient;
-PubSubClient mqttClient(wifiClient);
-String  serverName;
-String  channelId;
-String  userKey;
-String  apiKey;
-String  apid;
-String  hostName;
-unsigned int  updateInterval = 0;
-unsigned long lastPub = 0;
-
-#define MQTT_USER_ID  "anyone"
-
-bool mqttConnect() {
-  static const char alphanum[] = "0123456789"
-                                 "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-                                 "abcdefghijklmnopqrstuvwxyz";  // For random generation of client ID.
-  char    clientId[9];
-
-  uint8_t retry = 3;
-  while (!mqttClient.connected()) {
-    if (serverName.length() <= 0)
-      break;
-
-    mqttClient.setServer(serverName.c_str(), 1883);
-    Serial.println(String("Attempting MQTT broker:") + serverName);
-
-    for (uint8_t i = 0; i < 8; i++) {
-      clientId[i] = alphanum[random(62)];
-    }
-    clientId[8] = '\0';
-
-    if (mqttClient.connect(clientId, MQTT_USER_ID, userKey.c_str())) {
-      Serial.println("Established:" + String(clientId));
-      return true;
-    } else {
-      Serial.println("Connection failed:" + String(mqttClient.state()));
-      if (!--retry)
-        break;
-      delay(3000);
-    }
-  }
-  return false;
-}
-
-void mqttPublish(String msg) {
-  String path = String("channels/") + channelId + String("/publish/") + apiKey;
-  mqttClient.publish(path.c_str(), msg.c_str());
-}
-
-int getStrength(uint8_t points) {
-  uint8_t sc = points;
-  long    rssi = 0;
-
-  while (sc--) {
-    rssi += WiFi.RSSI();
-    delay(20);
-  }
-  return points ? static_cast<int>(rssi / points) : 0;
-}
-
-String loadParams(AutoConnectAux& aux, PageArgument& args) {
-  (void)(args);
-  File param = SPIFFS.open(PARAM_FILE, "r");
-  if (param) {
-    aux.loadElement(param);
-    param.close();
-  }
-  else
-    Serial.println(PARAM_FILE " open failed");
-  return String("");
-}
-
-String saveParams(AutoConnectAux& aux, PageArgument& args) {
-  serverName = args.arg("mqttserver");
-  serverName.trim();
-
-  channelId = args.arg("channelid");
-  channelId.trim();
-  
-  userKey = args.arg("userkey");
-  userKey.trim();
-  
-  apiKey = args.arg("apikey");
-  apiKey.trim();
-  
-  String upd = args.arg("period");
-  updateInterval = upd.substring(0, 2).toInt() * 1000;
-
-  String uniqueid = args.arg("uniqueid");
-
-  hostName = args.arg("hostname");
-  hostName.trim();
-  
-  // The entered value is owned by AutoConnectAux of /mqtt_setting.
-  // To retrieve the elements of /mqtt_setting, it is necessary to get
-  // the AutoConnectAux object of /mqtt_setting.
-  File param = SPIFFS.open(PARAM_FILE, "w");
-  portal.aux("/mqtt_setting")->saveElement(param, { "mqttserver", "channelid", "userkey", "apikey", "period", "uniqueid", "hostname" });
-  param.close();
-
-  // Echo back saved parameters to AutoConnectAux page.
-  AutoConnectText&  echo = aux["parameters"].as<AutoConnectText>();
-  echo.value = "Server: " + serverName + "<br>";
-  echo.value += "Channel ID: " + channelId + "<br>";
-  echo.value += "User Key: " + userKey + "<br>";
-  echo.value += "API Key: " + apiKey + "<br>";
-  echo.value += "Update period: " + String(updateInterval / 1000) + " sec.<br>";
-  echo.value += "Use APID unique: " + uniqueid + "<br>";
-  echo.value += "ESP host name: " + hostName + "<br>";
-
-  return String("");
-}
-
-void handleRoot() {
-  String  content =
-    "<html>"
-    "<head>"
-    "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">"
-    "</head>"
-    "<body>"
-    "<iframe width=\"450\" height=\"260\" style=\"transform:scale(0.79);-o-transform:scale(0.79);-webkit-transform:scale(0.79);-moz-transform:scale(0.79);-ms-transform:scale(0.79);transform-origin:0 0;-o-transform-origin:0 0;-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;border: 1px solid #cccccc;\" src=\"https://thingspeak.com/channels/454951/charts/1?bgcolor=%23ffffff&color=%23d62020&dynamic=true&type=line\"></iframe>"
-    "<p style=\"padding-top:10px;text-align:center\">" AUTOCONNECT_LINK(COG_24) "</p>"
-    "</body>"
-    "</html>";
-
-  WiFiWebServer&  webServer = portal.host();
-  webServer.send(200, "text/html", content);
-}
-
-// Clear channel using Thingspeak's API.
-void handleClearChannel() {
-  HTTPClient  httpClient;
-  WiFiClient  client;
-  String  endpoint = serverName;
-  endpoint.replace("mqtt", "api");
-  String  delUrl = "http://" + endpoint + "/channels/" + channelId + "/feeds.json?api_key=" + userKey;
-
-  Serial.print("DELETE " + delUrl);
-  if (httpClient.begin(client, delUrl)) {
-    Serial.print(":");
-    int resCode = httpClient.sendRequest("DELETE");
-    String  res = httpClient.getString();
-    httpClient.end();
-    Serial.println(String(resCode) + "," + res);
-  }
-  else
-    Serial.println(" failed");
-
-  // Returns the redirect response. The page is reloaded and its contents
-  // are updated to the state after deletion.
-  WiFiWebServer&  webServer = portal.host();
-  webServer.sendHeader("Location", String("http://") + webServer.client().localIP().toString() + String("/"));
-  webServer.send(302, "text/plain", "");
-  webServer.client().flush();
-  webServer.client().stop();
-}
-
-// Load AutoConnectAux JSON from SPIFFS.
-bool loadAux(const String auxName) {
-  bool  rc = false;
-  String  fn = auxName + ".json";
-  File fs = SPIFFS.open(fn.c_str(), "r");
-  if (fs) {
-    rc = portal.load(fs);
-    fs.close();
-  }
-  else
-    Serial.println("SPIFFS open failed: " + fn);
-  return rc;
-}
-
-void setup() {
-  delay(1000);
-  Serial.begin(115200);
-  Serial.println();
-  SPIFFS.begin();
-
-  loadAux(AUX_MQTTSETTING);
-  loadAux(AUX_MQTTSAVE);
-
-  AutoConnectAux* setting = portal.aux(AUX_MQTTSETTING);
-  if (setting) {
-    PageArgument  args;
-    AutoConnectAux& mqtt_setting = *setting;
-    loadParams(mqtt_setting, args);
-    AutoConnectCheckbox&  uniqueidElm = mqtt_setting["uniqueid"].as<AutoConnectCheckbox>();
-    AutoConnectInput&     hostnameElm = mqtt_setting["hostname"].as<AutoConnectInput>();
-    if (uniqueidElm.checked) {
-      config.apid = String("ESP") + "-" + String(GET_CHIPID(), HEX);
-      Serial.println("apid set to " + config.apid);
-    }
-    if (hostnameElm.value.length()) {
-      config.hostName = hostnameElm.value;
-      Serial.println("hostname set to " + config.hostName);
-    }
-    config.bootUri = AC_ONBOOTURI_HOME;
-    config.homeUri = "/";
-    portal.config(config);
-
-    portal.on(AUX_MQTTSETTING, loadParams);
-    portal.on(AUX_MQTTSAVE, saveParams);
-  }
-  else
-    Serial.println("aux. load error");
-
-  Serial.print("WiFi ");
-  if (portal.begin()) {
-    Serial.println("connected:" + WiFi.SSID());
-    Serial.println("IP:" + WiFi.localIP().toString());
-  } else {
-    Serial.println("connection failed:" + String(WiFi.status()));
-    while (1) {
-      delay(100);
-      yield();
-    }
-  }
-
-  WiFiWebServer&  webServer = portal.host();
-  webServer.on("/", handleRoot);
-  webServer.on(AUX_MQTTCLEAR, handleClearChannel);
-}
-
-void loop() {
-  portal.handleClient();
-  if (updateInterval > 0) {
-    if (millis() - lastPub > updateInterval) {
-      if (!mqttClient.connected()) {
-        mqttConnect();
-      }
-      String item = String("field1=") + String(getStrength(7));
-      mqttPublish(item);
-      mqttClient.loop();
-      lastPub = millis();
-    }
-  }
-}




diff --git a/lib/AutoConnect-master/examples/mqttRSSI_NA/mqttRSSI_NA.ino b/lib/AutoConnect-master/examples/mqttRSSI_NA/mqttRSSI_NA.ino
deleted file mode 100644
index 2c0dd2c6b7bd1be1ec533edc51b57fc5385e531c..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/examples/mqttRSSI_NA/mqttRSSI_NA.ino
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
-ESP8266/ESP32 publish the RSSI as the WiFi signal strength to ThingSpeak channel.
-This example is for explaining how to use the AutoConnect library.
-
-In order to execute this example, the ThingSpeak account is needed. Sing up
-for New User Account and create a New Channel via My Channels.
-For details, please refer to the project page.
-https://hieromon.github.io/AutoConnect/howtoembed.html#used-with-mqtt-as-a-client-application
-
-This example is based on the environment as of March 20, 2018.
-Copyright (c) 2018 Hieromon Ikasamo.
-This software is released under the MIT License.
-https://opensource.org/licenses/MIT
-*/
-
-#if defined(ARDUINO_ARCH_ESP8266)
-#include <ESP8266WiFi.h>
-#include <ESP8266HTTPClient.h>
-#define GET_CHIPID()  (ESP.getChipId())
-#elif defined(ARDUINO_ARCH_ESP32)
-#include <WiFi.h>
-#include <SPIFFS.h>
-#include <HTTPClient.h>
-#define GET_CHIPID()  ((uint16_t)(ESP.getEfuseMac()>>32))
-#endif
-#include <FS.h>
-#include <PubSubClient.h>
-#include <AutoConnect.h>
-
-#define PARAM_FILE      "/param.json"
-#define AUX_SETTING_URI "/mqtt_setting"
-#define AUX_SAVE_URI    "/mqtt_save"
-#define AUX_CLEAR_URI   "/mqtt_clear"
-
-// Adjusting WebServer class with between ESP8266 and ESP32.
-#if defined(ARDUINO_ARCH_ESP8266)
-typedef ESP8266WebServer  WiFiWebServer;
-#elif defined(ARDUINO_ARCH_ESP32)
-typedef WebServer WiFiWebServer;
-#endif
-
-// This example shows a sketch that realizes the equivalent operation
-// of mqttRSSI without using JSON.
-// By comparing this example with the example using JSON, mqttRSSI or
-// mqttRSSI_FS, you will better understand AutoConnect's custom Web page
-// facility.
-
-// Declare AutoConnectElements for the page asf /mqtt_setting
-ACText(header, "<h2>MQTT broker settings</h2>", "text-align:center;color:#2f4f4f;padding:10px;");
-ACText(caption, "Publishing the WiFi signal strength to MQTT channel. RSSI value of ESP8266 to the channel created on ThingSpeak", "font-family:serif;color:#4682b4;");
-ACInput(mqttserver, "", "Server", "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$", "MQTT broker server");
-ACInput(channelid, "", "Channel ID", "^[0-9]{6}$");
-ACInput(userkey, "", "User Key");
-ACInput(apikey, "", "API Key");
-ACElement(newline, "<hr>");
-ACCheckbox(uniqueid, "unique", "Use APID unique");
-ACRadio(period, { "30 sec.", "60 sec.", "180 sec." }, "Update period", AC_Vertical, 1);
-ACSubmit(save, "Start", AUX_SAVE_URI);
-ACSubmit(discard, "Discard", "/");
-
-// Declare the custom Web page as /mqtt_setting and contains the AutoConnectElements
-AutoConnectAux mqtt_setting(AUX_SETTING_URI, "MQTT Setting", true, {
-  header,
-  caption,
-  mqttserver,
-  channelid,
-  userkey,
-  apikey,
-  newline,
-  uniqueid,
-  period,
-  newline,
-  save,
-  discard
-});
-
-// Declare AutoConnectElements for the page as /mqtt_save
-ACText(caption2, "<h4>Parameters available as:</h4>", "text-align:center;color:#2f4f4f;padding:10px;");
-ACText(parameters);
-ACSubmit(clear, "Clear channel", AUX_CLEAR_URI);
-
-// Declare the custom Web page as /mqtt_save and contains the AutoConnectElements
-AutoConnectAux mqtt_save(AUX_SAVE_URI, "MQTT Setting", false, {
-  caption2,
-  parameters,
-  clear
-});
-
-AutoConnect  portal;
-AutoConnectConfig config;
-WiFiClient   wifiClient;
-PubSubClient mqttClient(wifiClient);
-
-unsigned int  updateInterval = 0;
-unsigned long lastPub = 0;
-
-#define MQTT_USER_ID  "anyone"
-
-bool mqttConnect() {
-  static const char alphanum[] = "0123456789"
-    "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
-    "abcdefghijklmnopqrstuvwxyz";  // For random generation of client ID.
-  char    clientId[9];
-
-  uint8_t retry = 3;
-  while (!mqttClient.connected()) {
-    if (mqttserver.value.length() <= 0)
-      break;
-
-    mqttClient.setServer(mqttserver.value.c_str(), 1883);
-    Serial.println(String("Attempting MQTT broker:") + mqttserver.value);
-
-    for (uint8_t i = 0; i < 8; i++) {
-      clientId[i] = alphanum[random(62)];
-    }
-    clientId[8] = '\0';
-
-    if (mqttClient.connect(clientId, MQTT_USER_ID, userkey.value.c_str())) {
-      Serial.println("Established:" + String(clientId));
-      return true;
-    }
-    else {
-      Serial.println("Connection failed:" + String(mqttClient.state()));
-      if (!--retry)
-        break;
-      delay(3000);
-    }
-  }
-  return false;
-}
-
-void mqttPublish(String msg) {
-  String path = String("channels/") + channelid.value + String("/publish/") + apikey.value;
-  mqttClient.publish(path.c_str(), msg.c_str());
-}
-
-int getStrength(uint8_t points) {
-  uint8_t sc = points;
-  long    rssi = 0;
-
-  while (sc--) {
-    rssi += WiFi.RSSI();
-    delay(20);
-  }
-  return points ? static_cast<int>(rssi / points) : 0;
-}
-
-// Retreive the value of each element entered by '/mqtt_setting'.
-String saveParams(AutoConnectAux& aux, PageArgument& args) {
-  mqttserver.value.trim();
-  channelid.value.trim();
-  userkey.value.trim();
-  apikey.value.trim();
-  updateInterval = period.value().substring(0, 2).toInt() * 1000;
-
-  // Echo back saved parameters to AutoConnectAux page.
-  String echo = "Server: " + mqttserver.value + "<br>";
-  echo += "Channel ID: " + channelid.value + "<br>";
-  echo += "User Key: " + userkey.value + "<br>";
-  echo += "API Key: " + apikey.value + "<br>";
-  echo += "Update period: " + String(updateInterval / 1000) + " sec.<br>";
-  echo += "Use APID unique: " + String(uniqueid.checked == true ? "true" : "false") + "<br>";
-  parameters.value = echo;
-
-  return String("");
-}
-
-void handleRoot() {
-  String  content =
-    "<html>"
-    "<head>"
-    "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">"
-    "</head>"
-    "<body>"
-    "<iframe width=\"450\" height=\"260\" style=\"transform:scale(0.79);-o-transform:scale(0.79);-webkit-transform:scale(0.79);-moz-transform:scale(0.79);-ms-transform:scale(0.79);transform-origin:0 0;-o-transform-origin:0 0;-webkit-transform-origin:0 0;-moz-transform-origin:0 0;-ms-transform-origin:0 0;border: 1px solid #cccccc;\" src=\"https://thingspeak.com/channels/454951/charts/1?bgcolor=%23ffffff&color=%23d62020&dynamic=true&type=line\"></iframe>"
-    "<p style=\"padding-top:5px;text-align:center\">" AUTOCONNECT_LINK(COG_24) "</p>"
-    "</body>"
-    "</html>";
-
-  WiFiWebServer&  webServer = portal.host();
-  webServer.send(200, "text/html", content);
-}
-
-// Clear channel using ThingSpeak's API.
-void handleClearChannel() {
-  HTTPClient  httpClient;
-  WiFiClient  client;
-  String  endpoint = mqttserver.value;
-  endpoint.replace("mqtt", "api");
-  String  delUrl = "http://" + endpoint + "/channels/" + channelid.value + "/feeds.json?api_key=" + userkey.value;
-
-  Serial.print("DELETE " + delUrl);
-  if (httpClient.begin(client, delUrl)) {
-    Serial.print(":");
-    int resCode = httpClient.sendRequest("DELETE");
-    String  res = httpClient.getString();
-    httpClient.end();
-    Serial.println(String(resCode) + "," + res);
-  }
-  else
-    Serial.println(" failed");
-
-  // Returns the redirect response.
-  WiFiWebServer&  webServer = portal.host();
-  webServer.sendHeader("Location", String("http://") + webServer.client().localIP().toString() + String("/"));
-  webServer.send(302, "text/plain", "");
-  webServer.client().flush();
-  webServer.client().stop();
-}
-
-void setup() {
-  delay(1000);
-  Serial.begin(115200);
-  Serial.println();
-  SPIFFS.begin();
-
-  if (uniqueid.checked) {
-    config.apid = String("ESP") + "-" + String(GET_CHIPID(), HEX);
-    Serial.println("apid set to " + config.apid);
-  }
-
-  config.bootUri = AC_ONBOOTURI_HOME;
-  config.homeUri = "/";
-  portal.config(config);
-
-  // Join the custom Web pages and register /mqtt_save handler
-  portal.join({ mqtt_setting, mqtt_save });
-  portal.on(AUX_SAVE_URI, saveParams);
-
-  Serial.print("WiFi ");
-  if (portal.begin()) {
-    Serial.println("connected:" + WiFi.SSID());
-    Serial.println("IP:" + WiFi.localIP().toString());
-  }
-  else {
-    Serial.println("connection failed:" + String(WiFi.status()));
-    while (1) {
-      delay(100);
-      yield();
-    }
-  }
-
-  WiFiWebServer&  webServer = portal.host();
-  webServer.on("/", handleRoot);
-  webServer.on(AUX_CLEAR_URI, handleClearChannel);
-}
-
-void loop() {
-  portal.handleClient();
-  if (updateInterval > 0) {
-    if (millis() - lastPub > updateInterval) {
-      if (!mqttClient.connected()) {
-        mqttConnect();
-      }
-      String item = String("field1=") + String(getStrength(7));
-      mqttPublish(item);
-      mqttClient.loop();
-      lastPub = millis();
-    }
-  }
-}




diff --git a/lib/AutoConnect-master/keywords.txt b/lib/AutoConnect-master/keywords.txt
deleted file mode 100644
index e54c76eb010098a96d14d1b9fe8815fd2c02c0dd..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/keywords.txt
+++ /dev/null
@@ -1,87 +0,0 @@
-#######################################
-# Datatypes (KEYWORD1)
-#######################################
-AutoConnect	KEYWORD1
-AutoConnectConfig	KEYWORD1
-AutoConnectCredential	KEYWORD1
-AutoConnectAux	KEYWORD1
-AutoConnectButton	KEYWORD1
-AutoConnectCheckbox	KEYWORD1
-AutoConnectElement	KEYWORD1
-AutoConnectFile	KEYWORD1
-AutoConnectInput	KEYWORD1
-AutoConnectRadio	KEYWORD1
-AutoConnectSelect	KEYWORD1
-AutoConnectSubmit	KEYWORD1
-AutoConnectText	KEYWORD1
-
-#######################################
-# Methods and Functions (KEYWORD2)
-#######################################
-add	KEYWORD2
-aux	KEYWORD2
-config	KEYWORD2
-begin	KEYWORD2
-del	KEYWORD2
-end	KEYWORD2
-entries	KEYWORD2
-getElement	KEYWORD2
-getElements	KEYWORD2
-handleClient	KEYWORD2
-handleRequest	KEYWORD2
-home	KEYWORD2
-host	KEYWORD2
-isValid	KEYWORD2
-join	KEYWORD2
-load	KEYWORD2
-loadElement	KEYWORD2
-menu	KEYWORD2
-name	KEYWORD2
-on	KEYWORD2
-onDetect	KEYWORD2
-onNotFound	KEYWORD2
-onUpload	KEYWORD2
-release	KEYWORD2
-save	KEYWORD2
-saveElement	KEYWORD2
-setElementValue	KEYWORD2
-setTitle	KEYWORD2
-toHTML	KEYWORD2
-typeOf	KEYWORD2
-value	KEYWORD2
-where	KEYWORD2
-
-#######################################
-# Literals (KEYWORD3)
-#######################################
-AC_WEBSERVER_PARASITIC	LITERAL1
-AC_WEBSERVER_HOSTED	LITERAL1
-AC_SAVECREDENTIAL_NEVER	LITERAL1
-AC_SAVECREDENTIAL_AUTO	LITERAL1
-AC_URIONBOOT_ROOT	LITERAL1
-AC_URIONBOOT_HOME	LITERAL1
-AC_EXIT_AHEAD	LITERAL1
-AC_EXIT_LATER	LITERAL1
-AC_EXIT_BOTH	LITERAL1
-AC_Button	LITERAL1
-AC_Checkbox	LITERAL1
-AC_Element	LITERAL1
-AC_File	LITERAL1
-AC_Input	LITERAL1
-AC_Radio	LITERAL1
-AC_Select	LITERAL1
-AC_Submit	LITERAL1
-AC_Text	LITERAL1
-
-#######################################
-# PREPROCESSOR (KEYWORD3)
-#######################################
-ACButton	PREPROCESSOR
-ACCheckbox	PREPROCESSOR
-ACElement	PREPROCESSOR
-ACFile	PREPROCESSOR
-ACInput	PREPROCESSOR
-ACRadio PREPROCESSOR
-ACSelect	PREPROCESSOR
-ACSubmit	PREPROCESSOR
-ACText	PREPROCESSOR




diff --git a/lib/AutoConnect-master/library.json b/lib/AutoConnect-master/library.json
deleted file mode 100644
index 42af5187ecd06cb08edc522f4d6cb29ce9215f03..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/library.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
-  "name": "AutoConnect",
-  "keywords": "communication, http, server, web, wifi, wi-fi",
-  "description": "ESP8266/ESP32 WLAN configuration at runtime with web interface.",
-  "homepage": "https://hieromon.github.io/AutoConnect",
-  "repository":
-  {
-    "type": "git",
-    "url": "https://github.com/Hieromon/AutoConnect.git"
-  },
-  "dependencies":
-  [
-    {
-      "name": "PageBuilder",
-      "version": ">=1.3.3"
-    },
-    {
-      "name": "ArduinoJson",
-      "version": ">=5.13.3"
-    }
-  ],
-  "frameworks": "arduino",
-  "platforms":
-  [
-    "espressif8266",
-    "espressif32"
-  ],
-  "version": "0.9.10",
-  "license": "MIT"
-}




diff --git a/lib/AutoConnect-master/library.properties b/lib/AutoConnect-master/library.properties
deleted file mode 100644
index 55f0c054e26ea09541245c602ee916783a0ed396..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/library.properties
+++ /dev/null
@@ -1,11 +0,0 @@
-name=AutoConnect
-version=0.9.10
-author=Hieromon Ikasamo <[email protected]>
-maintainer=Hieromon Ikasamo <[email protected]>
-sentence=ESP8266/ESP32 WLAN configuration at runtime with web interface.
-paragraph=A library for easy implementing the Web interface constituting the WLAN for ESP8266 WiFi connection. With this library to make a sketch which connects from ESP8266 to the access point at runtime by the web interface without hardcoded SSID and password.
-category=Communication
-url=https://github.com/Hieromon/AutoConnect.git
-dependencies=PageBuilder
-architectures=esp8266, esp32
-includes=AutoConnect.h




diff --git a/lib/AutoConnect-master/mkdocs/acelements.md b/lib/AutoConnect-master/mkdocs/acelements.md
deleted file mode 100644
index 4371067c92b7c5d1a582d5a17daa98869a4b4822..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/acelements.md
+++ /dev/null
@@ -1,429 +0,0 @@
-## The elements for the custom Web pages
-
-Representative HTML elements for making the custom Web page are provided as AutoConnectElements.
-
-- [AutoConnectButton](#autoconnectbutton): Labeled action button
-- [AutoConnectCheckbox](#autoconnectcheckbox): Labeled checkbox
-- [AutoConnectElement](#autoconnectelement-a-basic-class-of-elements): General tag
-- [AutoConnectFile](#autoconnectfile): File uploader
-- [AutoConnectInput](#autoconnectinput): Labeled text input box
-- [AutoConnectRadio](#autoconnectradio): Labeled radio button
-- [AutoConnectSelect](#autoconnectselect): Selection list
-- [AutoConnectSubmit](#autoconnectsubmit): Submit button
-- [AutoConnectText](#autoconnecttext): Style attributed text
-
-## Layout on a custom Web page
-
-The elements of the page created by AutoConnectElements are aligned vertically exclude the [AutoConnectRadio](#autoconnectradio). You can specify the direction to arrange the radio buttons as AutoConnectRadio vertically or horizontally. This basic layout depends on the CSS of the AutoConnect menu so you can not change drastically.
-
-## Form and AutoConnectElements
-
-All AutoConnectElements placed on custom web pages will be contained into one form. Its form is fixed and created by AutoConnect. The form value (usually the text or checkbox you entered) is sent by [AutoConnectSubmit](#autoconnectsubmit) using the **POST** method with HTTP. The post method sends the actual form data which is a query string whose contents are the **name** and **value** of AutoConnectElements. You can retrieve the value for the parameter with the sketch from the query string with [ESP8266WebServer::arg](https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer#getting-information-about-request-arguments) function or [PageArgument](https://github.com/Hieromon/PageBuilder#arguments-of-invoked-user-function) class of the [AutoConnect::on](api.md#on) handler when the form is submitted.
-
-## AutoConnectElement - <small>A basic class of elements</small>
-
-AutoConnectElement is a base class for other element classes and has common attributes for all elements. It can also be used as a [variant](#variant-for-autoconnectelements) of each element. The following items are attributes that AutoConnectElement has and are common to other elements.
-
-<i class="fa fa-eye"></i> **Sample**<br>
-<small>**`AutoConnectElement element("element", "<hr>");`**</small>
-
-<small>On the page:</small><br><img src="images/acelement.png">
-
-### <i class="fa fa-edit"></i> Constructor
-
-```cpp
-AutoConnectElement(const char* name, const char* value)
-```
-
-### <i class="fa fa-caret-right"></i> name
-
-Each element has a name. The **name** is the String data type. You can identify each element by the name to access it with sketches. 
-
-### <i class="fa fa-caret-right"></i> value
-
-The **value** is the string which is a source to generate an HTML code. Characteristics of Value vary depending on the element. The value of AutoConnectElement is native HTML code. A string of value is output as HTML as it is.
-
-### <i class="fa fa-caret-right"></i> type
-
-The **type** indicates the type of the element and represented as the *ACElement_t* enumeration type in the sketch. Since AutoConnectElement also acts as a variant of other elements, it can be applied to handle elements collectively. At that time, the type can be referred to by the [**typeOf()**](apielements.md#typeof) function. The following example changes the font color of all [AutoConnectText](#autoconnecttext) elements of a custom Web page to gray.
-
-```cpp hl_lines="5"
-AutoConnectAux  customPage;
-
-AutoConnectElementVT& elements = customPage.getElements();
-for (AutoConnectElement& elm : elements) {
-  if (elm.typeOf() == AC_Text) {
-    AutoConnectText& text = reinterpret_cast<AutoConnectText&>(elm);
-    text.style = "color:gray;";
-  }
-}
-```
-
-The enumerators for *ACElement_t* are as follows:
-
--  AutoConnectButton: **AC_Button**
--  AutoConnectCheckbox: **AC_Checkbox** 
--  AutoConnectElement: **AC_Element**
--  AutoConnectFile: **AC_File**
--  AutoConnectInput: **AC_Input**
--  AutoConnectRadio: **AC_Radio**
--  AutoConnectSelect: **AC_Select**
--  AutoConnectSubmit: **AC_Submit**
--  AutoConnectText: **AC_Text**
--  Uninitialized element: **AC_Unknown**
-
-Furthermore, to convert an entity that is not an AutoConnectElement to its native type, you must [re-interpret](https://en.cppreference.com/w/cpp/language/reinterpret_cast) that type with c++. Or, you can be coding the sketch more easily with using the [**as<T\>**](apielements.md#ast62) function.
-
-```cpp hl_lines="6"
-AutoConnectAux  customPage;
-
-AutoConnectElementVT& elements = customPage.getElements();
-for (AutoConnectElement& elm : elements) {
-  if (elm.type() == AC_Text) {
-    AutoConnectText& text = customPage[elm.name].as<AutoConnectText>();
-    text.style = "color:gray;";
-    // Or, it is also possible to write the code further reduced as follows.
-    // customPage[elm.name].as<AutoConnectText>().style = "color:gray;";
-  }
-}
-```
-
-## AutoConnectButton
-
-AutoConnectButton generates an HTML `#!html <button type="button">` tag and locates a clickable button to a custom Web page. Currently AutoConnectButton corresponds only to name, value, an *onclick* attribute of HTML button tag. An *onclick* attribute is generated from an `action` member variable of the AutoConnectButton, which is mostly used with a JavaScript to activate a script.
-
-<i class="fa fa-eye"></i> **Sample**<br>
-<small>**`AutoConnectButton button("button", "OK", "myFunction()");`**</small>
-
-<small>On the page:</small><br><img src="images/acbutton.png">
-
-### <i class="fa fa-edit"></i> Constructor
-
-```cpp
-AutoConnectButton(const char* name, const char* value, const String& action)
-```
-
-### <i class="fa fa-caret-right"></i> name
-
-It is the `name` of the AutoConnectButton element and matches the name attribute of the button tag. It also becomes the parameter name of the query string when submitted.
-
-### <i class="fa fa-caret-right"></i> value
-
-It becomes a value of the `value` attribute of an HTML button tag.
-
-### <i class="fa fa-caret-right"></i> action
-
-**action** is String data type and is an *onclick* attribute fire on a mouse click on the element. It is mostly used with a JavaScript to activate a script.[^1] For example, the following code defines a custom Web page that copies a content of `Text1` to `Text2` by clicking `Button`.
-
-[^1]:JavaScript can be inserted into a custom Web page using AutoConnectElement.
-
-```cpp hl_lines="3 4 5 10"
-const char* scCopyText = R"(
-<script>
-function CopyText() {
-  document.getElementById("Text2").value = document.getElementById("Text1").value;
-}
-</script>
-)";
-ACInput(Text1, "Text1");
-ACInput(Text2, "Text2");
-ACButton(Button, "COPY", "CopyText()");
-ACElement(TextCopy, scCopyText);
-```
-
-## AutoConnectCheckbox
-
-AutoConnectCheckbox generates an HTML `#!html <input type="checkbox">` tag and a `#!html <label>` tag. It places horizontally on a custom Web page by default.
-
-<i class="fa fa-eye"></i> **Sample**<br>
-<small>**`AutoConnectCheckbox checkbox("checkbox", "uniqueapid", "Use APID unique", false);`**</small>
-
-<small>On the page:</small><br><img src="images/accheckbox.png">
-
-### <i class="fa fa-edit"></i> Constructor
-
-```cpp
-AutoConnectCheckbox(const char* name, const char* value, const char* label, const bool checked)
-```
-
-### <i class="fa fa-caret-right"></i> name
-
-It is the `name` of the AutoConnectCheckbox element and matches the name attribute of the input tag. It also becomes the parameter name of the query string when submitted.
-
-### <i class="fa fa-caret-right"></i> value
-
-It becomes a value of the `value` attribute of an HTML `#!html <input type="checkbox">` tag.
-
-### <i class="fa fa-caret-right"></i> label
-
-A label is an optional string. A label is always arranged on the right side of the checkbox. Specification of a label will generate an HTML `<label>` tag with an `id` attribute. The checkbox and the label are connected by the id attribute. 
-Only <i class="far fa-square"></i> will be displayed if a label is not specified.
-
-### <i class="fa fa-caret-right"></i> checked
-
-A checked is a Boolean value and indicates the checked status of the checkbox. The value of the checked checkbox element is packed in the query string and sent.
-
-## AutoConnectFile
-
-AutoConnectFile generates asn HTML `#!html <input type="file">` tag and a `#!html <label>` tag. AutoConnectFile enables file upload from the client through the web browser to ESP8266/ESP32 module. You can select the flash in the module, external SD device or any output destination as the storage of the uploaded file.
-
-<i class="fa fa-eye"></i> **Sample**<br>
-<small>**`AutoConnectFile file("file", "", "Upload:", AC_File_FS)`**</small>
-
-<small>On the page:</small><br><img src="images/acfile.png">
-
-### <i class="fa fa-edit"></i> Constructor
-
-```cpp
-AutoConnectFile(const char* name, const char* value, const char* label, const ACFile_t store)
-```
-
-### <i class="fa fa-caret-right"></i> name
-
-It is the `name` of the AutoConnectFile element and matches the name attribute of the input tag. It also becomes the parameter name of the query string when submitted.
-
-### <i class="fa fa-caret-right"></i> value
-
-File name to be upload. The value contains the value entered by the client browser to the `#!html <input type="file">` tag and is read-only. Even If you give a value to the constructor, it does not affect as an initial value like a default file name.
-
-### <i class="fa fa-caret-right"></i> label
-
-A `label` is an optional string. A label is always arranged on the left side of the input box. Specification of a label will generate an HTML `#!html <label>` tag with an id attribute. The input box and the label are connected by the id attribute.
-
-### <i class="fa fa-caret-right"></i> store
-
-Specifies the destination to save the uploaded file. The destination can be specified the following values ​​in the *ACFile_t* enumeration type.
-
-- **`AC_File_FS`** : Save as the SPIFFS file in flash of ESP8266/ESP32 module.
-- **`AC_File_SD`** : Save to an external SD device connected to ESP8266/ESP32 module.
-- **`AC_File_Extern`** : Pass the content of the uploaded file to the uploader which is declared by the sketch individually. Its uploader must inherit [**AutoConnectUploadHandler**](acupload.md#to-upload-to-a-device-other-than-flash-or-sd) class and implements *_open*, *_write* and *_close* function.
-
-!!! note "Built-in uploader is ready."
-    AutoConnect already equips the built-in uploader for saving to the SPIFFS as AC_File_FS and the external SD as AC_File_SD. It is already implemented inside AutoConnect and will store uploaded file automatically.
-
-## AutoConnectInput
-
-AutoConnectInput generates an HTML `#!html <input type="text">` tag and a `#!html <label>` tag. It can also have a placeholder. The value of the input box is passed to the destination in the query string and can be retrieved programmatically. You can also update from the sketches.
-
-<i class="fa fa-eye"></i> **Sample**<br>
-<small>**`AutoConnectInput input("input", "", "Server", "MQTT broker server");`**</small>
-
-<small>On the page:</small><br><img src="images/acinput.png">
-
-### <i class="fa fa-edit"></i> Constructor
-
-```cpp
-AutoConnectInput(const char* name, const char* value, const char* label, const char* pattern, const char* placeholder)
-```
-
-### <i class="fa fa-caret-right"></i> name
-
-It is the `name` of the AutoConnectInput element and matches the name attribute, the id attribute of the input tag. It also becomes the parameter name of the query string when submitted.
-
-### <i class="fa fa-caret-right"></i> value
-
-It becomes a string value of the `value` attribute of an HTML `#!html <input type="text">` tag. The text entered from the custom Web page will be grouped in the query string of the form submission and the string set before accessing the page will be displayed as the initial value.
-
-### <i class="fa fa-caret-right"></i> label
-
-A `label` is an optional string. A label is always arranged on the left side of the input box. Specification of a label will generate an HTML `#!html <label>` tag with an id attribute. The input box and the label are connected by the id attribute.
-
-### <i class="fa fa-caret-right"></i> pattern
-
-A `pattern` specifies a [regular expression](https://www.w3schools.com/js/js_regexp.asp) that the AutoConnectInput element's value is checked against on form submission. If it is invalid, the background color will change, but it will be sent even if the data format does not match. To check whether the entered value matches the pattern, use the [isValid](apielements.md#isvalid) function.
-
-- The password that must contain 8 or more characters that are of at least one number, and one uppercase and lowercase letter:<br>`(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}`
-- Email address as [email protected]_:<br>`[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}`
-
-- IP address:<br>`(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])`
-
-- Host name of Internet:<br>`(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])`
-
-- Date (MM/DD/YYYY) as range 1900-2099:<br>`(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](19|20)\d\d`
-
-- Twitter account:<br>`^@?(\w){1,15}$`
-
-### <i class="fa fa-caret-right"></i> placeholder
-
-A placeholder is an option string. Specification of a placeholder will generate a `placeholder` attribute for the input tag.
-
-## AutoConnectRadio
-
-AutoConnectRadio generates few HTML `#!html <input type="radio">` tags as grouped and the same number of `#!html <label>` tags. AutoConnectRadio can keep the value of a radio button as a collection. The grouped values will be placed in the custom Web page to select only one exclusively.
-
-<i class="fa fa-eye"></i> **Sample**<br>
-<small>**`AutoConnectRadio radio("radio", { "30 sec.", "60 sec.", "180 sec." }, "Update period", AC_Vertical, 1);`**</small>
-
-<small>On the page:</small><br><img src="images/acradio.png">
-
-### <i class="fa fa-edit"></i> Constructor
-
-```cpp
-AutoConnectRadio(const char* name, std::vector<String> const& values, const char* label, const ACArrange_t order, const uint8_t checked)
-```
-
-### <i class="fa fa-caret-right"></i> name
-
-It is the `name` of the AutoConnectRadio element and matches the name attribute of the input tags. It also becomes the parameter name of the query string when submitted.
-
-### <i class="fa fa-caret-right"></i> values
-
-A `values` is an array of String type for the radio button options which as actually [std::vector](https://en.cppreference.com/w/cpp/container/vector). It is an initialization list can be used. The input tags will be generated from each entry in the values, the amount of which is the same as the number of items in `values`.
-
-### <i class="fa fa-caret-right"></i> label
-
-A label is an optional string. A label will be arranged in the left or top of the radio buttons according to the **order**. Specification of a label will generate an HTML `#!html <label>` tag with an `id` attribute. The radio buttons and the label are connected by the id attribute.
-
-### <i class="fa fa-caret-right"></i> order
-
-A `order` specifies the direction to arrange the radio buttons. It is a value of type `ACArrange_t` and accepts one of the following:
-
-- **`AC_Horizontal`** : Horizontal arrangement.
-- **`AC_Vertical`** : Vertical arrangement.
-
-A label will place in the left or the top according to the **order**.
-
-### <i class="fa fa-caret-right"></i> checked
-
-A `checked` specifies the index number (1-based) of the **values** to be checked. If this parameter is not specified neither item is checked.
-
-## AutoConnectSelect
-
-AutoConnectSelect generates an HTML `#!html <select>` tag (drop-down list) and few `#!html <option>` tags.
-
-<i class="fa fa-eye"></i> **Sample**<br>
-<small>**`AutoConnectSelect select("select", { String("Europe/London"), String("Europe/Berlin"), String("Europe/Helsinki"), String("Europe/Moscow"), String("Asia/Dubai") }, "Select TZ name");`**</small>
-
-<small>On the page:</small><br><img src="images/acselect.png">
-
-### <i class="fa fa-edit"></i> Constructor
-
-```cpp
-AutoConnectSelect(const char* name, std::vector<String> const& options, const char* label, const uint8_t selected)
-```
-
-### <i class="fa fa-caret-right"></i> name
-
-It is the `name` of the AutoConnectSelect element and matches the name attribute of the select tags.
-
-### <i class="fa fa-caret-right"></i> options
-
-An `options` is an array of String type for the options which as actually [std::vector](https://en.cppreference.com/w/cpp/container/vector) for an HTML `#!html <option>` tag. It is an initialization list can be used. The option tags will be generated from each entry in the options, the amount of which is the same as the number of items in an `options`.
-
-### <i class="fa fa-caret-right"></i> label
-
-A `label` is an optional string. A label is always arranged on the left side of the drop-down list. Specification of a label will generate an HTML `#!html <label>` tag with an id attribute. The select tag and the label are connected by the id attribute.
-
-### <i class="fa fa-caret-right"></i> selected
-
-A `selected` is an optional value. Specifies that an option should be pre-selected when the page loads.
-
-## AutoConnectSubmit
-
-AutoConnectSubmit generates an HTML `#!html <input type="button">` tag attached `#!html onclick` attribute. The native code of the `#!html onclick` attribute is the submission of the form with the **POST** method.
-
-<i class="fa fa-eye"></i> **Sample**<br>
-<small>**`AutoConnectSubmit submit("submit", "Save", "/mqtt_save");`**</small>
-
-<small>On the page:</small><br><img src="images/acsubmit.png">
-
-### <i class="fa fa-edit"></i> Constructor
-
-```cpp
-AutoConnectSubmit(const char* name, const char* value, const char* uri)
-```
-
-### <i class="fa fa-caret-right"></i> name
-
-It is the `name` of the AutoConnectSubmit element and matches the name attribute of the input tag.
-
-### <i class="fa fa-caret-right"></i> value
-
-It becomes a string of the `value` attribute of an HTML `#!html <input type="button">` tag. The `value` will be displayed as a label of the button.
-
-### <i class="fa fa-caret-right"></i> uri
-
-A `uri` specifies the URI to send form data when the button declared by AutoConnectSubmit is clicked.
-
-The query string of the form data sent with AutoConnectSubmit contains the URI of the page. Its parameter name is `_acuri`. In Sketch, you can know the called URI by referring to the `_acuri` parameter with the destination page handler. The actual query string is as follows:
-
-\_acuri=**CALLER_URI**
-
-## AutoConnectText
-
-AutoConnectText generates an HTML `#!html <div>` tag. A `#!html style` attribute will be attached if a [style](#style) parameter is passed.
-
-<i class="fa fa-eye"></i> **Sample**<br>
-<small>**`AutoConnectText text("text", "Publishing the WiFi signal strength to MQTT channel. RSSI value of ESP8266 to the channel created on ThingSpeak", "font-family:serif;color:#4682b4;");`**</small>
-
-<small>On the page:</small><br><img src="images/actext.png">
-
-### <i class="fa fa-edit"></i> Constructor
-
-```cpp
-AutoConnectText(const char* name, const char* value, const char* style, const char* format)
-```
-
-### <i class="fa fa-caret-right"></i> name
-
-A `name` does not exist in the generated HTML. It provides only a means of accessing elements with the sketches.
-
-### <i class="fa fa-caret-right"></i> value
-
-It becomes content and also can contain the native HTML code, but remember that your written code is enclosed by the div tag.
-
-### <i class="fa fa-caret-right"></i> style
-
-A `style` specifies the qualification style to give to the content and can use the style attribute format as it is.
-
-### <i class="fa fa-caret-right"></i> format
-
-A `format` is a pointer to a null-terminated multibyte string specifying how to interpret the value. It specifies the conversion format when outputting values. The format string conforms to C-style printf library functions, but depends on the espressif sdk implementation. The conversion specification is valid only in **%s** format. (Left and Right justification, width are also valid.)
-
-## How to coding for the elements
-
-### <i class="fa fa-edit"></i> Declaration for the elements in Sketches
-
-Variables of each AutoConnetElement can be declared with macros. By using the macros, you can treat element name that is String type as variable in sketches.[^2]
-
-[^2]: The square brackets in the syntax are optional parameters, the stroke is a selection parameter, the bold fonts are literal.
-
-ACElement ( *name* <small>\[</small> , *value* <small>\]</small> )
-
-ACButton ( *name* <small>\[</small> , *value* <small>\]</small> <small>\[</small> , *action* <small>\]</small> )
- 
-ACCheckbox ( *name* <small>\[</small> , *value* <small>\]</small> <small>\[</small> , *label* <small>\]</small> <small>\[</small> , **true** | **false** <small>\]</small> )
-
-ACFile ( *name* <small>\[</small> , *value* <small>\]</small> <small>\[</small> , *label* <small>\]</small> <small>\[</small> , **AC\_File\_FS** | **AC\_File\_SD** | **AC\_File\_Extern** <small>\]</small> )
-
-ACInput ( *name* <small>\[</small> , *value* <small>\]</small> <small>\[</small> , *label* <small>\]</small> <small>\[</small> , *pattern* <small>\]</small> <small>\[</small> , *placeholder* <small>\]</small> )
-
-ACRadio ( *name* <small>\[</small> , *values* <small>\]</small> <small>\[</small> , *label* <small>\]</small> <small>\[</small> , **AC\_Horizontal** | **AC\_Vertical** <small>\]</small> <small>\[</small> , *checked* <small>\]</small> )
-
-ACSelect ( *name* <small>\[</small> , *options* <small>\]</small> <small>\[</small> , *label* <small>\]</small> )
-
-ACSubmit ( *name* <small>\[</small> , *value* <small>\]</small> <small>\[</small> , *uri* <small>\]</small> )
-
-ACText ( *name* <small>\[</small> , *value* <small>\]</small> <small>\[</small> , *style* <small>\]</small> <small>\[</small> , *format* <small>\]</small> )
-
-!!! memo "Declaration macro usage"
-    For example, *AutoConnectText* can be declared using macros.
-    ```cpp
-    AutoConnectText caption("caption", "hello, world", "color:blue;")
-    ```
-    equals by using *ACText* macro.<br>
-    ```cpp
-    ACText(caption, "hello, world", "color:blue;")
-    ```
-
-### <i class="fa fa-edit"></i> Variant for AutoConnectElements
-
-Some AutoConnectAux APIs specify AutoConnectElements as an argument. There are also functions that return a pointer to AutoConnectElements. AutoConnectElement behaves as a variant type of each element class to make these interfaces a single. Use [reinterpret_cast](https://en.cppreference.com/w/cpp/language/reinterpret_cast) to cast from a variant pointer to an Actual type pointer of AutoConnectElements.
-
-```cpp
-AutoConnectAux aux;
-ACText(Text1, "hello, world");
-aux.add(Text1);
-AutoConnectText* text_p = reinterpret_cast<AutoConnectText*>(aux.getElement("Text1"));
-AutoConnectText& text = aux.getElement<AutoConnectText>("Text1");
-```




diff --git a/lib/AutoConnect-master/mkdocs/achandling.md b/lib/AutoConnect-master/mkdocs/achandling.md
deleted file mode 100644
index 7d340bd7f340e25f76f8b8dbac1d5885a9401130..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/achandling.md
+++ /dev/null
@@ -1,753 +0,0 @@
-## Page, Container, Component
-
-AutoConnectAux is the container for a custom Web page, AutoConnectElement is the component of a page. AutoConnectElements must be contained in AutoConnectAux object. (ie. they are the elements displayed on the custom Web page.) Then AutoConnect makes an AutoConnectAux to a page.
-
-AutoConnectElements declared in sketch must be programmed to add to AutoConnectAux one after another. Elements are automatically included in AutoConnectAux by AutoConnect if you load it from the JSON document. In either method, it is common to use the function of AutoConnectAux to access an element with a sketch.
-
-## Handing AutoConnectElements with the sketches
-
-The AutoConnectAux class has several functions to manipulate AutoConnectElements. The functions can add, delete, retrieve elements, and get and set values.
-
-### <i class="fa fa-edit"></i> Add AutoConnectElements to the AutoConnectAux object
-
-To add AutoConnectElment(s) to an AutoConnectAux object, use the add function.
-
-```cpp
-void AutoConnectAux::add(AutoConenctElement& addon)
-```
-```cpp
-void AutoConnectAux::add(AutoConenctElementVT addons)
-```
-
-The add function adds the specified AutoConnectElement to AutoConnectAux. The AutoConnectElementVT type is the [*std::vector*](https://en.cppreference.com/w/cpp/container/vector) of the [*reference wrapper*](https://en.cppreference.com/w/cpp/utility/functional/reference_wrapper) to AutoConnectElements, and you can add these elements in bulk by using the [*list initialization*](https://en.cppreference.com/w/cpp/language/list_initialization) with the sketch.
-
-```cpp
-typedef std::vector<std::reference_wrapper<AutoConnectElement>> AutoConnectElementVT;
-```
-AutoConnectElements contained in AutoConnectAux object are uniquely identified by name. When adding an AutoConnectElement, if an element with the same name already exists in the AutoConnectAux, checking the type, and if it is the same, the value will be replaced. If another type of AutoConnectElement exists with the same name, that add operation will be invalid.[^1] In the following example, AutoConnectButton `button` addition will invalid because `hello` with the same name already exists as AutoConnectText.
-
-[^1]: The valid scope of the name is within an AutoConnectAux.
-
-```cpp hl_lines="3"
-AutoConnectAux  aux;
-AutoConnectText text("hello", "hello, world");
-AutoConnectButton button("hello", "hello, world", "alert('Hello world!')");  // This is invalid.
-aux.add({ text, button });
-```
-
-Similarly this, the uniqueness of the name is also necessary within the JSON document
-
-```json hl_lines="12"
-{
-  "name" : "aux",
-  "uri" : "/aux",
-  "menu" : true,
-  "element" : [
-    {
-      "name": "hello",
-      "type": "ACText",
-      "value": "hello, world"
-    },
-    {
-      "name": "hello",
-      "type": "ACButton",
-      "value": "hello, world",
-      "action": "alert('Hello world!')"
-    }
-  ]
-}
-```
-
-!!! note "Load all elements from JSON document"
-    If you load all AutoConnectElements from JSON document into AutoConnect, you do not need to sketch the population process of the AutoConnectElements. It is managed by the AutoConnect library automatically.
-
-### <i class="fa fa-edit"></i> Get AutoConnectElement from the AutoConnectAux
-
-To retrieve an element from AutoConnectAux, use the getElement or getElements function. Normally, the getElement is needed when accessing the value of AutoConnectElement in the sketch.
-
-```cpp
-AutoConnectElement* AutoConnectAux::getElement(const String& name)
-```
-
-```cpp
-T& AutoConenctAux::getElement<T>(const String& name)
-```
-
-```cpp
-AutoConnectElementVT* AutoConnectAux::getElements(void)
-```
-
-The [**getElement**](apiaux.md#getelement) function returns an AutoConnectElement with the specified name as a key. When you use this function, you need to know the type of AutoConnectElement in advance and specify its type <T\> to an argument of the getElement. A type of <T\> can be specified as follows.
-
-```cpp
-AutoConnectButton& AutoConnectAux::getElement<AutoConnectButton>(const String& name)
-AutoConnectCheckbox& AutoConnectAux::getElement<AutoConnectCheckbox>(const String& name)
-AutoConnectElement& AutoConnectAux::getElement<AutoConnectElement>(const String& name)
-AutoConnectFile& AutoConnectAux::getElement<AutoConnectFile>(const String& name)
-AutoConnectInput& AutoConnectAux::getElement<AutoConnectInput>(const String& name)
-AutoConnectRadio& AutoConnectAux::getElement<AutoConnectRadio>(const String& name)
-AutoConnectSelect& AutoConnectAux::getElement<AutoConnectSelect>(const String& name)
-AutoConnectSubmit& AutoConnectAux::getElement<AutoConnectSubmit>(const String& name)
-AutoConnectText& AutoConnectAux::getElement<AutoConnectText>(const String& name)
-```
-
-To retrieve an AutoConnectElement by specifying its type, use the following method.
-
-```cpp
-AutoConnectAux  aux;
-aux.load("SOME_JSON_DOCUMENT");
-
-// Retrieve the pointer of the AutoConnectText
-AutoConnectText* text = reinterpret_cast<AutoConnectText*>(aux.getElement("TEXT_ELEMENT_NAME"));
-
-// Retrieve the reference of the AutoConnectText
-AutoConnectText& text = aux.getElement<AutoConnectText>("TEXT_ELEMENT_NAME");
-```
-
-The AutoConnectElement type behaves as a variant of other element types. Therefore use cast or template to convert to actual type as above. In the sketch, you access the real type of AutoConnectElement after casting it and storing into the variable.
-
-```cpp
-const String auxJson = String("{\"title\":\"Page 1 title\",\"uri\":\"/page1\",\"menu\":true,\"element\":[{\"name\":\"caption\",\"type\":\"ACText\",\"value\":\"hello, world\"}]}");
-AutoConenct portal;
-portal.load(auxJson);
-AutoConnectAux* aux = portal.aux("/page1");  // Identify the AutoConnectAux instance with uri
-AutoConenctText& text = aux->getElement<AutoConnectText>("caption");  // Cast to real type and access members
-Serial.println(text.value);
-```
-
-You can also use the [operator **`[]`** of AutoConnectAux](apiaux.md#operator) as another way to get the desired element. An operator **`[]`** is a shortcut for [getElement](apiaux.md#getelement) function with the reference casting and makes simplify the sketch code and treats like an array with the elements placed on a custom Web page. Its argument is the name of the element to be acquired similarly to getElement function. In the sketch, by combining the [**AutoConnectElement::as<T\>**](apielements.md#ast62) function with the operator `[]`, you can access the  AutoConnectElements reference according to its actual type. For example, the following sketch code returns the same as a reference of AutoConnectText element as the `caption`.
-
-```cpp hl_lines="4 5"
-AutoConnect portal;
-portal.load(auxJson);
-AutoConnectAux&  aux = *portal.aux("/page1");
-AutoConnectText& text1 = aux.getElement<AutoConnectElement>("caption");
-AutoConnectText& text2 = aux["caption"].as<AutoConnectText>();
-```
-
-!!! note "Need cast to convert to the actual type"
-    An operator `[]` returns a reference of an AutoConnectElement. It is necessary to convert the type according to the actual element type with [AutoConnectElement::as<T\>](apielements.md#ast62) function.
-    ```cpp
-    AutoConnectButton& AutoConnectElement::as<AutoConnectButton>()
-    AutoConnectCheckbox& AutoConnectElement::as<AutoConnectCheckbox>()
-    AutoConnectElement& AutoConnectElement::as<AutoConnectElement>()
-    AutoConnectFile& AutoConnectElement::as<AutoConnectFile>()
-    AutoConnectInput& AutoConnectElement::as<AutoConnectInput>()
-    AutoConnectRadio& AutoConnectElement::as<AutoConnectRadio>()
-    AutoConnectSelect& AutoConnectElement::as<AutoConnectSelect>()
-    AutoConnectSubmit& AutoConnectElement::as<AutoConnectSubmit>()
-    AutoConnectText& AutoConnectElement::as<AutoConnectText>()
-    ```
-
-To get all the AutoConnectElements in an AutoConnectAux object use the [**getElements**](apiaux.md#getelements) function. This function returns the vector of the reference wrapper as **AutoConnectElementVT** to all AutoConnectElements registered in the AutoConnectAux.
-
-```cpp
-AutoConnectElementVT& AutoConnectAux::getElements(void)
-```
-
-### <i class="fa fa-edit"></i> Enable AutoConnectElements during the sketch execution
-
-AutoConnectElemets have an enable attribute to activate its own HTML generation. Sketches can change the HTMLization of their elements dynamically by setting or resetting the enable value. An element whose the enable attribute is true will generate itself HTML and place on the custom Web page.  And conversely, it will not generate the HTML when the value is false.
-
-For example, to enable the submit button only when the ESP module is connected to the access point in STA mode, you can sketch the following:
-
-```cpp hl_lines="30 31 32 33"
-#include <ESP8266WiFi.h>
-#include <ESP8266WebServer.h>
-#include <AutoConnect.h>
-
-static const char AUX[] PROGMEM = R"(
-{
-  "uri" : "/aux",
-  "title" : "Aux.",
-  "menu" : true,
-  "element" : [
-    {
-      "name": "input",
-      "type": "ACInput",
-      "label": "Input"
-    },
-    {
-      "name": "send",
-      "type": "ACSubmit",
-      "value": "SEND",
-      "uri": "/send"
-    }
-  ]
-}
-)";
-
-AutoConnect    portal;
-AutoConnectAux page;
-
-String onPage(AutoConnectAux& aux, PageArgument& args) {
-  AutoConnectSubmit& send = aux["send"].as<AutoConnectSubmit>();
-  if (WiFi.isConnected())
-    send.enable = (WiFi.getMode() == WIFI_STA);
-  else
-    send.enable = false;
-  return String();
-}
-
-void setup() {
-  page.load(AUX);
-  page.on(onPage);
-  portal.join(page);
-  portal.begin();
-}
-
-void loop() {
-  portal.handleClient();
-}
-```
-
-!!! hint "Desirable to set or reset the enable attribute in the page handler"
-    The enable attribute can be set at any time during the sketch execution. The page handler with the [AC_EXIT_AHEAD](apiaux.md#on) option is sure to handle it.
-
-## Loading &amp; saving AutoConnectElements with JSON
-
-AutoConnect supports reading the custom Web page definitions written in JSON and also supports loading and saving of AutoConnectAux or AutoConnectElements. In both cases, the target object is a [JSON document for AutoConnect](acjson.md). However, it can not save all AutoConnectElements contained in the page as a custom Web page. (ie. AutoConnectAux)
-
-<img src="images/ac_load_save.svg">
-
-### <i class="fa fa-upload"></i> Loading AutoConnectAux &amp; AutoConnectElements with JSON
-
-To load a JSON document as AutoConnectAux use the [**AutoConnect::load**](api.md#load) function and load the JSON document of each AutoConnectElement using the [**AutoConnectAux::loadElement**](apiaux.md#loadelement) function. Although the functions of both are similar, the structure of the target JSON document is different.
-
-The [AutoConnect::load](apiaux.md#load) function loads the entire AutoConnectAux and creates both the AutoConnectAux instance and each AutoConnectElement instance. A single JSON document can contain multiple custom Web pages. If you write JSON of AutoConnectAux as an array, the load function generates all the pages contained in that array. Therefore, it is necessary to supply the JSON document of AutoConnectAux as an input of the load function and must contain the elements described section [*JSON document structure for AutoConnectAux*](acjson.md#json-document-structure-for-autoconnectaux).
-
-The [AutoConnectAux::loadElement](apiaux.md#loadelement) function loads the elements individually into an AutoConnectAux object. The structure of its supplying JSON document is not AutoConnectAux. It must be a [JSON structure for AutoConnectElement](acjson.md#json-object-for-autoconnectelements), but you can specify an array.
-
-```cpp hl_lines="49 55"
-// AutoConnectAux as a custom Web page.
-const char page[] PROGMEM = R"raw(
-{
-  "title": "Settings",
-  "uri": "/settings",
-  "menu": true,
-  "element": [
-    {
-      "name": "server",
-      "type": "ACInput",
-      "label": "Server"
-    },
-    {
-      "name": "set",
-      "type": "ACSubmit",
-      "value": "SET",
-      "uri" : "/set"
-    }
-  ]
-}
-)raw";
-
-// Additional AutoConnectElements.
-const char addons[] PROGMEM = R"raw(
-[
-  {
-    "name": "notes",
-    "type": "ACText",
-    "value": "An update period as the below optionally."
-  },
-  {
-    "name": "period",
-    "type": "ACRadio",
-    "value": [
-      "30 sec.",
-      "60 sec.",
-      "180 sec."
-    ],
-    "arrange": "vertical",
-    "checked": 1
-  }
-]
-)raw";
-
-AutoConnect     portal;
-AutoConnectAux* auxPage;
-
-// Load a custom Web page.
-portal.load(page);
-
-// Get a '/settings' page
-auxPage = portal.aux("/settings");
-
-// Also, load only AutoConnectRadio named the period.
-auxPage->loadElement(addons, "period");
-
-// Retrieve a server name from an AutoConnectText value.
-AutoConnectText& serverName = auxPage->getElement<AutoConnectText>("server");
-Serial.println(serverName.value);
-```
-
-### <i class="fa fa-download"></i> Saving AutoConnectElements with JSON
-
-To save the AutoConnectAux or the AutoConnectElement as a JSON document, use the [AutoConnectAux::saveElement](apiaux.md#saveelement) function. It serializes the contents of the object based on the type of the AutoConnectElement. You can persist a serialized AutoConnectElements as a JSON document to a stream.
-
-```cpp
-// Open a parameter file on the SPIFFS.
-SPIFFS.begin();
-FILE param = SPIFFS.open("/param", "w");
-
-// Save elements as the parameters.
-auxPage->saveElement(param, { "server", "period" });
-
-// Close a parameter file.
-param.close();
-SPIFFS.end();
-```
-
-The example above saves `server` and `period` elements from the AutoConnectAux object as mentioned above to the `/param` file on SPIFFS. Its JSON document of AutoConnectElements saved by its code looks like this:
-
-```json
-[
-  {
-    "name": "server",
-    "type": "ACInput",
-    "value": "An inputted server name",
-    "label": "Server",
-    "placeholder": ""
-  },
-  {
-    "name": "period",
-    "type": "ACRadio",
-    "value": [
-      "30 sec.",
-      "60 sec.",
-      "180 sec."
-    ],
-    "arrange": "vertical",
-    "checked": 2
-  }
-]
-```
-
-Above JSON document can be loaded as it is into a custom Web page using the loadElement function. The loadElement function also loads the value of the element, so the saved value can be restored on the custom Web page.
-
-## Custom field data handling
-
-A sketch can access variables of AutoConnectElements in the custom Web page. The value entered into the AutoConnectElements on the page is stored in the member variable of each element by AutoConnect whenever GET/POST transmission occurs. 
-
-The following diagram shows the flow of the input values of a custom Web page into a sketch and is the basis for actions to manipulate the values of custom Web pages using sketches.
-
-<img src="images/ac_param_flow.svg">
-
-### <i class="fa fa-desktop"></i> Where to pick up the values
-
-A sketch composed of handlers can receive the value of AutoConnectElements entered in a custom Web page after sending, but that handler is different from the page where the value was entered. It is necessary to be aware that can accept the entered values by the next page handler after the transition.
-
-Usually, two ways to retrieve entered values we have. One is to use the [ESP8266WebServer::arg](https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer#getting-information-about-request-arguments) (or WebServer::arg for ESP32) function in the [`on handler`](https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer#client-request-handlers) attached by ESP8266WebServer (WebServer w/ESP32 also).
-
-```cpp hl_lines="33"
-#include <ESP8266WiFi.h>
-#include <ESP8266WebServer.h>
-#include <AutoConnect.h>
-
-static const char addonJson[] PROGMEM = R"raw(
-{
-  "title": "Hello",
-  "uri": "/hello",
-  "menu": true,
-  "element": [
-    {
-      "name": "feels",
-      "type": "ACInput",
-      "label": "What's up?"
-    },
-    {
-      "name": "send",
-      "type": "ACSubmit",
-      "value": "Just it!",
-      "uri": "/feels"
-    }
-  ]
-}
-)raw";
-
-ESP8266WebServer webServer;
-AutoConnect portal(webServer);
-
-// Here, /feels handler
-void feelsOn() {
-  
-  // Retrieve the value of a input-box named "feels"
-  String feel = webServer.arg("feels");
-
-  // Echo back the value
-  String echo = "<html><p style=\"color:blue;font-family:verdana;font-size:300%;\">" + feel + String(" and a bold world!</p></html>");
-  webServer.send(200, "text/html", echo);
-}
-
-void setup() {
-  delay(1000);
-  webServer.on("/feels", feelsOn);  // Register /feels handler
-  portal.load(addonJson);           // Load a custom Web page
-  portal.begin();
-}
-
-void loop() {
-  portal.handleClient();
-}
-```
-
-An above example is the most simple sketch of handling values entered into a custom Web page. This sketch obtains the string entered in the AutoConnectInput named `feels` with the `/feels` handler after page transition, and the AutoConnectInput is an `<input type="text" name="feels">` element wrapped in the form as the actual HTML code. 
-
-!!! info "Should be accessed `/_ac` first"
-    When you actually try the above sketch, there is no a root handler. So the URL that should be accessed first is `/_ac` concatenated with the local IP address of the esp8266 module.
-
-Another method is effective when custom Web pages have complicated page transitions. It is a way to straight access the AutoConnectElements member value. You can get the AutoConnectElement with the specified name using the [getElement](#get-autoconnectelement-from-the-autoconnectaux) function. The following sketch executes the above example with AutoConnect only, without using the function of ESP8266WebServer.
-
-```cpp hl_lines="47 50"
-#include <ESP8266WiFi.h>
-#include <ESP8266WebServer.h>
-#include <AutoConnect.h>
-
-const static char addonJson[] PROGMEM = R"raw(
-[
-  {
-    "title": "Hello",
-    "uri": "/hello",
-    "menu": true,
-    "element": [
-      {
-        "name": "feels",
-        "type": "ACInput",
-        "label": "What's up?"
-      },
-      {
-        "name": "send",
-        "type": "ACSubmit",
-        "value": "Just it!",
-        "uri": "/feels"
-      }
-    ]
-  },
-  {
-    "title": "Hello",
-    "uri": "/feels",
-    "menu": false,
-    "element": [
-      {
-        "name": "echo",
-        "type": "ACText",
-        "style": "color:blue;font-family:verdana;font-size:300%;"
-      }
-    ]
-  }
-]
-)raw";
-
-AutoConnect portal;
-
-// Here, /feels handler
-String feelsOn(AutoConnectAux& aux, PageArgument& args) {
-
-  // Get the AutoConnectInput named "feels".
-  // The where() function returns an uri string of the AutoConnectAux that triggered this handler.
-  AutoConnectAux* hello = portal.aux(portal.where());
-  AutoConnectInput& feels = hello->getElement<AutoConnectInput>("feels");
-  
-  // Get the AutoConnectText named "echo".
-  AutoConnectText&  echo = aux.getElement<AutoConnectText>("echo");
-  
-  // Echo back from input-box to /feels page.
-  echo.value = feels.value +  String(" and a bold world!");
-  return String("");
-}
-
-void setup() {
-  delay(1000);
-  portal.load(addonJson);                       // Load custom Web pages
-  portal.on("/feels", feelsOn, AC_EXIT_AHEAD);  // Register /feels handler
-  portal.begin();
-}
-
-void loop() {
-  portal.handleClient();
-}
-```
-
-The above example handles in the handler for the values of a custom Web page. An [AutoConnect::on](api.md#on) function registers a handler for the AutoConnectAux page of the specified uri. The argument of the custom Web page handler is an AutoConnectAux of the page itself and the [PageArgument](https://github.com/Hieromon/PageBuilder#arguments-of-invoked-user-function) object.
-
-To retrieve the values entered in a custom Web page you need to access the AutoConnectElement of the page that caused the request to this page and to do this, you use the [AutoConnect::where](api.md#where) function. The `AutoConnect::where` function returns an uri string of the AutoConnectAux object of the custom Web page that caused the HTTP request.
-
-!!! note "The where() function is available for only AutoConnectAux."
-    The `AutoConnect::where` function is available only for the AutoConnectAux object. It is invalid for HTTP requests from individual pages registered with the **on** handler of ESP8266WebServer/WebServer for ESP32. In other words, the `AutoConnect::where` function only returns the last AutoConnecAux page called.
-
-### <i class="fa fa-desktop"></i> When setting the initial values
-
-An AutoConnectAux page is dynamically created by AutoConnect when its uri is requested. The initial value of AutoConnectElements can be set before its page request. It is also possible during `loop()`. To set the initial value when the page is accessed it needs by the handler of its page.
-
-The [**AutoConnect::on**](api.md#on) and [**AutoConnectAux::on**](apiaux.md#on) functions register a handler for a custom Web page and also specify when to call that handler. The behavior of the two `on` functions is the same, only the class and arguments are different.
-
-```cpp
-bool AutoConnect::on(const String& uri, const AuxHandlerFunctionT handler, AutoConnectExitOrder_t order)
-```
-```cpp
-void AutoConnectAux::on(const AuxHandlerFunctionT handler, const AutoConnectExitOrder_t order)
-```
-
-Parameter `uri` specifies an URI of the custom Web page, but an AutoConnectAux object with its URI must be registered with AutoConnect via the [AutoConnect::join](api.md#join) function beforehand.
-
-!!! note "AutoConnect::on/AutoConnectAux::on is not ESP8266WebServer::on"
-    The `on` function for AutoConnect is different from the `on` function of Arduino core ESP8266WebServer (WebServer for ESP32). You can share the same handler via wrapper, but access to AutoConnectElements is **valid only for handlers registered with `on` function for AutoConnect**.
-
-`AuxHandlerFunctionT` type is a handler declaration using with [std::function](https://en.cppreference.com/w/cpp/utility/functional/function).
-
-```cpp
-String handler(AutoConnectAux& aux, PageArgument& args)
-```
-
-The handler of the custom Web page has two arguments by a reference of AutoConnectAux and a reference of PageArgument, it returns String. AutoConnect appends the string returned from the handler to the generated HTML. This allows you to add an HTML part before displaying the page.
-
-`AutoConnectExitOrder_t` specifies when the handler is called with the following enumeration value.
-
-: - **AC_EXIT_AHEAD** : Called before AutoConnect generates the HTML of the page. You set the value of AutoConnectElements in the handler then its value will be displayed on the page.
-: - **AC_EXIT_LATER** : Called after AutoConnect generates the HTML of the page. You can append to HTML generated by AutoConnect.
-: - **AC_EXIT_BOTH** : Called even before generating HTML and after generated.
-
-The following example is a part of sketch contained the handlers. 
-
-```cpp
-// AutoConnect object declarations
-ACInput(input1);
-AutoConnectAux aux("/aux", { input1 });
-AutoConnect portal;
-// Pre-declare handlers
-String initialize(AutoConnectAux&, PageArgument&);
-String append(AutoConnectAux&, PageArgument&);
-
-// Register handlers and launch the portal.
-aux.on(initialize, AC_AHEAD);
-aux.on(append, AC_LATER);
-portal.join(aux);
-portal.begin();
-
-// Some code here...
-
-// The handler called before HTML generating
-String initialize(AutoConnectAux& aux, PageArgument& args) {
-  AutoConnectInput& input1 = aux.getElement<AutoConnectInput>("input1");
-  // Set initial value for the input box in a custom Web page.
-  input1.value = "Initial value";
-  // Nothing appendix for a generated HTML.
-  return String();
-}
-
-// The handler called after HTML generated
-String append(AutoConnectAux& aux, PageArgument& args) {
-  // Append an HTML
-  return String("<p>This text has been added.</p>");
-}
-```
-
-### <i class="fa fa-wrench"></i> How you can reach the values
-
-AutoConnectSubmit uses the POST method to send HTTP requests. A value of AutoConnectInput sent to the ESP8266 or ESP32 with POST is stored in the request body of the HTTP request:
-```
-POST /feels HTTP/1.1
-Host: ESP8266_IP_ADDRESS
-name1=value1&name2=value2&name3=value3
-```
-ESP8266WebServer class will parse the query string and rebuilds its arguments when the above request arrives. A custom page handler registered with the [ESP8266WebServer::on](https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer#client-request-handlers) function can access the value of AutoConnectElements with [ESP8266WebServe::arg](https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer#getting-information-about-request-arguments) function. It reaches the values of AutoConnectElements without the intermediation of AutoConnect. Therefore, its handler will not be AutoConnectAux and can send a response to the client directly. The following example is part of a server sketch which has two web pages. The `/hello` page is a custom Web page of AutoConnectAux which has an input box named "input1". Another `/echo` page is a page handler for ESP8266WebServer, which uses the [ESP8266WebServer::send](https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer#sending-responses-to-the-client) function to echo back the value of an input1 as an http response.
-
-```cpp hl_lines="3 8"
-ESP8266WebServer server;
-AutoConnect      portal(server);
-ACInput(input1, "", "INPUT");
-ACSubmit(send, "HELLO", "/echo");
-AutoConnectAux  aux("/hello", { input1, send });
-
-server.on("/echo", []() {
-  String echo = server.arg("input1");
-  Serial.println(echo);
-  server.send(200, "text/plain", echo);
-});
-
-portal.join(aux);
-portal.begin();
-```
-
-Also, you can choose another way to access arguments without going through the ESP8266WebServer class. The [PageArgument](https://github.com/Hieromon/PageBuilder#arguments-of-invoked-user-function) object of the custom Web page handler argument is a copy of the arg object of the ESP8266WebServer class. Either of these methods is a simple and easy way to access parameters in custom Web page handlers. However, if you need to access from outside of the handler to the value of AutoConnectElements, you need to accomplish it using with the [AutoConnectAux::getElement](#get-autoconnectelement-from-the-autoconnectaux) function. The following sketch code replaces the above example with JSON and PageArgument, and its behaves is equivalent basically to the above sketch.
-
-```cpp
-const static char auxPage[] PROGMEM = R"raw(
-[
-  { "title":"Hello", "uri":"/hello", "menu":true, "element":[
-    { "name":"input1", "type": "ACInput", "label": "INPUT" },
-    { "name":"send", "type":"ACSubmit", "value":"HELLO", "uri":"/echo" }]
-  },
-  { "title":"Echo", "uri":"/echo", "menu":false, "element":[
-    { "name":"echo", "type":"ACText" }]
-  }
-]
-)raw";
-
-AutoConnect portal;
-
-portal.load(auxPage);
-portal.on("/echo", [](AutoConnectAux& aux, PageArgument& args) {
-  AutoConnectText& ac_echo = aux.getElement<AutoConnectText>("echo");
-  ac_echo.value = args.arg("input1");
-  return String();  
-});
-
-portal.begin();
-```
-
-### <i class="fa fa-wpforms"></i> Overwrite the AutoConnectElements
-
-Sketches can update the attributes of AutoConnectElements with two approaches. A one is to assign directly to the attributes of a member variable of its element. The other is to overwrite them with loading the element by [AutoConnectAux::loadElement](apiaux.md#loadelement). 
-
-The elements for attributes described in the JSON document for AutoConnectElements overwrites the member variables of the target AutoConnectElements. However, AutoConnectAux::loadElement keeps the member variables unchanged if there is no element in the JSON document. This overwriting behavior is the same for the [AutoConnect::load](api.md#load) function.
-
-For example, the combination of the sketch and JSON document as follows updates only the style while keeping Caption (ie. "Hello, world") as AutoConnectText value.
-
-<i class="fab fa-js-square"></i> External JSON document for the below sketch to modify the text style.
-```json hl_lines="4"
-{
-  "name" : "Caption",
-  "type" : "ACText",
-  "style": "text-align:center;font-size:24px;font-family:'Impact','Futura',sans-serif;color:tomato;"
-}
-```
-
-<i class="fa fa-arrow-down"></i><br>
-<i class="fa fa-code"></i> The sketch (a part of code), load above JSON.
-```cpp hl_lines="1"
-ACText(Caption, "Hello, world");
-AutoConnectAux helloPage("/hello", "Hello", true, { Caption });
-AutoConnect portal;
-
-String onHello(AutoConnectAux& aux, PageArgument& args) {
-  aux.loadElement(JSON);
-  return String();
-}
-
-void setup() {
-  helloPage.on(onHello);
-  portal.join(helloPage);
-  portal.begin();
-}
-
-void loop() {
-  portal.handleClient();
-}
-```
-<i class="fa fa-arrow-down"></i><br>
-<i class="fa fa-eye"></i> It's shown as like:<span style="margin-left:14px;width:272px;height:118px;border:1px solid lightgray;"><img align="top" width="270" height="116" src="images/acow.png"></span>
-
-### <i class="far fa-check-square"></i> Check data against on submission
-
-By giving a [pattern](apielements.md#pattern) to [AutoConnectInput](apielements.md#autoconnectinput), you can find errors in data styles while typing in custom Web pages. The pattern is specified by [regular expression](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions).[^2] If the value during input of AutoConnectInput does not match the regular expression specified in the pattern, its background color changes to pink. The following example shows the behavior when checking the IP address in the AutoConnectInput field.
-
-[^2]:Regular expression specification as a pattern of AutoConnectInput is [JavaScript compliant](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions).
-
-```json hl_lines="10"
-{
-  "title" : "Page-1",
-  "uri" : "/page1",
-  "menu" : true,
-  "element" : [
-    {
-      "name" : "Server",
-      "type" : "ACInput",
-      "label": "Server address",
-      "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"
-    }
-  ]
-}
-```
-
-<div>
-  <span style="display:block;margin-left:136px;"><img width="32px" height="32xp" src="images/arrow_down.png"></span>
-  <span style="display:block;width:306px;height:136px;border:1px solid lightgrey;"><img data-gifffer="images/aux_pattern.gif" data-gifffer-height="134" data-gifffer-width="304" /></span>
-</div>
-
-If you are not familiar with regular expressions, you may feel that description very strange. And matter of fact, it is a strange description for those unfamiliar with formal languages. If your regular expression can not interpret the intended syntax and semantics, you can use an online tester. The [regex101](https://regex101.com/) is an exceptional online site for testing and debugging regular expressions.
-
-### <img src="images/regexp.png" align="top"> Validate input data
-
-The [pattern](apielements.md#pattern) attribute of [AutoConnectInput](apielements.md#autoconnectinput) only determines the data consistency on the web browser based on the given regular expression. In order to guarantee the validity of input data, it is necessary to verify it before actually using it.
-
-You can validate input data from [AutoConnectInput](apielements.md#autoconnectinput) using the [isValid](apielements.md#isvalid) function before actually processing it.  The [isValid](apielements.md#isvalid) function determines whether the [value](apielements.md#value_3) currently stored in [AutoConnectInput](apielements.md#autoconnectinput) matches the [pattern](apielements.md#pattern). 
-
-### <i class="fa fa-exchange"></i> Convert data to actually type
-
-The values in the AutoConnectElements field of the custom Web page are all typed as String. A sketch needs to be converted to an actual data type if the data type required for sketch processing is not a String type. For the typical data type conversion method, refer to section [*Tips for data conversion*](datatips.md#convert-autoconnectelements-value-to-actual-data-type).
-
-## Transitions of the custom Web pages
-
-### Scope &amp; Lifetime of AutoConnectAux
-
-AutoConnectAux and AutoConnectElements must live while the custom Web pages are available. The implementation of the custom Web page inherits from requestHandler driven from ESP8266WebServer (WebServer for ESP32), so the instance of AutoConnectAux and AutoConnectElements must exist for the duration of effect of handleClient. The following example is incorrect for manipulating custom Web pages. Its AutoConnectAux instance will be destructed at the exit of the setup().
-
-```cpp hl_lines="20"
-#include <ESP8266WiFi.h>
-#include <ESP8266WebServer.h>
-#include <AutoConnect.h>
-
-static const auxPage[] PROGMEM = R"raw(
-{
-  "title": "Page-1",
-  "uri": "/page1",
-  "menu": true,
-  "element": [
-    { "name":"Server", "type":"ACText", "label":"Server address" }
-  ]
-}
-)raw";
-
-AutoConnect  portal;
-
-void setup() {
-  // This declaration is wrong.
-  AutoConnectAux aux;
-  aux.load(auxPage);
-  portal.join(aux);
-  portal.begin();
-}
-
-void loop() {
-  portal.handleClient();
-}
-```
-
-### The URI of the custom Web pages
-
-The transition of the custom Web page follows the URI of the page, but the ESP8266WebServer class does not know the URI of an AutoConnectAux page. (Registering a custom Web page does not use the *ESP8266WebServer::on*/*WebServer::on* function.) Therefore ESP8266WebServer class does not detect its URI access. If you want to detect an http request to AutoConnectAux's custom Web page, you need to register its URI with the [AutoConnectAux::on](apiaux.md#on) function.
-
-In addition to this, there are restrictions in the handler for the custom Web page as shown in the following section.
-
-### Limitations
-
-The custom Web pages handler has the following limitations.
-
-- Do not send HTTP responses from the handler.
-
-    If the handler returns its own response, the custom Web page will be lost.
-
-- Use AutoConnectSubmit whenever possible.
-
-    AutoConnect will hold the values of a custom Web Page is sent by AutoConnectSubmit.
-
-- Can not handle the custom Web pages during a connection is not established yet.
-
-    During the connection attempt, the web browser of the client will send a probe for a captive portal. Its request will cause unintended custom Web page transitions.
-
-- Can not place URI of the custom Web pages to AUTOCONNECT_URI.
-
-    AutoConnect will not work if you place a custom Web page to [AUTOCONNECT_URI](api.md#defined-macros).
-
-- Can not use the element named **SUBMIT**.
-
-    You can not use 'SUBMIT' as the element name of AutoConnectElements in a custom Web page that declares the AutoConnectSubmit element. (Case sensitive ignored) AutoConnect does not rely on the `input type=submit` element for the form submission and uses [HTML form element submit](https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit) function instead. So, the submit function will fail if there is an element named 'submit' in the form.
-
-!!! caution "Do not handle for the same page"
-    Do not duplicate AutoConnect::on with ESP8266WebServer::on (also WebServer::on) for the same custom web page.
-
-<script>
-  window.onload = function() {
-    Gifffer();
-  };
-</script>




diff --git a/lib/AutoConnect-master/mkdocs/acintro.md b/lib/AutoConnect-master/mkdocs/acintro.md
deleted file mode 100644
index ff50e1eb075b6ee7c13572cb07a27424a8abe673..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/acintro.md
+++ /dev/null
@@ -1,176 +0,0 @@
-## What it is
-
-<span style="margin-left:20px;margin-bottom:10px;float:right;width:280px;height:497px;border:1px solid lightgray;"><img data-gifffer="images/aux_ov.gif" data-gifffer-width="278" data-gifffer-height="495" /></span>
-AutoConnect can handle custom Web pages prepared by user sketches individually. Custom Web pages can be integrated into the AutoConnect menu and executed as menu items and can have input-output parameters and handle them.
-
-For example, you can program some sketches that publish messages by entering the URI or unique ID of the MQTT broker on a custom page. You do not need to code the processing to handle the web page. It retrieves the input parameters and passes to the MQTT broker connection API is only.
-
-## How it works
-
-AutoConnect creates the custom Web pages dynamically at runtime. Sketch describes the custom Web pages using classes and APIs necessary for dynamic creation which are [**AutoConnectAux**](apiaux.md#autoconnectaux) and the variant of [**AutoConnectElements**](acelements.md). AutoConnectAux is an object dependent on AutoConnect, which provides an easy way to incorporate custom Web pages into AutoConnect like the one on the right figure. The elements make up a custom Web page are provided as an AutoConnectElement class.
-
-Furthermore, an input box, a check box, a submit button, etc. are implemented by classes derived from AutoConnectElement.
-<p align="center"><img align="center" width="560px" src="images/ac_objects.svg"></p>
-AutoConnectAux is a container for AutoConnectElements. To make a custom Web page, create elements that make up the page and put it in the AutoConnectAux object. Joining its AutoConnectAux object to AutoConnect will integrate the custom Web page into the AutoConnect menu.
-
-<img src="images/ac_declaration.svg">
-
-The above figure shows a code sequence that declares AutoConnectElements and put in the AutoConnectAux container and integrates those into AutoConnect. It declares two text elements named *header* and *caption*, adds them to the AutoConnectAux object as *aux*, binds to an AutoConnect object named *portal*. This sequence is the basic procedure for creating custom Web pages with the sketch. The further explanation is available in section [AutoConnectElements](acelements.md) also.
-
-## Custom Web pages in AutoConnect menu
-
-<ul class="horizontal-list">
-    <li><img style="margin:0 20px 0 -20px;float:left;width:300px;" src="images/ac_auxmenu.png">
-    AutoConnect integrates custom Web page objects into menus as AutoConnectAux. The AutoConnectAux object contains URI and title as member variables and has an indicator to display in the AutoConnect menu.<br>You give the title and URI of the custom Web page to the AutoConnectAux object with Sketch. Then the title of the custom Web page would be displayed in the AutoConnect menu as the left figure.<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup> It is a hyperlink to a custom Web page which will be displayed tapped it.</li>
-</ul>
-
-[^1]:There is no overlay in the actual menu.
-
-## Multiple custom Web pages
-
-You can create multiple custom Web pages and specify pages that can be called from the menu. The following sketch shows a code sequence for integrating three custom Web pages into one and embedding them in a menu.
-
-<img align="center" width="520px" src="images/ac_auxjoin_multi.svg">
-
-<ul class="horizontal-list">
-    <li><p style="margin:0 20px 0 -20px"><span style="margin-left:20px;float:right;width:280px;height:497px;border:1px solid lightgrey;"><img data-gifffer="images/aux_menu.gif" data-gifffer-width="278" data-gifffer-height="495" /></span>In the above code, the third parameter of <i>aux2</i> is <b>false</b>. The third parameter of the AutoConnectAux constructor is an indicator for whether it's shown to the AutoConnect menu. Right animation is an execution result of the above code. You will see that the menu applies only two items for three custom Web pages. The sketch of this animation is written to transition to <i>aux2</i> by the utility of the <a href="acelements.html#autoconnectsubmit"><b>AutoConnectSubmit</b></a> element owned by <i>aux1</i>.<sup id="fnref:2"><a class="footnote-ref" href="#fn:2" rel="footnote">2</a></sup><br>The <i>aux2</i> page transitions only from the <i>aux1</i> page. As shown in mqttRSSI in the library example, its page replies the saving result for the parameters entered on the previous page. It can not be invoked directly from the menu and want to hide them with AutoConnect menu items. The utility of the third parameter of the AutoConnectAux constructor is that.</p></li>
-</ul>
-
-[^2]:
-    The sketch is actually this:
-    ```cpp
-    #include <ESP8266WiFi.h>
-    #include <ESP8266WebServer.h>
-    #include <AutoConnect.h>
-    
-    AutoConnect     portal;
-    
-    ACText(header, "MQTT broker settings");
-    ACText(caption1, "Publishing the WiFi...");
-    ACSubmit(save, "SAVE", "/mqtt_save");
-    AutoConnectAux  aux1("/mqtt_setting", "MQTT Setting", { header, caption1, save });
-    
-    ACText(caption2, "Save parameters");
-    ACSubmit(start, "START", "/mqtt_start"); 
-    AutoConnectAux  aux2("/mqtt_save", "MQTT Setting", false, { caption2, start });
-    
-    AutoConnectAux  aux3("/mqtt_start", "MQTT Start");
-    
-    void setup() {
-      portal.join({ aux1, aux2, aux3 });
-      portal.begin();
-    }
-    
-    void loop() {
-      portal.handleClient();
-    }
-    ```
-
-## Basic steps to use custom Web pages
-
-So, the basic procedure for handling of the custom Web pages is as follows:
-
-1. Create or define [AutoConnectAux](apiaux.md#autoconnectaux).
-2. Create or define [AutoConnectElement(s)](acelements.md).
-3. Add [AutoConnectElement(s)](acelements.md) to AutoConnectAux.
-4. Create more AutoConnectAux containing [AutoConnectElement(s)](acelements.md), if necessary.
-5. [Register](api.md#on) the request handlers for the custom Web pages.
-6. [Join](api.md#join) prepared AutoConnectAux(s) to AutoConnect.
-7. Invoke [AutoConnect::begin()](api.md#begin).
-8. Perform [AutoConnect::handleClient()](api.md#handleclient).
-
-## Write the custom Web page with JSON
-
-You can write the custom Web page in JSON without using sketch codes.[^3] It is possible to describe the entire page in JSON and can be described for each element also. The JSON document can be saved in SPIFFS or SD and read using AutoConnect's [**load**](api.md#load) function. you can reduce the steps of the basic procedure with this approach, but this way consumes a lot of memory. 
-The following JSON code and sketch will execute the custom Web page as an example in the above figure. That is, the sketch of this code and footnote[^2] is equivalent.
-
-**custom_page.json**
-```json
-[
-  {
-    "title": "MQTT Setting",
-    "uri": "/mqtt_setting",
-    "menu": true,
-    "element": [
-      {
-        "name": "header",
-        "type": "ACText",
-        "value": "MQTT broker settings"
-      },
-      {
-        "name": "caption1",
-        "type": "ACText",
-        "value": "Publishing the WiFi..."
-      },
-      {
-        "name": "save",
-        "type": "ACSubmit",
-        "value": "SAVE",
-        "uri": "/mqtt_save"
-      }
-    ]
-  },
-  {
-    "title": "MQTT Setting",
-    "uri": "/mqtt_save",
-    "menu": false,
-    "element": [
-      {
-        "name": "caption2",
-        "type": "ACText",
-        "value": "Save parameters"
-      },
-      {
-        "name": "start",
-        "type": "ACSubmit",
-        "value": "START",
-        "uri": "/mqtt_start"
-      }
-    ]
-  },
-  {
-    "title": "MQTT Start",
-    "uri": "/mqtt_start",
-    "menu": true,
-    "element": []
-  }
-]
-```
-
-**The sketch**
-```cpp hl_lines="11 12"
-#include <ESP8266WiFi.h>
-#include <ESP8266WebServer.h>
-#include <FS.h>
-#include <AutoConnect.h>
-
-AutoConnect  portal;
-
-void setup() {
-  SPIFFS.begin();
-
-  File page = SPIFFS.open("/custom_page.json", "r");
-  portal.load(page);
-
-  page.close();
-  SPIFFS.end();
-
-  portal.begin();
-}
-
-void loop() {
-  portal.handleClient();
-}
-```
-
-[^3]: Installation of the [ArduinoJson](https://github.com/bblanchon/ArduinoJson) as the latest release of version 5 series is required.
-
-## Passing parameters with sketches and custom Web pages
-
-A sketch can access variables of [AutoConnectElements](acelements.md) on the custom Web page. The value entered into the AutoConnectElements is stored to the [member variables](acelements.md#form-and-autoconnectelements) of the element by AutoConnect whenever GET / POST transmission occurs. Your sketches can get these values with the request handler which will be registered by [AutoConnect::on](api.md#on) function. And if you assign a value to an element before a request to the page occurs, its value will appear as the initial value when the page is displayed. The details are explained in section [*Custom field data handling*](achandling.md#custom-field-data-handling).
-
-<script>
-  window.onload = function() {
-    Gifffer();
-  };
-</script>




diff --git a/lib/AutoConnect-master/mkdocs/acjson.md b/lib/AutoConnect-master/mkdocs/acjson.md
deleted file mode 100644
index 2ac4abd208d139602c5f6ff23faabc502b73d3ad..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/acjson.md
+++ /dev/null
@@ -1,264 +0,0 @@
-
-
-You can embed custom Web pages written in [**JSON**](https://www.json.org/index.html) into AutoConnect without AutoConnectAux &amp; AutoConnectElements declaration. Custom Web page declaration by JSON can  embed in the sketch as a fixed string or can store in the external file such as SPIFFS for stream loading. Also, you can also load and save AutoConnectElements objects individually.[^1]
-
-[^1]:Loading and saving AutoConnect parameters adopt this method.
-
-By providing the following JSON document to AutoConnect, you can include the custom Web page like the below:
-
-<div style="float:left;width:50%;height:470px;overflow:auto"><img src="images/ac_json.png"></div>
-<img style="margin-left:30px;width:40%;height:470px;" src="images/ac_mqtt_setting.png">
-
-A JSON document for AutoConnect can contain the custom Web page multiple. You can further reduce the sketch process by loading multiple pages of JSON document at once.
-
-!!! caution "Need ArduinoJson v5"
-    To process the AutoConnectAux &amp; AutoConnectElements written in the JSON is you need to install the [ArduinoJson version 5](https://arduinojson.org/v5/doc/installation/) library.
-
-## JSON objects &amp; elements for the custom Web page
-
-### <i class="fa fa-caret-right"></i> JSON document structure for AutoConnectAux
-
-AutoConnectAux will configure custom Web pages with JSON objects. The elements that make up the object are as follows:
-
-```
-{
-  "title" : title,
-  "uri" : uri,
-  "menu" : true | false,
-  "element" : element_array
-}
-```
-
-#### <i class="fa fa-key"></i> **title**
-: A title of the custom Web page. This is string value. String specified *title* will be displayed in the AutoConnection menu.
-
-#### <i class="fa fa-key"></i> **uri**
-: String of URI path that specifies where to place the custom Web page. It needs to be a location from the root path including '**/**'.
-
-#### <i class="fa fa-key"></i> **menu**
-: This is a Boolean value indicating whether to include the custom Web page in the AutoConnect menu. If the page only responds to another page and you want to prevent the direct use from the menu, you can exclude from the AutoConnect menu. If this key is false, it will not appear in the menu.
-
-#### <i class="fa fa-key"></i> **element**
-: Describe an array of JSON objects as *element_array*. It is a JSON object array of the [AutoConnectElements](#json-object-for-autoconnectelements) that make up the custom Web page.
-
-!!! note "Order of elements on a custom Web page"
-    The order in which AutoConnectElements are placed on a custom Web page is the order in the JSON document.
-
-### <i class="fa fa-copy"></i> Multiple custom Web pages declaration in JSON document
-
-You can put declarations of multiple custom Web pages in one JSON document. In that case, declare an array of each custom Web page with JSON. The following JSON document contains three custom Web pages:
-
-```json
-[
-  {
-    "title" : "Page 1 title",
-    "uri" : "/page1",
-    "menu" : true,
-    "element" : [
-      {
-        "name" : "caption",
-        "type" : "ACText",
-        "value" : "hello, world"
-      },
-      {
-        "name" : "send",
-        "type" : "ACSubmit",
-        "uri" : "/page2"
-      }
-    ]
-  },
-  {
-    "title" : "Page 1 title",
-    "uri" : "/page2",
-    "menu" : false,
-    "element" : [
-      {
-        "name" : "responds",
-        "type" : "ACText",
-        "value" : "Good day"
-      },
-      {
-        "name" : "send",
-        "type" : "ACSubmit",
-        "uri" : "/page3"
-      }
-    ]
-  },
-  {
-    "title" : "Page 3 title",
-    "uri" : "/page3",
-    "menu" : true,
-    "element" : [
-      {
-        "name" : "responds",
-        "type" : "ACText",
-        "value" : "bye"
-      }
-    ]
-  }
-]
-```
-
-### <i class="fa fa-caret-right"></i> JSON object for AutoConnectElements
-
-JSON description for AutoConnectElements describes as an array in the *element* with arguments of [each constructor](acelements.md#constructor).
-
-```
-{
-  "name" : name,
-  "type" : type,
-  key_according_to_type : the_value | array_of_value,
-  [ key_according_to_type : the_value | array_of_value ]
-}
-```
-
-#### <i class="fa fa-key"></i> **name**
-: A string of the name for the element.
-
-#### <i class="fa fa-key"></i> **type**
-: A string of the type for the element. For this type, specify the following string corresponding to each element.
-: -  AutoConnectButton: [**ACButton**](#acbutton)
-: -  AutoConnectCheckbox: [**ACCheckbox** ](#accheckbox)
-: -  AutoConnectElement: [**ACElement**](#acelement)
-: -  AutoConnectFile: [**ACFile**](#acfile)
-: -  AutoConnectInput: [**ACInput**](#acinput)
-: -  AutoConnectRadio: [**ACRadio**](#acradio)
-: -  AutoConnectSelect: [**ACSelect**](#acselect)
-: -  AutoConnectSubmit: [**ACSubmit**](#acsubmit)
-: -  AutoConnectText: [**ACText**](#actext)
-
-#### <i class="fa fa-key"></i> **<i>key_according_to_type</i>**
-
-This is different for each AutoConnectElements, and the key that can be specified by the type of AutoConnectElements is determined.
-
-#### <i class="fa fa-caret-right"></i> ACButton
-: - **value** : Specifies the button label. This value also applies to the `value` attribute of an HTML `button` tag.
-: - **action** : Specifies an action to be fire on a mouse click on the button. It is mostly used with a JavaScript to activate a script, or it directly describes a JavaScript.
-
-#### <i class="fa fa-caret-right"></i> ACCheckbox
-: - **value** : Specifies the value to be supplied to the checkbox. It will be packed in the query string as `name=value` when the checkbox is ticked.
-: - **label** : Specifies a label of the checkbox. Its placement is always to the right of the checkbox.
-: - **checked** : Specifies checking status as a **boolean** value. The value of the checked checkbox element is packed in the query string and sent.
-
-#### <i class="fa fa-caret-right"></i> ACElement
-: - **value** : Specifies the source code of generating HTML. The value is native HTML code and is output as HTML as it is.
-
-#### <i class="fa fa-caret-right"></i> ACFile
-: - **value** : The file name of the upload file will be stored. The `value` is read-only and will be ignored if specified.
-: - **label** : Specifies a label of the file selection box. Its placement is always to the left of the file selection box.
-: - **store** : Specifies the destination to save the uploaded file. Its value accepts one of the following:<p>
-<b>fs</b>&nbsp;: Save as the SPIFFS file in flash of ESP8266/ESP32 module.<br>
-<b>sd</b>&nbsp;: Save to an external SD device connected to ESP8266/ESP32 module.<br>
-<b>extern</b>&nbsp;: Pass the content of the uploaded file to the uploader which is declared by the sketch individually. Its uploader must inherit [**AutoConnectUploadHandler**](acupload.md#to-upload-to-a-device-other-than-flash-or-sd) class and implements *_open*, *_write* and *_close* function.</p>
-
-#### <i class="fa fa-caret-right"></i> ACInput
-: - **value** : Specifies the initial text string of the input box. If this value is omitted, placeholder is displayed as the initial string.
-: - **label** : Specifies a label of the input box. Its placement is always to the left of the input box.
-: - **placeholder** : Specifies short hint of the input box.
-
-#### <i class="fa fa-caret-right"></i> ACRadio
-: - **value** : Specifies the collection of radio buttons as an array element.
-: - **label** : Specifies a label of the collection of radio buttons, not for each button. The arrangement will be the top or left side according to the `arrange`.
-: - **arrange** : Specifies the orientation of the radio buttons. Its value accepts one of the following:<p>
-<b>horizontal</b>&nbsp;: Horizontal arrangement.<br>
-<b>vertical</b>&nbsp;: Vertical arrangement.</p>
-
-: - **checked** : Specifies the index number (1-based) of the radio buttons collection to be checked.
-
-#### <i class="fa fa-caret-right"></i> ACSelect
-: - **label** : Specifies a label of the drop-down list. Its placement is always to the left of the drop-down list.
-: - **option** : Specifies the initial value collection of the drop-down list as an array element.
-
-#### <i class="fa fa-caret-right"></i> ACSubmit
-: - **value** : Specifies a label of the submit button.
-: - **uri** : Specifies the URI to send form data when the button is clicked.
-
-#### <i class="fa fa-caret-right"></i> ACText
-: - **value** : Specifies a content and also can contain the native HTML code, but remember that your written code is enclosed by the div tag.
-: - **style** : Specifies the qualification style to give to the content and can use the style attribute format as it is.
-: - **format** : Specifies how to interpret the value. It specifies the conversion format when outputting values. The format string conforms to the C-style printf library functions, but depends on the espressif sdk implementation. The conversion specification is valid only for **%s** format. (Left and Right justification, width are also valid.)
-
-!!! caution "AutoConnect's JSON parsing process is not perfect"
-    It is based on analysis by ArduinoJson, but the semantic analysis is simplified to save memory. Consequently, it is not an error that a custom Web page JSON document to have unnecessary keys. It will be ignored.
-
-## Loading JSON document
-
-### <i class="fa fa-caret-right"></i> Loading from the streamed file
-
-AutoConnect supports loading of JSON document from the following instances:
-
-- String
-- PROGMEM
-- Stream
-
-To load custom Web pages JSON document into AutoConnect, use the [load](api.md#load) function of the AutoConnect class. Its JSON document can read must be completed as a description interpretable by the ArduinoJson library. It cannot import custom Web pages if there are syntax errors for the JSON. If you can not see the custom Web page prepared by JSON, you can check the syntax with [ArduinoJson Assistant](https://arduinojson.org/v5/assistant/). It is useful for pre-checking.
-
-```cpp
-bool AutoConnect::load(const String& aux)
-```
-```cpp
-bool AutoConnect::load(const __FlashStringHelper* aux)
-```
-```cpp
-bool AutoConnect::load(Stream& aux)
-```
-An example of using each function is as follows.
-```cpp
-AutoConnect  portal;
-
-// Loading from String
-const String aux = String("{\"title\":\"Page 1 title\",\"uri\":\"/page1\",\"menu\":true,\"element\":[{\"name\":\"caption\",\"type\":\"ACText\",\"value\":\"hello, world\"}]}");
-portal.load(aux);
-
-// Loading from PROGMEM
-const char aux[] PROGMEM = R"raw(
-{
-  "title" : "Page 1 title",
-  "uri" : "/page1",
-  "menu" : true,
-  "element" : [
-    {
-      "name" : "caption",
-      "type" : "ACText",
-      "value" : "hello, world"
-    }
-  ]
-}
-)raw";
-portal.load(aux);
-
-// Loading from Stream assumes "aux.json" file should be store in SPIFFS.
-File aux = SPIFFS.open("aux.json", "r");
-portal.load(aux);
-aux.close();
-```
-
-AutoConnect passes the given JSON document directly to the [**parseObject()**](https://arduinojson.org/v5/api/jsonbuffer/parseobject/) function of the ArduinoJson library for parsing. Therefore, the constraint of the parseObject() function is applied as it is in the parsing of the JSON document for the AutoConnect. That is, if the JSON string is read-only, duplicating the input string occurs and consumes more memory.
-
-### <i class="fa fa-caret-right"></i> Adjust the JSON document buffer size
-
-AutoConnect uses ArduinoJson library's dynamic buffer to parse JSON documents. Its dynamic buffer allocation scheme depends on the version 5 or version 6 of ArduinoJson library. Either version must have enough buffer to parse the custom web page's JSON document successfully. AutoConnect has the following three constants internally to complete the parsing as much as possible in both ArduinoJson version. These constants are macro defined in [AutoConnectDefs.h](https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h).
-
-If memory insufficiency occurs during JSON document parsing, you can adjust these constants to avoid insufficiency by using the [JsonAssistant](https://arduinojson.org/v6/assistant/) with deriving the required buffer size in advance.
-
-```cpp
-#define AUTOCONNECT_JSONBUFFER_SIZE     256
-#define AUTOCONNECT_JSONDOCUMENT_SIZE   (8 * 1024)
-#define AUTOCONNECT_JSONPSRAM_SIZE      (16* 1024)
-```
-
-#### AUTOCONNECT_JSONBUFFER_SIZE
-
-This is a unit size constant of [DynamicJsonBuffer](https://arduinojson.org/v5/faq/what-are-the-differences-between-staticjsonbuffer-and-dynamicjsonbuffer/) and works when the library used is ArduinoJson version 5. A buffer size of the JSON document increases with this unit. This value relates to the impact of the fragmented heap area. If it is too large, may occur run-out of memory.
-
-#### AUTOCONNECT_JSONDOCUMENT_SIZE
-
-This is a size of [DynamicJsonDocument](https://arduinojson.org/v6/api/dynamicjsondocument/) for ArduinoJson version 6. This buffer is not automatically expanding, and the size determines the limit.
-
-#### AUTOCONNECT_JSONPSRAM_SIZE
-
-For ESP32 module equips with PSRAM, you can allocate the JSON document buffer to PSRAM. Buffer allocation to PSRAM will enable when **PSRAM:Enabled** option selected in the Arduino IDE's Board Manager menu. It is available since ArduinoJson 6.10.0.
-
-## Saving JSON document
-
-The sketch can persist AutoConnectElements as a JSON document and also uses [this function](achandling.md#saving-autoconnectelements-with-json) to save the values ​​entered on the custom Web page. And you can reload the saved JSON document into AutoConnectElements as the field in a custom Web page using the [load function](achandling.md#loading-autoconnectaux-autoconnectelements-with-json). 




diff --git a/lib/AutoConnect-master/mkdocs/acupload.md b/lib/AutoConnect-master/mkdocs/acupload.md
deleted file mode 100644
index 604f00d88ee7c8c8451b42d724a1904d3fa8c975..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/acupload.md
+++ /dev/null
@@ -1,384 +0,0 @@
-## Uploading file from Web Browser
-
-If you have to write some data individually to the ESP8266/ESP32 module for the sketch behavior, the [AutoConnectFile](acelements.md#autoconnectfile) element will assist with your wants implementation. The AutoConnectFile element produces an HTML `<input type="file">` tag and can save uploaded file to the flash or external SD of the ESP8266/ESP32 module. The handler for saving is built into AutoConnect. You can use it to inject any sketch data such as the initial values for the custom Web page into the ESP module via OTA without using the sketch data upload tool of Arduino-IDE.
-<p style="display:block;margin-left:auto;margin-right:auto;width:603px;height:368px;border:1px solid lightgray;"><img data-gifffer="images/upload.gif" data-gifffer-width="601" data-gifffer-height="366""/></p>
-
-## Basic steps of the file upload sketch
-
-Here is the basic procedure of the sketch which can upload files from the client browser using AutoConnectFile:[^1]
-
-[^1]:The AutoConnectFile element can be used with other AutoConnectElements on the same page.
-
-1. Place AutoConnectFile on a custom Web page by writing JSON or constructor code directly with the sketch.
-2. Place other AutoConnectElements as needed.
-3. Place AutoConnectSubmit on the same custom Web page.
-4. Perform the following process in the on-handler of submitting destination:
-    - Retrieve the [AutoConnectFile instance](apielements.md#autoconnectfile) from the custom Web page where you placed the AutoConnectFile element using the [AutoConnectAux::getElement](apiaux.md#getelement) function or the [operator \[\]](apiaux.md#operator).
-    - Start access to the device specified as the upload destination. In usually, it depends on the file system's begin function. For example, if you specified Flash's SPIFFS as the upload destination, invokes *SPIFFS.begin()*.
-    - The [value member](acelements.md#value_3) of AutoConnectFile contains the file name of the upload file. Use its file name to access the uploaded file on the device.
-    - Invokes the end function associated with the begin to close the device. It is the *SPIFFS.end()** if the flash on the ESP module has been begun for SPIFFS.
-
-The following sketch is an example that implements the above basic steps. The *postUpload* function is the on-handler and retrieves the AutoConnectFile as named `upload_file`. You should note that this handler is **not** for a custom Web page placed with its AutoConnectFile element. The uploaded file should be processed by the handler for the transition destination page from the AutoConnectFile element placed page. AutoConnect built-in upload handler will save the uploaded file to the specified device before invoking the *postUpload* function.
-
-However, If you use uploaded files in different situations, it may be more appropriate to place the actual handling process outside the handler. It applies for the parameter file, etc. The important thing is that you do not have to sketch file reception and storing logic by using the AutoConnectFile element and the upload handler built into the AutoConnect.
-
-```cpp hl_lines="14 53 64 67 70 86"
-#include <ESP8266WiFi.h>
-#include <ESP8266WebServer.h>
-#include <FS.h>
-#include <AutoConnect.h>
-
-// Upload request custom Web page
-static const char PAGE_UPLOAD[] PROGMEM = R"(
-{
-  "uri": "/",
-  "title": "Upload",
-  "menu": true,
-  "element": [
-    { "name":"caption", "type":"ACText", "value":"<h2>File uploading platform<h2>" },
-    { "name":"upload_file", "type":"ACFile", "label":"Select file: ", "store":"fs" },
-    { "name":"upload", "type":"ACSubmit", "value":"UPLOAD", "uri":"/upload" }
-  ]
-}
-)";
-
-// Upload result display
-static const char PAGE_BROWSE[] PROGMEM = R"(
-{
-  "uri": "/upload",
-  "title": "Upload",
-  "menu": false,
-  "element": [
-    { "name":"caption", "type":"ACText", "value":"<h2>Uploading ended<h2>" },
-    { "name":"filename", "type":"ACText" },
-    { "name":"size", "type":"ACText", "format":"%s bytes uploaded" },
-    { "name":"content_type", "type":"ACText", "format":"Content: %s" }
-  ]
-}
-)";
-
-ESP8266WebServer server;
-AutoConnect portal(server);
-// Declare AutoConnectAux separately as a custom web page to access
-// easily for each page in the post-upload handler.
-AutoConnectAux auxUpload;
-AutoConnectAux auxBrowse;
-
-/**
- * Post uploading, AutoConnectFile's built-in upload handler reads the
- * file saved in SPIFFS and displays the file contents on /upload custom
- * web page. However, only files with mime type uploaded as text are
- * displayed. A custom web page handler is called after upload.
- * @param  aux  AutoConnectAux(/upload)
- * @param  args PageArgument
- * @return Uploaded text content
- */
-String postUpload(AutoConnectAux& aux, PageArgument& args) {
-  String  content;
-  AutoConnectFile&  upload = auxUpload["upload_file"].as<AutoConnectFile>();
-  AutoConnectText&  aux_filename = aux["filename"].as<AutoConnectText>();
-  AutoConnectText&  aux_size = aux["size"].as<AutoConnectText>();
-  AutoConnectText&  aux_contentType = aux["content_type"].as<AutoConnectText>();
-  // Assignment operator can be used for the element attribute.
-  aux_filename.value = upload.value;
-  aux_size.value = String(upload.size);
-  aux_contentType.value = upload.mimeType;
-  // The file saved by the AutoConnect upload handler is read from
-  // the EEPROM and echoed to a custom web page.
-  SPIFFS.begin();
-  File uploadFile = SPIFFS.open(String("/" + upload.value).c_str(), "r");
-  if (uploadFile) {
-    while (uploadFile.available()) {
-      char c = uploadFile.read();
-      Serial.print(c);
-    }
-    uploadFile.close();
-  }
-  else
-    content = "Not saved";
-  SPIFFS.end();
-  return String();
-}
-
-void setup() {
-  delay(1000);
-  Serial.begin(115200);
-  Serial.println();
-
-  auxUpload.load(PAGE_UPLOAD);
-  auxBrowse.load(PAGE_BROWSE);
-  portal.join({ auxUpload, auxBrowse });
-  auxBrowse.on(postUpload);
-  portal.begin();
-}
-
-void loop() {
-  portal.handleClient();
-}
-```
-
-## Where will the file upload
-
-The AutoConnect built-in upload handler can save the upload file to three locations:
-
-1. Flash memory embedded in the ESP8266/ESP32 module
-2. SD device externally connected to the ESP8266/ESP32 module
-3. Other character devices
-
-You can specify the device type to save with the [**store**](acelements.md#store) attribute of AutoConenctFile, and it accepts the following values:
-
-- Flash : `AC_File_FS` for the API parameter or `fs` for the JSON document
-- SD : `AC_File_SD` for the API parameter or `sd` for the JSON document
-- Other : `AC_File_Extern` for the API parameter or `extern` for the JSON document
-
-The substance of AC_File_FS (fs) is a SPIFFS file system implemented by the ESP8266/ESP32 core, and then AutoConnect uses the Global Instance **SPIFFS** to access SPIFFS.
-
-Also, the substance of AC_File_SD (sd) is a FAT file of Arduino SD library ported to the ESP8266/ESP32 core, and then AutoConnect uses the Global Instance **SD** to access SD. When saving to an external SD device, there are additional required parameters for the connection interface and is defined as the macro in AutoConnectDefs.h.
-
-```cpp
-#define AUTOCONNECT_SD_CS       SS
-#define AUTOCONNECT_SD_SPEED    4000000
-```
-
-`AUTOCONNECT_SD_CS` defines which GPIO for the CS (Chip Select, or SS as Slave Select) pin. This definition is derived from pins_arduino.h, which is included in the Arduino core distribution. If you want to assign the CS pin to another GPIO, you need to change the macro definition of AutoConnectDefs.h.
-
-`AUTOCONNECT_SD_SPEED` defines SPI clock speed depending on the connected device.
-
-!!! info "Involves both the begin() and the end()"
-    The built-in uploader executes the begin and end functions regardless of the sketch whence the file system of the device will terminate with the uploader termination. Therefore, to use the device in the sketch after uploading, you need to **restart it with the begin** function.
-
-## When it will be uploaded
-
-Upload handler will be launched by ESP8266WebServer/WebServer(as ESP32) library which is triggered by receiving an HTTP stream of POST BODY including file content. Its launching occurs before invoking the page handler.
-
-The following diagram illustrates the file uploading sequence:
-
-<img src="images/ac_upload_flow.svg">
-
-At the time of the page handler behaves, the uploaded file already saved to the device, and the [member variables](acelements.md#name_3) of AutoConnectFile reflects the file name and transfer size.
-
-## The file name for the uploaded file
-
-AutoConnetFile saves the uploaded file with the file name you selected by `<input type="file">` tag on the browser. The file name used for uploading is stored in the AutoConnetFile's value member, which you can access after uploading. (i.e. In the handler of the destination page by the AutoConnectSubmit element.) You can not save it with a different name. It can be renamed after upload if you need to change the name.
-
-## Upload to a device other than Flash or SD
-
-You can output the file to any device using a custom uploader by specifying [**extern**](acjson.md#acfile) with the [**store**](acjson.md#acfile) attribute of [AutoConnectFile](acjson.md#acfile) (or specifying [**AC_File_Extern**](acelements.md#store) for the [**store**](apielements.md#store) member variable) and can customize the uploader according to the need to upload files to other than Flash or SD. Implements your own uploader with inheriting the [**AutoConnectUploadHandler**](#upload-handler-base-class) class which is the base class of the upload handler.
-
-!!! note "It's not so difficult"
-    Implementing the custom uploader requires a little knowledge of the c++ language. If you are less attuned to programming c++, you may find it difficult. But don't worry. You can make it in various situations by just modifying the sketch skeleton that appears at the end of this page.
-
-### <i class="fa fa-code"></i> Upload handler base class
-
-AutoConnectUploadHandler is a base class of upload handler and It has one public member function and three protected functions. 
-
-#### <i class="fa fa-caret-right"></i> Constructor
-
-```cpp
-AutoConnectUploadHandler()
-```
-
-#### <i class="fa fa-caret-right"></i> Member functions
-
-The **upload** public function is an entry point, the ESP8266WebServer (WebServer as ESP32) library will invoke the upload with each time of uploading content divided into chunks. 
-
-Also, the **\_open**, **\_write** and **\_close** protected functions are actually responsible for saving files and are declared as pure virtual functions. A custom uploader class that inherits from the AutoConnectUploadHandler class need to implement these functions.
-
-The actual upload process is handled by the three private functions above, and then upload only invokes three functions according to the upload situation. In usually, there is no need to override the upload function in an inherited class.
-
-```cpp
-public virtual void upload(const String& requestUri, const HTTPUpload& upload)
-```
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">requestUri</span><span class="apidesc">URI of upload request source.</span></dd>
-    <dd><span class="apidef">upload</span><span class="apidesc">A data structure of the upload file as <b>HTTPUpload</b>. It is defined in the ESP8266WebServer (WebServer as ESP32) library as follows:
-
-```cpp
-typedef struct {
-  HTTPUploadStatus status;
-  String  filename;
-  String  name;
-  String  type;
-  size_t  totalSize;
-  size_t  currentSize;
-  size_t  contentLength;
-  uint8_t buf[HTTP_UPLOAD_BUFLEN];
-} HTTPUpload;
-```
-    </span></dd>
-</dl>
-
-The upload handler needs to implement processing based on the enumeration value of HTTPUpload.status as **HTTPUploadStatus** enum type. HTTPUploadStatus enumeration is as follows:
-
-- **`UPLOAD_FILE_START`** : Invokes to the \_open.
-- **`UPLOAD_FILE_WRITE`** : Invokes to the \_write.
-- **`UPLOAD_FILE_END`** : Invokes to the \_close.
-- **`UPLOAD_FILE_ABORTED`** : Invokes to the \_close.
-
-The \_open function will be invoked when HTTPUploadStatus is **UPLOAD_FILE_START**. Usually, the implementation of an inherited class will open the file.
-
-```cpp
-protected virtual bool _open(const char* filename, const char* mode) = 0
-```
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">filename</span><span class="apidesc">Uploading file name.</span></dd>
-    <dd><span class="apidef">mode</span><span class="apidesc">An indicator for the file access mode, a "w" for writing.</span></dd>
-    <dt>**Return value**</dt>
-    <dd><span class="apidef">true</span><span class="apidesc">File open successful.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">Failed to open.</span></dd>
-</dl>
-
-The \_write function will be invoked when HTTPUploadStatus is **UPLOAD_FILE_WRITE**. The content of the upload file is divided and the \_write will be invoked in multiple times. Usually, the implementation of an inherited class will write data.
-
-```cpp
-protected virtual size_t _write(const uint8_t *buf, const size_t size))= 0
-```
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">buf</span><span class="apidesc">File content block.</span></dd>
-    <dd><span class="apidef">size</span><span class="apidesc">File block size to write.</span></dd>
-    <dt>**Return value**</dt>
-    <dd>Size written.</dd>
-</dl>
-
-The \_close function will be invoked when HTTPUploadStatus is **UPLOAD_FILE_END** or **UPLOAD_FILE_ABORTED**. Usually, the implementation of an inherited class will close the file.
-
-```cpp
-protected virtual void _close(void) = 0
-```
-
-For reference, the following AutoConnectUploadFS class is an implementation of AutoConnect built-in uploader and inherits from AutoConnectUploadHandler.
-
-```cpp
-class AutoConnectUploadFS : public AutoConnectUploadHandler {
- public:
-  explicit AutoConnectUploadFS(SPIFFST& media) : _media(&media) {}
-  ~AutoConnectUploadFS() { _close(); }
-
- protected:
-  bool _open(const char* filename, const char* mode) override {
-    if (_media->begin()) {
-      _file = _media->open(filename, mode);
-      return _file != false;      
-    }
-    return false;
-  }
-
-  size_t _write(const uint8_t* buf, const size_t size) override {
-    if (_file)
-      return _file.write(buf, size);
-    else
-      return -1;
-  }
-
-  void _close(void) override {
-    if (_file)
-      _file.close();
-    _media->end();
-  }
-
- private:
-  SPIFFST*  _media;
-  SPIFileT  _file; 
-};
-```
-
-### <i class="fa fa-code"></i> Register custom upload handler
-
-In order to upload a file by the custom uploader, it is necessary to register it to the custom Web page beforehand. To register a custom uploader, specify the custom uploader class name in the template argument of the  [AutoConnectAux::onUpload](apiaux.md#onupload) function and invokes it.
-
-```cpp
-void AutoConnectAux::onUpload<T>(T& uploadClass)
-```
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">T</span><span class="apidesc">Specifies a class name of the custom uploader. This class name is a class that you implemented by inheriting AutoConnectUploadHandler for custom upload.</span></dd>
-    <dd><span class="apidef">uploadClass</span><span class="apidesc">Specifies the custom upload class instance.</span></dd>
-</dl>
-
-The rough structure of the sketches that completed these implementations will be as follows:
-
-```cpp
-#include <ESP8266WiFi.h>
-#include <ESP8266WebServer.h>
-#include <AutoConnect.h>
-
-static const char PAGE_UPLOAD[] PROGMEM = R"(
-{
-  "uri": "/",
-  "title": "Upload",
-  "menu": true,
-  "element": [
-    { "name":"caption", "type":"ACText", "value":"<h2>File uploading platform<h2>" },
-    { "name":"upload_file", "type":"ACFile", "label":"Select file: ", "store":"extern" },
-    { "name":"upload", "type":"ACSubmit", "value":"UPLOAD", "uri":"/upload" }
-  ]
-}
-)";
-
-static const char PAGE_RECEIVED[] PROGMEM = R"(
-{
-  "uri": "/upload",
-  "title": "Upload ended",
-  "menu": false,
-  "element": [
-    { "name":"caption", "type":"ACText", "value":"<h2>File uploading ended<h2>" }
-  ]
-}
-)";
-
-// Custom upload handler class
-class CustomUploader : public AutoConnectUploadHandler {
-public:
-  CustomUploader() {}
-  ~CustomUploader() {}
-
-protected:
-  bool   _open(const char* filename, const char* mode) override;
-  size_t _write(const uint8_t *buf, const size_t size) override;
-  void   _close(void) override;
-};
-
-// _open for custom open
-bool CustomUploader::_open(const char* filename, const char* mode) {
-  // Here, an implementation for the open file.
-}
-
-// _open for custom write
-size_t CustomUploader::_write(const uint8_t *buf, const size_t size) {
-  // Here, an implementation for the writing the file data.
-}
-
-// _open for custom close
-void CustomUploader::_close(void) {
-  // Here, an implementation for the close file.
-}
-
-AutoConnect     portal;
-AutoConnectAux  uploadPage;
-AutoConnectAux  receivePage;
-CustomUploader  uploader;   // Declare the custom uploader
-
-void setup() {
-  uploadPage.load(PAGE_UPLOAD);
-  receivePage.load(PAGE_RECEIVED);
-  portal.join({ uploadPage, receivePage });
-  receivePage.onUpload<CustomUploader>(uploader);  // Register the custom uploader
-  portal.begin();
-}
-
-void loop() {
-  portal.handleClient();
-}
-```
-
-!!! note "Don't forget to specify the store"
-    When using a custom uploader, remember to specify the **extern** for the store attribute of AutoConnectFile.
-
-<script>
-  window.onload = function() {
-    Gifffer();
-  };
-</script>




diff --git a/lib/AutoConnect-master/mkdocs/advancedusage.md b/lib/AutoConnect-master/mkdocs/advancedusage.md
deleted file mode 100644
index 30bd63ba371640008865ed7fd56b3d7cd887846c..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/advancedusage.md
+++ /dev/null
@@ -1,494 +0,0 @@
-## Advanced usage
-
-### <i class="fa fa-caret-right"></i> 404 handler
-
-Registering the "not found" handler is a different way than ESP8266WebServer (WebServer as ESP32). The *onNotFound* of ESP8266WebServer/WebServer does not work with AutoConnect. AutoConnect overrides *ESP8266WebServer::onNotFound*/*WebServer::onNotFound* to handle a captive portal. To register "not found" handler, use [*AutoConnect::onNotFound*](api.md#onnotfound).
-
-### <i class="fa fa-caret-right"></i> Access to saved credentials
-
-AutoConnect stores the established WiFi connection in the EEPROM of the ESP8266/ESP32 module and equips the class to access it from the sketch. You can read, write or erase the credentials using this class individually. It's [AutoConnectCredential](credit.md#autoconnectcredential) class which provides the access method to the saved credentials in EEPROM. Refer to section [Saved credentail access](credit.md) for details.
-
-### <i class="fa fa-caret-right"></i> Automatic reconnect
-
-When the captive portal is started, SoftAP starts and the STA is disconnected. The current SSID setting memorized in ESP8266 will be lost but then the reconnect behavior of ESP32 is somewhat different from this.
-
-The [*WiFiSTAClass::disconnect*](https://github.com/espressif/arduino-esp32/blob/a0f0bd930cfd2d607bf3d3288f46e2d265dd2e11/libraries/WiFi/src/WiFiSTA.h#L46) function implemented in the arduino-esp32 has extended parameters than the ESP8266's arduino-core. The second parameter of WiFi.disconnect on the arduino-esp32 core that does not exist in the [ESP8266WiFiSTAClass](https://github.com/esp8266/Arduino/blob/7e1bdb225da8ab337373517e6a86a99432921a86/libraries/ESP8266WiFi/src/ESP8266WiFiSTA.cpp#L296) has the effect of deleting the currently connected WiFi configuration and its default value is "false". On the ESP32 platform, even if WiFi.disconnect is executed, WiFi.begin() without the parameters in the next turn will try to connect to that AP. That is, automatic reconnection is implemented in arduino-esp32 already. Although this behavior appears seemingly competent, it is rather a disadvantage in scenes where you want to change the access point each time. When explicitly disconnecting WiFi from the Disconnect menu, AutoConnect will erase the AP connection settings saved by arduino-esp32 core. AutoConnect's automatic reconnection is a mechanism independent from the automatic reconnection of the arduino-esp32 core.
-
-If the [**autoReconnect**](apiconfig.md#autoreconnect) option of the [AutoConnectConfig](apiconfig.md) class is enabled, it automatically attempts to reconnect to the disconnected past access point. When the autoReconnect option is specified, AutoConnect will not start SoftAP immediately if the first WiFi.begin fails. It will scan WiFi signal and the same connection information as the detected BSSID is stored in EEPROM as AutoConnect's credentials, explicitly apply it with WiFi.begin and rerun.
-
-```cpp hl_lines="3"
-AutoConnect       Portal;
-AutoConnectConfig Config;
-Config.autoReconnect = true;
-Portal.config(Config);
-Portal.begin();
-```
-
-An autoReconnect option is available to *AutoConnect::begin* without SSID and pass passphrase.
-
-!!! caution "An autoReconnect will work if SSID detection succeeded"
-    An autoReconnect will not effect if the SSID which stored credential to be connected is a hidden access point.
-
-### <i class="fa fa-caret-right"></i> Auto save Credential
-
-By default, AutoConnect saves the credentials of the established connection in EEPROM. You can disable it with the [**autoSave**](apiconfig.md#autosave) parameter specified by [AutoConnectConfig](apiconfig.md).
-
-```cpp hl_lines="3"
-AutoConnect       Portal;
-AutoConnectConfig Config;
-Config.autoSave = AC_SAVECREDENTIAL_NEVER;
-Portal.config(Config);
-Portal.begin();
-```
-
-!!! note "In ESP32, the credentials for AutoConnect are not in NVS"
-    The credentials used by AutoConnect are not saved in NVS on ESP32 module. ESP-IDF saves the WiFi connection configuration to NVS, but AutoConnect stores it on the EEPROM partition. You can find the partition table for default as [default.csv](https://github.com/espressif/arduino-esp32/blob/master/tools/partitions/default.csv)
-
-### <i class="fa fa-caret-right"></i> Captive portal start detection
-
-The captive portal will only be activated if the first *WiFi::begin* fails. Sketch can detect with the [*AutoConnect::onDetect*](api.md#ondetect) function that the captive portal has started. For example, the sketch can be written like as follows that turns on the LED at the start captive portal.
-
-```cpp hl_lines="3 13"
-AutoConnect Portal;
-
-bool startCP(IPAddress ip) {
-  digitalWrite(BUILTIN_LED, HIGH);
-  Serial.println("C.P. started, IP:" + WiFi.localIP().toString());
-  return true;
-}
-
-void setup() {
-  Serial.begin(115200);
-  pinMode(BUILTIN_LED, OUTPUT);
-  digitalWrite(BUILTIN_LED, LOW);
-  Portal.onDetect(startCP);
-  if (Portal.begin()) {
-    digitalWrite(BUILTIN_LED, LOW);
-  }
-}
-
-void loop() {
-  Portal.handleClient();
-}
-```
-
-### <i class="fa fa-caret-right"></i> Captive portal timeout control
-
-AutoConnect has two parameters for timeout control. One is a timeout value used when trying to connect to the specified AP. It behaves the same as general timeout control in connection attempt by WiFi.begin. This control is specified by the third parameter of [*AutoConnect::begin*](api.md#begin). The default value is macro defined by [**AUTOCONNECT_TIMEOUT**](api.md#defined-macros) in the **AutoConnectDef.h** file.
-
-The other timeout control is for the captive portal itself. It is useful when you want to continue sketch execution with offline even if the WiFi connection is not possible. You can also combine it with the [**immediateStart**](#on-demand-start-the-captive-portal) option to create sketches with high mobility.
-
-The timeout of the captive portal is specified together with [*AutoConnectConfig::portalTimeout*](apiconfig.md#portaltimeout) as follows.
-
-```cpp hl_lines="9"
-#include <ESP8266WiFi.h>
-#include <ESP8266WebServer.h>
-#include <AutoConnect.h>
-
-AutoConnect  portal;
-AutoConnectConfig  config;
-
-void setup() {
-  config.portalTimeout = 60000;  // It will time out in 60 seconds
-  portal.config(config);
-  portal.begin();
-}
-
-void loop() {
-  if (WiFi.status() == WL_CONNECTED) {
-    // Some sketch code for the connected scene is here.
-  }
-  else {
-    // Some sketch code for not connected scene is here.
-  }
-  portal.handleClient();
-}
-```
-Also, if you want to stop AutoConnect completely when the captive portal is timed out, you need to call the [*AutoConnect::end*](api.md#end) function. It looks like the following code:
-
-```cpp
-bool acEnable;
-
-void setup() {
-  config.portalTimeout = 60000;  // It will time out in 60 seconds
-  portal.config(config);
-  acEnable = portal.begin();
-  if (!acEnable) {
-    portal.end();
-  }
-}
-
-void loop() {
-  if (WiFi.status() == WL_CONNECTED) {
-    // Some sketch code for the connected scene is here.
-  }
-  else {
-    // Some sketch code for not connected scene is here.
-  }
-  if (acEnable) {
-    portal.handleClient();
-  }
-}
-```
-
-There is another option related to timeout in AutoConnectConfig. It can make use of the captive portal function even after a timeout. The [*AutoConnectConfig::retainPortal*](apiconfig.md#retainportal) option will not stop the SoftAP when the captive portal is timed out. If you enable the ratainPortal option, you can try to connect to the AP at any time while continuing to sketch execution with offline even after the captive portal timed-out. Compared to the above code specified no option with the following example code, the captive portal will remain available even after a timeout without changing the logic of the sketch.
-
-```cpp hl_lines="10"
-#include <ESP8266WiFi.h>
-#include <ESP8266WebServer.h>
-#include <AutoConnect.h>
-
-AutoConnect  portal;
-AutoConnectConfig  config;
-
-void setup() {
-  config.portalTimeout = 60000;  // It will time out in 60 seconds
-  config.retainPortal = true;
-  portal.config(config);
-  portal.begin();
-}
-
-void loop() {
-  if (WiFi.status() == WL_CONNECTED) {
-    // Some sketch code for the connected scene is here.
-  }
-  else {
-    // Some sketch code for not connected scene is here.
-  }
-  portal.handleClient();
-}
-```
-
-### <i class="fa fa-caret-right"></i> Casts the HTML pages to be add-on into the menu
-
-If your sketch handles web pages, you can embed the pages into the AutoConnect menu in continuance enjoying the utility of the WiFi connection feature. Unlike the custom Web pages by [AutoConnectElements](acelements.md), this allows to legacy web pages registered by *ESP8266WebServer::on* or *WebServer::on* function.
-
-You can use AutoConnectAux only constructed with the URI of the page to be embedding. AutoConnectElements is not required. The basic procedure for this as follows:
-
-1. Declare AutoConnectAux for each legacy page. It includes the URI of the page and item string which will display in the AutoConnect menu.
-2. Sketch the legacy page handlers.
-3. Register those handler functions to ESP8266WebServer/WebServer with the **on** function.
-4. Register AutoConnectAux declared with #1 to AutoConnect using [*AutoConnect::join*](api.md#join) function. It serves as a menu item.
-5. [Begin](api.md#begin) the portal.
-6. Performs [*AutoConnect::handleClient*](api.md#handleClient) in the **loop** function.
-
-For details, see section [Constructing the menu](menuize.md) of Examples page.
-
-### <i class="fa fa-caret-right"></i> Change menu title
-
-Although the default menu title is **AutoConnect**, you can change the title by setting [*AutoConnectConfig::title*](apiconfig.md#title). To set the menu title properly, you must set before calling [*AutoConnect::begin*](api.md#begin).
-
-```cpp hl_lines="6 7"
-AutoConnect       Portal;
-AutoConnectConfig Config;
-
-void setup() {
-  // Set menu title
-  Config.title = "FSBrowser";
-  Portal.config(Config);
-  Portal.begin();
-}
-```
-
-Executing the above sketch will rewrite the menu title for the **FSBrowser** as the below.
-
-<div style="float:left;width:40%;height:470px;overflow:hidden;"><img src="images/fsbmenu.png"></div>
-<img style="margin-left:70px;width:40%;height:470px;" src="images/fsbmenu_expand.png">
-
-### <i class="fa fa-caret-right"></i> Change the menu labels
-
-You can change the label of the AutoConnect menu item by rewriting the default label letter in [AutoConnectLabels.h](https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectLabels.h) macros. However, changing menu items letter influences all the sketch's build scenes.
-
-```cpp
-#define AUTOCONNECT_MENULABEL_CONFIGNEW   "Configure new AP"
-#define AUTOCONNECT_MENULABEL_OPENSSIDS   "Open SSIDs"
-#define AUTOCONNECT_MENULABEL_DISCONNECT  "Disconnect"
-#define AUTOCONNECT_MENULABEL_RESET       "Reset..."
-#define AUTOCONNECT_MENULABEL_HOME        "HOME"
-#define AUTOCONNECT_BUTTONLABEL_RESET     "RESET"
-```
-
-### <i class="fa fa-caret-right"></i> Combination with mDNS
-
-With [mDNS library](https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266mDNS), you can access to ESP8266 by name instead of IP address after connection. The sketch can start the MDNS responder after [*AutoConnect::begin*](api.md#begin).
-
-```cpp hl_lines="8 9"
-#include <ESP8266WiFi.h>
-#include <ESP8266mDNS.h>
-#include <ESP8266WebServer.h>
-AutoConnect Portal;
-
-void setup() {
-  if (Portal.begin()) {
-    if (MDNS.begin("esp8266")) {
-      MDNS.addService("http", "tcp", 80);
-    }
-  }
-}
-
-void loop() {
-  Portal.handleClient();
-}
-```
-
-### <i class="fa fa-caret-right"></i> Debug print
-
-You can output AutoConnect monitor messages to the **Serial**. A monitor message activation switch is in an include header file [AutoConnectDefs.h](https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h) of library source. Define [**AC_DEBUG**](https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h#L14) macro to output the monitor messages.[^1]
-
-[^1]:The source code placement of common macros for AutoConnect since v0.9.7 has changed.
-
-```cpp
-#define AC_DEBUG
-```
-
-### <i class="fa fa-caret-right"></i> Disable the captive portal
-
-It can also prevent the captive portal from starting even if the connection at the first *WiFi.begin* fails. In this case, [*AutoConnect::begin*](api.md#begin) behaves same as *WiFi.begin*.
-
-For disabling the captive portal, [**autoRise**](apiconfig.md#autorise) sets to false with [AutoConnectConfig](apiconfig.md).
-
-```cpp hl_lines="4"
-AutoConnect       portal;
-AutoConnectConfig acConfig;
-
-acConfig.autoRaise = false;
-portal.config(acConfig);
-portal.begin();
-```
-
-### <i class="fa fa-caret-right"></i> Make SSID of SoftAP unique
-
-You can change SoftAP's SSID and password programmatically when the captive portal starts up. By using chip specific ID of esp8266/esp32 you can make SSID of SoftAP unique. SSID and password for SoftAP is [*AutoConnectConfig::apid*](apiconfig.md#apid) and [*AutoConnectConfig::psk*](apiconfig.md#psk).
-
-```cpp
-AutoConnect       portal;
-AutoConnectConfig acConfig;
-
-acConfig.apid = "ESP-" + String(ESP.getChipId(), HEX);
-acConfig.psk = YOUR_PASSWORD;
-portal.config(acConfig);
-portal.begin();
-```
-
-!!! hint "Obtaining chip ID for ESP32"
-    `acConfig.apid = "ESP-" + String((uint32_t)(ESP.getEfuseMac() >> 32), HEX);`
-
-### <i class="fa fa-caret-right"></i> Move the saving area of EEPROM for the credentials
-
-By default, the credentials saving area is occupied from the beginning of EEPROM area. [ESP8266 Arduino core document](http://arduino-esp8266.readthedocs.io/en/latest/filesystem.html?highlight=eeprom#flash-layout) says that:
-
-
-> The following diagram illustrates flash layout used in Arduino environment:
-
-> ```
-> |--------------|-------|---------------|--|--|--|--|--|
-> ^              ^       ^               ^     ^
-> Sketch    OTA update   File system   EEPROM  WiFi config (SDK)
-> ```
-
-and
-
-> EEPROM library uses one sector of flash located [just after the SPIFFS](http://arduino-esp8266.readthedocs.io/en/latest/libraries.html?highlight=SPIFFS#eeprom).
-
-Also, the placement of the EEPROM area of ESP32 is described in the [partition table](https://github.com/espressif/arduino-esp32/blob/master/tools/partitions/default.csv). So in the default state, the credential storage area used by AutoConnect conflicts with data owned by the user sketch. It will be destroyed together saved data in EEPROM by user sketch and AutoConnect each other. But you can move the storage area to avoid this.
-
-The [**boundaryOffset**](apiconfig.md#boundaryoffset) in [AutoConnectConfig](apiconfig.md) specifies the start offset of the credentials storage area. The default value is 0.
-
-### <i class="fa fa-caret-right"></i> On-demand start the captive portal
-
-If you do not usually connect to WiFi and need to establish a WiFi connection if necessary, you can combine the [**autoRise**](apiconfig.md#autorise) option with the [**immediateStart**](apiconfig.md#immediatestart) option to achieve on-demand connection. This behavior is similar to the [WiFiManager's startConfigPortal](https://github.com/tzapu/WiFiManager#on-demand-configuration-portal) function. In order to do this, you usually configure only with AutoConnectConfig in *setup()* and [*AutoConnect::begin*](api.md#begin) handles in *loop()*.
-
-```cpp hl_lines="5 6"
-AutoConnect       Portal;
-AutoConnectConfig Config;
-
-void setup() {
-  Config.autoRise = false;
-  Config.immediateStart = true;
-  Portal.config(Config);
-}
-
-void loop() {
-  if (digitalRead(TRIGGER_PIN) == LOW) {
-    while (digitalRead(TRIGGER_PIN) == LOW)
-      yield();
-    Portal.begin();
-  }
-  Portal.handleClient();
-}
-```
-The above example does not connect to WiFi until TRIGGER\_PIN goes LOW. When TRIGGER\_PIN goes LOW, the captive portal starts and you can connect to WiFi. Even if you reset the module, it will not automatically reconnect.
-
-### <i class="fa fa-caret-right"></i> Refers the hosted ESP8266WebServer/WebServer
-
-Constructing an AutoConnect object variable without parameters then creates and starts an ESP8266WebServer/WebServer inside the AutoConnect. This object variable could be referred by [*AutoConnect::host*](api.md#host) function to access ESP8266WebServer/WebServer instance as like below.
-
-```cpp hl_lines="4"
-AutoConnect Portal;
-
-Portal.begin();
-ESP8266WebServer& server = Portal.host();
-server.send(200, "text/plain", "Hello, world");
-```
-
-!!! info "When host() is valid"
-    The host() can be referred at after *AutoConnect::begin*.
-
-### <i class="fa fa-caret-right"></i> Usage for automatically instantiated ESP8266WebServer/WebServer
-
-The sketch can handle URL requests using ESP8266WebServer or WebServer that AutoConnect started internally. ESP8266WebServer/WebServer instantiated dynamically by AutoConnect can be referred to by [*AutoConnect::host*](api.md#host) function. The sketch can use the '**on**' function, '**send**' function, '**client**' function and others by ESP8266WebServer/WebServer reference of its return value.
-
-```cpp hl_lines="8 9 13 14 20 21 27"
-#include <ESP8266WiFi.h>
-#include <ESP8266WebServer.h>
-#include <AutoConnect.h>
-
-AutoConnect       Portal;
-
-void handleRoot() {
-  ESP8266WebServer& IntServer = Portal.host();
-  IntServer.send(200, "text/html", "Hello, world");
-}
-
-void handleNotFound() {
-  ESP8266WebServer& IntServer = Portal.host();
-  IntServer.send(404, "text/html", "Unknown.");
-}
-
-void setup() {
-  bool r = Portal.begin();
-  if (r) {
-    ESP8266WebServer& IntServer = Portal.host();
-    IntServer.on("/", handleRoot);
-    Portal.onNotFound(handleNotFound);    // For only onNotFound.
-  }
-}
-
-void loop() {
-  Portal.host().handleClient();
-  Portal.handleRequest();
-  /* or following one line code is equ.
-  Portal.handleClient();
-  */
-}
-```
-
-!!! note "ESP8266WebServer/WebServer function should be called after AutoConnect::begin"
-    The sketch cannot refer to an instance of ESP8266WebServer/WebServer until AutoConnect::begin completes successfully.
-
-!!! warning "Do not use with ESP8266WebServer::begin or WebServer::begin"
-    ESP8266WebServer/WebServer is already running inside the AutoConnect.
-
-### <i class="fa fa-caret-right"></i> Use with the [PageBuilder](https://github.com/Hieromon/PageBuilder) library
-
-In ordinary, the URL handler will respond the request by sending some HTML. [PageBuilder](https://github.com/Hieromon/PageBuilder) library is HTML assembly aid. it can handle predefined HTML as like a template and simplify an HTML string assemble logic, and also the generated HTML send automatically.
-
-An example sketch used with the PageBuilder as follows and it explains how it aids for the HTML generating. Details for [Github repository](https://github.com/Hieromon/PageBuilder).
-
-<img src="images/PageBuilder.png" style="width:640px;"/>
-
-## Configuration functions
-
-### <i class="fa fa-caret-right"></i> Configuration for Soft AP and captive portal
-
-AutoConnect will activate SoftAP at failed the first *WiFi.begin*. It SoftAP settings are stored in [**AutoConnectConfig**](apiconfig.md#autoconnectconfig) as the following parameters. The sketch could be configured SoftAP using these parameters, refer the [AutoConnectConfig API](apiconfig.md#public-member-variables) for details.
-
-- IP address of SoftAP activated.
-- Gateway IP address.
-- Subnet mask.
-- SSID for SoftAP.
-- Password for SoftAP.
-- Channel.
-- SoftAP name.
-- Hidden attribute.
-- Station hostname.
-- Auto save credential.
-- Offset address of the credentials storage area in EEPROM.
-- Captive portal time out limit.
-- Maintain portal function even after a timeout.
-- Length of start up time after reset.
-- Automatic starting the captive portal.
-- Start the captive portal forcefully.
-- Auto reset after connection establishment.
-- Home URL of the user sketch application.
-- Menu title.
-
-!!! note "AutoConnect::config before AutoConnect::begin"
-    *AutoConnect::config* must be executed before *AutoConnect::begin*.
-
-### <i class="fa fa-caret-right"></i> Assign user sketch's home path
-
-**HOME** for returning to the user's sketch homepage will display at the bottom of the AutoConnect menu. It could be set using the [*AutoConnect::home*](api.md#home) function.
-
-<img src="images/menu_home.png" />
-
-### <i class="fa fa-caret-right"></i> Change SSID and Password for SoftAP
-
-An **esp8266ap** is default SSID name for SoftAP of captive portal and password is **12345678** for ESP8266. Similarly, **esp32ap** and **12345678** for ESP32. You can change both by setting [apid](apiconfig.md#apid) and [psk](apiconfig.md#psk).
-
-```cpp hl_lines="5 6"
-AutoConnect portal;
-AutoConnectConfig config;
-
-void setup() {
-  config.apid = "ap_portal";
-  config.psk  = "new_password";
-  portal.config(config);
-  portal.begin();
-}
-```
-
-Also, you can specify the SSID, password for SoftAP with the constructor of the AutoConnectConfig as below.
-
-```cpp hl_lines="2"
-AutoConnect portal;
-AutoConnectConfig config("ap_portal", "new_passwrod");
-
-void setup() {
-  portal.config(config);
-  portal.begin();
-}
-```
-
-### <i class="fa fa-caret-right"></i> Relocate the AutoConnect home path
-
-A home path of AutoConnect is **/\_ac** by default. You can access from the browser with http://IPADDRESS/\_ac. You can change the home path by revising [**AUTOCONNECT_URI**](https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h#L62) macro in the include header file as [AutoConnectDef.h](https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDef.h).
-
-```cpp
-#define AUTOCONNECT_URI         "/_ac"
-```
-
-### <i class="fa fa-caret-right"></i> Static IP assignment [^2]
-
-It is also possible to assign static IP Address to ESP8266/ESP32 in STA mode. By default DHCP is enabled and it becomes the IP address assigned by the DHCP server with *WiFi.begin*.
-
-To assign a static IP to ESP8266/ESP32 with WIFI\_MODE\_STA, the following parameters are required:
-
-- IP address.
-- Gateway address.
-- Subnet mask.
-- Primary DNS server.
-- Secondary DNS server. (optional)
-
-The above parameters must be executed before *AutoConnect::begin* as [arguments of AutoConnectConfig](apiconfig.md#staip).
-
-```cpp
-AutoConnect        portal;
-AutoConnectConfig  Config;
-Config.staip = IPAddress(192,168,1,10);
-Config.staGateway = IPAddress(192,168,1,1);
-Config.staNetmask = IPAddress(255,255,255,0);
-Config.dns1 = IPAddress(192,168,1,1);
-portal.config(Config);
-portal.begin();
-```
-
-[^2]:Static IP address assignment is available from version 0.9.3.
-
-### <i class="fa fa-caret-right"></i> Station host name
-
-[AutoConnectConfig::hostName](apiconfig.md#hostname) assigns the station DHCP hostname which complies with [RFC952](https://tools.ietf.org/html/rfc952). It must satisfy the following constraints.
-
-- Up to 24 characters
-- Only the alphabet (a-z, A-Z), digits (0-9), minus sign (-)
-- No '-' as last character




diff --git a/lib/AutoConnect-master/mkdocs/api.md b/lib/AutoConnect-master/mkdocs/api.md
deleted file mode 100644
index 6f8cd4fda038234dff80058e76c90252ebe2434b..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/api.md
+++ /dev/null
@@ -1,312 +0,0 @@
-## <i class="fa fa-code"></i> Include headers
-
-### AutoConnect.h
-
-```cpp
-#include <AutoConnect.h>
-```
-
-## <i class="fa fa-code"></i> Defined macros
-
-They contain in ```AutoConnectDefs.h```.
-
-```cpp
-#define AC_DEBUG                                // Monitor message output activation
-#define AC_DEBUG_PORT           Serial          // Default message output device
-#define AUTOCONNECT_AP_IP       0x01F4A8C0      // Default SoftAP IP
-#define AUTOCONNECT_AP_GW       0x01F4A8C0      // Default SoftAP Gateway IP
-#define AUTOCONNECT_AP_NM       0x00FFFFFF      // Default subnet mask
-#define AUTOCONNECT_DNSPORT     53              // Default DNS port at captive portal
-#define AUTOCONNECT_HTTPPORT    80              // Default HTTP
-#define AUTOCONNECT_MENU_TITLE  "AutoConnect"   // Default AutoConnect menu title
-#define AUTOCONNECT_STARTUPTIME 10              // Default waiting time[s] for after reset
-#define AUTOCONNECT_URI         "/_ac"          // Default AutoConnect root path
-#define AUTOCONNECT_TIMEOUT     30000           // Default connection timeout[ms]
-#define AUTOCONNECT_CAPTIVEPORTAL_TIMEOUT  0    // Captive portal timeout value
-#define AUTOCONNECT_USE_JSON                    // Allow AutoConnect elements to be handled by JSON format
-```
-
-!!! note "Macros placement moved"
-    Source code placement of the above macros provided for user sketch changed from v0.9.7. The new code is in ```AutoConnectDefs.h```.
-
-## <i class="fa fa-code"></i> Constructors
-
-### AutoConnect
-
-```cpp
-AutoConnect()
-```
-
-<a id="withparameter"></a>
-
-AutoConnect default constructor. This entry internally allocates the ESP8266WebServer for ESP8266 or WebServer for ESP32 and is activated internally.
-
-- For ESP8266
-
-```cpp
-AutoConnect(ESP8266WebServer& webServer)
-```
-
-- For ESP32
-
-```cpp
-AutoConnect(WebServer& webServer)
-```
-
-Run the AutoConnect site using the externally ensured ESP8266WebServer for ESP8266 or WebServer for ESP32.
-
-The [**handleClient**](api.md#handleclient) function of AutoConnect can include the response of the URI handler added by the user using the "*on*" function of ESP8266WebServer/WebServer. If ESP8266WebServer/WebServer is assigned internally by AutoConnect, the sketch can obtain that reference with the [**host**](api.md#host) function.
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">webServer</span><span class="apidesc">A reference of ESP8266WebServer or WebServer instance.</span></dd>
-</dl>
-
-## <i class="fa fa-code"></i> Public member functions
-
-### <i class="fa fa-caret-right"></i> aux
-
-```cpp
-AutoConnectAux* aux(const String& uri) const
-```
-Returns a pointer to AutoConnectAux with the URI specified by *uri*. If AutoConnectAux with that URI is not bound, it returns **nullptr**.
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">uri</span><span class="apidesc">A string of the URI.</span></dd>
-    <dt>**Return value**</dt>
-    <dd>A Pointer of the AutoConnectAux instance.</dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> begin
-
-```cpp
-bool begin()
-```  
-```cpp
-bool begin(const char* ssid, const char* passphrase)
-```  
-```cpp
-bool begin(const char* ssid, const char* passphrase, unsigned long timeout)
-```
-
-Starts establishing the WiFi connection. The WiFi mode at this time is WIFI_STA.  
-AutoConnect first invokes *WiFi.begin*. If the *ssid* and the *passphrase* are missing, its *WiFi.begin* has no SSID and Password. Regardless of the result, ESP8266WebServer/WebServer will start immediately after the first *WiFi.begin*.  
-The captive portal will not be started if the connection has been established with first *WiFi.begin*. If the connection cannot establish, switch to WIFI_AP_STA mode and activate SoftAP. Then DNS server starts.
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">ssid</span><span class="apidesc">SSID to be connected.</span></dd>
-    <dd><span class="apidef">passphrase</span><span class="apidesc">Password for connection.</span></dd>
-    <dd><span class="apidef">timeout</span><span class="apidesc">A time out value in milliseconds for waiting connection.</span></dd>
-    <dt>**Return value**</dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Connection established, AutoConnect service started with WIFI_STA mode.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">Could not connected, Captive portal started with WIFI_AP_STA mode.</span></dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> config
-
-```cpp
-bool config(AutoConnectConfig& config)
-```  
-```cpp
-bool config(const char* ap, const char* password = nullptr)
-```
-
-Set SoftAP's WiFi configuration and static IP configuration. 
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">config</span><span class="apidesc">Reference to [**AutoConnectConfig**](apiconfig.md) containing SoftAP's parameters and static IP parameters.</span></dd>
-    <dd><span class="apidef">ap</span><span class="apidesc">SSID for SoftAP. The default value is **esp8266ap** for ESP8266, **esp32ap** for ESP32.</span></dd>
-    <dd><span class="apidef">password</span><span class="apidesc">Password for SodtAP. The default value is **12345678**.</span></dd>
-    <dt>**Return value**</dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Successfully configured.</span></dd>
-    <dd><span class="apidef">false</span><span class="aidesc">Configuration parameter is invalid, some values out of range.</span></dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> end
-
-```cpp
-void end(void)
-```
-
-Stops AutoConnect captive portal service. Release ESP8266WebServer/WebServer and DNSServer. 
-
-!!! warning "Attention to end"
-    The end function releases the instance of ESP8266WebServer/WebServer and DNSServer. It can not process them after the end function.
-
-### <i class="fa fa-caret-right"></i> handleClient
-
-```cpp
-void handleClient(void)
-```
-
-Process the AutoConnect menu interface. The handleClient() function of the ESP8266WebServer/WebServer hosted by AutoConnect is also called from within AutoConnect, and the client request handlers contained in the user sketch are also handled.
-
-### <i class="fa fa-caret-right"></i> handleRequest
-
-```cpp
-void handleRequest(void)
-```
-
-Handling for the AutoConnect menu request.
-
-!!! warning "About used in combination with handleClient"
-    The handleRequest function is not supposed to use with AutoConnect::handleClient. It should be used with ESP8266WebServer::handleClient or WebServer::handleClient.
-
-### <i class="fa fa-caret-right"></i> home
-
-```cpp
-void home(String& uri)
-```
-
-Put a user site's home URI. The URI specified by home is linked from "HOME" in the AutoConnect menu.
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">uri</span><span class="aidesc">A URI string of user site's home path.</span></dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> host
-
-- For ESP8266
-
-```cpp
-ESP8266WebServer& host(void)
-```
-
-- For ESP32
-
-```cpp
-WebServer& host(void)
-```
-
-Returns the reference of the ESP8266WebServer/WebServer which is allocated in AutoConnect automatically.
-<dl class="apidl">
-    <dt>**Return value**</dt>
-    <dd>A reference of the ESP8266WebServer/WebServer.</dd>
-</dl>
-
-!!! note "&reference is not a pointer"
-    A reference cannot be re-assigned, and must be assigned at initialization. It's like as bind as alias.      
-    ```cpp
-    ESP8266WebServer& server = portal.host();
-    server.handleClient();
-    ```
-    or  
-    ```cpp
-    portal.host().handleClient();
-    ```
-
-### <i class="fa fa-caret-right"></i> join
-
-```cpp
-void join(AutoConnectAux& aux)
-```
-```cpp
-void join(std::vector<std::reference_wrapper<AutoConnectAux>> aux)
-```
-Join the AutoConnectAux object to AutoConnect. AutoConnectAux objects can be joined one by one, or joined altogether. The AutoConnectAux object joined by the join function can be handled from the AutoConnect menu.
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">aux</span><span class="apidesc">Reference to AutoConnectAux. It can be std::vector of std::reference_wrapper of AutoConnectAux with [list initialization](https://en.cppreference.com/w/cpp/language/list_initialization).</span></dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> load
-
-```cpp
-bool load(const String& aux)
-```
-```cpp
-bool load(PGM_P aux)
-```
-```cpp
-bool load(const __FlashStringHelper* aux)
-```
-```cpp
-bool load(Stream& aux)
-```
-Load JSON document of AutoConnectAux which contains AutoConnectElements. If there is a syntax error in the JSON document, false is returned.
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">aux</span><span class="apidesc">The input string to be loaded.</span></dd>
-    <dt>**Return value**</dt>
-    <dd><span class="apidef">true</span><span class="apidesc">The JSON document as AutoConnectAux successfully loaded.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">Loading JSON document unsuccessful, probably syntax errors have occurred or insufficient memory. You can diagnose the cause of loading failure using the [ArduinoJson Assistant](https://arduinojson.org/v5/assistant/).</span></dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> on
-
-```cpp
-bool on(const String& uri, const AuxHandlerFunctionT handler, AutoConnectExitOrder_t order = AC_EXIT_AHEAD)
-```
-Register the handler function of the AutoConnectAux.
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">uri</span><span class="apidesc">A string of the URI assigned to the AutoConnectAux page.</span></dd>
-    <dd><span class="apidef">handler</span><span class="apidesc">A function that behaves when a request to the AutoConnectAux page occurs. AuxHandlerFunctionT type is defined by the following declaration.<p class=""apidesc">`String handler(AutoConnectAux&, PageArgument&)`</p></span></dd>
-    <dd><span class="apidef">order</span><span class="apidesc">Specifies when the handler is called with the following enumeration value.</span></dd>
-: - **AC_EXIT_AHEAD** :
-    Called before AutoConnect generates the HTML of the page. You set the value of AutoConnectElements in the handler then its value will be displayed on the page.
-: - **AC_EXIT_LATER** :
-    Called after AutoConnect generates the HTML of the page. You can append to HTML generated by AutoConnect.
-: - **AC_EXIT_BOTH** :
-    Called even before generating HTML and after generated.
-</dl>
-
-!!! caution "It is not ESP8266WebServer::on, not WebServer::on for ESP32."
-    This function effects to AutoConnectAux only. However, it coexists with that of ESP8266WebServer::on or WebServer::on of ESP32. 
-
-### <i class="fa fa-caret-right"></i> onDetect
-
-```cpp
-void onDetect(DetectExit_ft fn)
-```
-Register the function which will call from AutoConnect at the start of the captive portal.
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">fn</span><span class="apidesc">Function called at the captive portal start.</span></dd>
-
-</dl>
-
-An *fn* specifies the function called when the captive portal starts. Its prototype declaration is defined as "*DetectExit_ft*".
-
-```cpp
-typedef std::function<bool(IPAddress softapIP)>  DetectExit_ft
-```
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">softapIP</span><span class="apidesc">An IP address of SoftAP for the captive portal.</span></dd>
-    <dt>**Return value**</dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Continues captive portal handling.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">Cancel the captive portal. AutoConnect::begin function will return with a false.</span></dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> onNotFound
-
-- For ESP8266
-
-```cpp
-void onNotFound(ESP8266WebServer::THandlerFunction fn)
-```
-
-- For ESP32
-
-```cpp
-void onNotFound(WebServer::THandlerFunction fn)
-```
-Register the handler function for undefined URL request detected.
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">fn</span><span class="apidesc">A function of the "not found" handler.</span></dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> where
-```cpp
-String where(void)
-```
-Returns an uri string of the AutoConnectAux uri object of the custom Web page that caused the request to the page.<br>
-AutoConnect identifies the URI (ie. the referrer URI) that caused the request each time from the client occurs and will save the URI If the request source is a custom Web page of AutoConnectAux. The **where** function returns a pointer of AutoConnectAux which is a URI of a least recent request from the custom Web page.<br>
-This function is provided to access the fields (ie. the AutoConnectElements) with a custom Web page handler of a page and is available only for request source that is the custom Web pages. It is invalid for HTTP requests from individual pages registered with the **on** handler of ESP8266WebServer/WebServer for ESP32. In other words, this function only returns the AutoConnecAux page which is a least recently displayed.
-<dl class="apidl">
-    <dt>**Return value**</dt>
-    <dd>An uri string of the AutoConnectAux that caused the request the page.</dd>
-</dl>
-
-The **where** function usage is described in the section [*Where to pick up the values*](achandling.md#where-to-pick-up-the-values).




diff --git a/lib/AutoConnect-master/mkdocs/apiaux.md b/lib/AutoConnect-master/mkdocs/apiaux.md
deleted file mode 100644
index 6f416d8c182d0ccd40bec5fe6a434c8c7069e2cb..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/apiaux.md
+++ /dev/null
@@ -1,315 +0,0 @@
-## <i class="fa fa-code"></i> Constructor
-
-### AutoConnectAux
-
-```cpp
-AutoConnectAux(const String& uri = String(""), const String& title = String(""), const bool menu = true, const AutoConnectElementVT addons = AutoConnectElementVT())
-```
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">uri</span><span class="apidesc">URI of this custom Web Page.</span></dd>
-    <dd><span class="apidef">title</span><span class="apidesc">Page title of this custom Web page. It will appear on the auto connection menu and at the top of that page.</span></dd>
-    <dd><span class="apidef">menu</span><span class="apidesc">Specifies whether to display this page on menu.</span></dd>
-    <dd><span class="apidef">addons</span><span class="apidesc">Reference to AutoConnectElement collection.</span></dt>
-</dl>
-
-## <i class="fa fa-code"></i> Public member functions
-
-### <i class="fa fa-caret-right"></i> operator [ ]
-
-```cpp
-AutoConnectElement& operator[](const String& name)
-```
-Returns a reference to the element specified by **name**. An operator `[]` is a shortcut for [getElement](apiaux.md#getelement) function with the reference casting. Unlike getElement, which returns a pointer to that element, an operator `[]` returns a reference to that element. You also need to cast the return value to the actual type, just like the getElement function.
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">name</span><span class="apidesc">Name of the AutoConnectElements to be retrieved.</span></dd>
-    <dt>**Return value**</dt><dd>A reference to AutoConnectElement. It is different from the actual element type.</dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> add
-
-```cpp
-void add(AutoConnectElement& addon)
-```
-```cpp
-void add(AutoConnectElementVT addons)
-```
-Add an element to the AutoConnectAux. An added element is displayed on the custom Web page invoked from the AutoConnect menu.
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">addon</span><span class="apidesc">Reference of AutoConnectElements. Specifies one of the AutoConnectElements classes.</span></dd>
-    <dd><span class="apidef">addons</span><span class="apidesc">An array list of reference of AutoConnectElements. The [list initialization](https://en.cppreference.com/w/cpp/language/list_initialization) with braced-init-list of the [std::vector](https://en.cppreference.com/w/cpp/container/vector) can be used for the addons parameter cause the actual definition of type **AutoConnectElementVT** is `std::vector<std::reference_wrapper<AutoConnectElement>>`.</span></dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> getElement
-
-```cpp
-T& getElement<T>(const String& name)
-```
-```cpp
-AutoConnectElement* getElement(const String& name)
-```
-Get a registered AutoConnectElement as specified name. If **T** is specified as an actual type of AutoConnectElements, it returns a reference to that instance.
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">T</span><span class="apidesc">Actual type name of AutoConnectElements as [AutoConnectButton](apielements.md#autoconnectbutton), [AutoConnectCheckbox](apielements.md#autoconnectcheckbox), [AutoConnectElement](apielements.md#autoconnectelement), [AutoConnectFile](apielements.md#autoconnectfile), [AutoConnectInput](apielements.md#autoconnectinput), [AutoConnectRadio](apielements.md#autoconnectradio), [AutoConnectSelect](apielements.md#autoconnectselect), [AutoConnectSubmit](apielements.md#autoconnectsubmit), [AutoConnectText](apielements.md#autoconnecttext).</span></dd>
-    <dd><span class="apidef">name</span><span class="apidesc">Name of the AutoConnectElements to be retrieved.</span></dd>
-    <dt>**Return value**</dt><dd>A reference of the AutoConnectElements. If a type is not specified returns a pointer.</dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> getElements
-
-```cpp
-AutoConnectElementVT& getElements(void)
-```
-Get vector of reference of all elements.
-<dl class="apidl">
-    <dt>**Return value**</dt>
-    <dd>A reference to std::vector of reference to AutoConnecctElements.</dd>
-</dl>
-
-The getElements returns a reference to std::vector of reference to AutoConnecctElements. This function is provided to handle AutoConnectElemets owned by AutoConnectAux in bulk, and you can use each method of std::vector for a return value.
-
-```cpp
-// An example of getting type and name of all AutoConnectElements registered in AutoConnectAux.
-AutoConnectAux aux;
-// some code here...
-AutoConnectElementVt& elements = aux.getElements();
-for (AutoConnectElement& elm : elements) {
-    Serial.printf("name<%s> as type %d\n", elm.name.c_str(), (int)elm.typeOf());
-}
-```
-
-### <i class="fa fa-caret-right"></i> load
-
-```cpp
-bool load(const String& in)
-```
-```cpp
-bool load(PGM_P in)
-```
-```cpp
-bool load(const __FlashStringHelper* in)
-```
-```cpp
-bool load(Stream& in)
-```
-Load all AutoConnectElements elements from JSON document into AutoConnectAux as custom Web pages. The JSON document specified by the load function must be the [document structure](acjson.md#json-objects-elements-for-the-custom-web-page) of AutoConnectAux. Its JSON document can describe multiple pages as an array.
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">in</span><span class="apidesc">Specifies the JSON document to be load. The load function can input the following objects.
-
-- String : Read-only String
-- PROGMEM : Character array contained in the flash
-- Stream : An entity that inherits stream class, generally SPIFFS or SD.
-    </span></dd>
-    <dt>**Return value**</dt>
-    <dd><span class="apidef">true</span><span class="apidesc">JSON document as the custom Web pages successfully loaded.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">JSON document loading failed.</span></dd>
-</dl>
-
-!!! hint "Load multiple custom Web pages separately"
-    Multiple custom Web pages can be loaded at once with JSON as an array. But it will consume a lot of memory. By loading a JSON document by page as much as possible, you can reduce memory consumption.
-
-### <i class="fa fa-caret-right"></i> loadElement
-
-```cpp
-bool loadElement(const String& in, const String& name = String(""))
-```
-```cpp
-bool loadElement(const String& in, std::vector<String> const& names)
-```
-```cpp
-bool loadElement(PGM_P in, const String& name = String(""))
-```
-```cpp
-bool loadElement(PGM_P in, std::vector<String> const& names)
-```
-```cpp
-bool loadElement(const __FlashStringHelper* in, const String& name = String(""))
-```
-```cpp
-bool loadElement(const __FlashStringHelper* in, std::vector<String> const& names)
-```
-```cpp
-bool loadElement(Stream& in, const String& name = String(""))
-```
-```cpp
-bool loadElement(Stream& in, std::vector<String> const& names)
-```
-Load specified element from JSON document into AutoConnectAux. The JSON document specified by the loadElement function must be the [AutoConnectElement document structure](acjson.md#json-object-for-autoconnectelements). When loading from a JSON document that describes multiple elements, its description must be an array syntax.
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">in</span><span class="apidesc">Specifies the JSON document to be load. The load function can input the following objects.
-
-- String : Read-only String
-- PROGMEM : Character array contained in the flash
-- Stream : An entity that inherits stream class, generally SPIFFS or SD.
-    </span></dd>
-    <dd><span class="apidef">name</span><span class="apidesc">Specifies the name to be load. If the name is not specified, the loadElement function will load all elements contained in the JSON document.</span></dd>
-    <dd><span class="apidef">names</span><span class="apidesc"> Spefifies an array list of String indicating the name of the element to be loaded. The [list initialization](https://en.cppreference.com/w/cpp/language/list_initialization) with braced-init-list of the [std::vector](https://en.cppreference.com/w/cpp/container/vector) can be used.</span></dd>
-    <dt>**Return value**</dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Specified AutoConnectElements successfully loaded.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">JSON document loading failed.</span></dd>
-</dl>
-
-!!! caution "Maybe it is an array"
-    Please note that the JSON document that is the input for loadElement is an array syntax of AutoConnectElements when there are multiple elements. For example, the following JSON document has a syntax error:
-
-    ```json
-    {
-      "name": "Caption",
-      "type": "ACText",
-      "value": "Hello, world"
-    },
-    {
-      "name": "Server",
-      "type": "ACInput",
-      "label": "Server address"
-    }
-    ```
-    The outermost `[`, `]` is missing.
-
-### <i class="fa fa-caret-right"></i> menu
-
-```cpp
-void menu(const bool post)
-```
-Set or reset the display as menu item for this AutoConnectAux. This function programmatically manipulates the menu parameter of the [AutoConenctAux constructor](apiaux.md#autoconnectaux).
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Show on the menu.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">Hidden on the menu.</span></dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> on
-
-```cpp
-void on(const AuxHandlerFunctionT handler, const AutoConnectExitOrder_t order = AC_EXIT_AHEAD)
-```
-Register the handler function of the AutoConnectAux.
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">handler</span><span class="apidesc">A function that behaves when a request to the AutoConnectAux page occurs. AuxHandlerFunctionT type is defined by the following declaration.<p class="apidesc">`String handler(AutoConnectAux&, PageArgument&)`</p></span></dd>
-    <dd><span class="apidef">order</span><span class="apidesc">Specifies when the handler is called with the following enumeration value.</span>
-: - **AC_EXIT_AHEAD** :
-    Called before AutoConnect generates the HTML of the page. You set the value of AutoConnectElements in the handler then its value will be displayed on the page.
-: - **AC_EXIT_LATER** :
-    Called after AutoConnect generates the HTML of the page. You can append to HTML generated by AutoConnect.
-: - **AC_EXIT_BOTH** :
-    Called even before generating HTML and after generated.</dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> onUpload
-
-```cpp
-void onUpload<T&>(T handler)
-```
-```cpp
-void onUpload(PageBuilder::UploadFuncT uploadFunc)
-```
-Register the upload handler of the AutoConnectAux.
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">T</span><span class="apidesc">Specifies a class name of the custom uploader inherited from [AutoConnectUploadHandler](acupload.md#upload-handler-base-class) class. Refer to the [appendix](acupload.md#to-upload-to-a-device-other-than-flash-or-sd) for details.</span></dd>
-    <dd><span class="apidef">handler</span><span class="apidesc">Specifies the custom uploader inherited from [AutoConnectUploadHandler](acupload.md#upload-handler-base-class) class. Refer to the [appendix](acupload.md#to-upload-to-a-device-other-than-flash-or-sd) for details.</span></dd>
-    <dd><span class="apidef">uploadFunc</span><span class="apidesc">A function that behaves when request to upload with the AutoConnectAux page. UploadFuncT type is defined by the following declaration.<p class="apidesc">`void(const String&, const HTTPUpload&)`</p><p>A data structure of the upload file as HTTPUpload. It is defined in the ESP8266WebServer (the WebServer for ESP32) library as follows:
-
-```cpp
-typedef struct {
-  HTTPUploadStatus status;
-  String  filename;
-  String  name;
-  String  type;
-  size_t  totalSize;
-  size_t  currentSize;
-  size_t  contentLength;
-  uint8_t buf[HTTP_UPLOAD_BUFLEN];
-} HTTPUpload;
-```
-</p>Refer to '[To upload to a device other than Flash or SD](acupload.md#to-upload-to-a-device-other-than-flash-or-sd)' in section [appendix](acupload.md) for details.</span></dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> release
-
-```cpp
-bool release(const String& name)
-```
-Release a specified AutoConnectElement from AutoConenctAux. The release function is provided to dynamically change the structure of the custom Web pages with the sketch. By combining the release function and the [add](apiaux.md#add) function or the [loadElement](apiaux.md#loadelement) function, the sketch can change the style of the custom Web page according to its behavior.
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">name</span><span class="apidesc">Specifies the name of AutoConnectElements to be released.</span></dd>
-    <dt>**Return value**</dt>
-    <dd><span class="apidef">true</span><span class="apidesc">The AutoConnectElement successfully released.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">The AutoConnectElement can not be released.</span></dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> saveElement
-
-```cpp
-size_t saveElement(Stream& out, std::vector<String> const& names = {})
-```
-Write elements of AutoConnectAux to the stream. The saveElement function outputs the specified AutoConenctElements as a JSON document using the [prettyPrintTo](https://arduinojson.org/v5/api/jsonobject/prettyprintto/) function of the [ArduinoJson](https://arduinojson.org/) library.
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">out</span><span class="apidesc">Output stream to be output. SPIFFS, SD also Serial can be specified generally.</span></dd>
-    <dd><span class="apidef">names</span><span class="apidesc">The array of the name of AutoConnectElements to be output. If the names parameter is not specified, all AutoConnectElements registered in AutoConnectAux are output.</span></dd>
-    <dt>**Return value**</dt>
-    <dd>The number of bytes written.</dd>
-</dl>
-
-!!! note "The output format is pretty"
-    The saveElement function outputs a prettified JSON document.
-
-!!! Info "It is not complementary with loadElement"
-    The saveElement function which missing the names parameter without name list to be saved that saves an entire AutoConnectAux element, not just AutoConnectElements. Its saved JSON document is not a complementary input to the loadElement function. The JSON document describing AutoConnectAux saved without the names parameter must be loaded by the [AutoConnectAux::load](apiaux.md#load) function or [AutoConnect::load](api.md#load) function.
-
-### <i class="fa fa-caret-right"></i> setElementValue
-
-```cpp
-bool setElementValue(const String& name, const String value)
-```
-```cpp
-bool setElementValue(const String& name, std::vector<String> const& values)
-```
-Sets the value of the specified AutoConnectElement. If values ​​is specified as a *std::vector* of String, the element that can set the values is the [AutoConnectRadio](apielements.md#autoconnectradio) or the [AutoConnectSelect](apielements.md#autoconnectselect). 
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">name</span><span class="apidesc">Specifies the name of the AutoConnectElements that you want to set the value.</span></dd>
-    <dd><span class="apidef">value</span><span class="apidesc">Specifies the value to be set.</span></dd>
-    <dd><span class="apidef">values</span><span class="apidesc">Specifies a reference of a *std::vector* of String. It contains the values of the AutoConnectRadio or the AutoConnectSelect.</span></dd>
-    <dt>**Return value**</dt>
-    <dd><span class="apidef">true</span><span class="apidesc">The value has been set.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">AutoConnectElements with the specified name are not registered. Or the type of the value is not consistent with the specified AutoConnectElements.</span></dd>
-</dl>
-
-!!! hint "You can directly access the value member variable."
-    If you are gripping with the sketch to the AutoConnectElements of the target that sets the value, you can access the value member variable directly. The following sketch code has the same effect.
-    ```cpp
-    AutoConnectAux aux;
-    // ... Griping the AutoConnectText here.
-    aux.setElementValue("TEXT_FIELD", "New value");
-    ```
-    ```cpp
-    AutoConnectAux aux;
-    // ... Griping the AutoConnectText here.
-    AutoConnectText& text = aux.getElement<AutoConnectText>("TEXT_FIELD");
-    text.value = "New value";
-    ```
-    The difference between the setElementValue and the value access with the [getElement](apiaux.md#getelement) is the certainty of the registration state for the element. The [getElement](apiaux.md#getelement) returns an empty object if the element is not registered then a sketch assigns the value to it. May occur unexpected results and crashes. You should use the setElementValue if its registration is unsettled.
-
-### <i class="fa fa-caret-right"></i> setTitle
-
-```cpp
-void setTitle(const String& title)
-```
-Set the title string of the custom Web page. This title will be displayed as the menu title of the custom Web page.
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">title</span><span class="apidesc">Title string to be display.</span></dd>
-</dl>
-
-!!! caution "Not the menu title"
-    The setTitle function is not set for the AutoConnect menu title. The effect of this function is that custom Web page only. To change the AutoConnect menu title use [AutoConnectConfig::title](apiconfig.md#title).
-    
\ No newline at end of file




diff --git a/lib/AutoConnect-master/mkdocs/apiconfig.md b/lib/AutoConnect-master/mkdocs/apiconfig.md
deleted file mode 100644
index e0355184dd8512cd1c45390e7b706558a019ee17..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/apiconfig.md
+++ /dev/null
@@ -1,286 +0,0 @@
-## <i class="fa fa-code"></i> Constructor
-
-### AutoConnectConfig
-
-```cpp
-AutoConnectConfig()
-```  
-```cpp
-AutoConnectConfig(const char* ap, const char* password)
-```
-```cpp
-AutoConnectConfig(const char* ap, const char* password, const unsigned long timeout)
-```
-```cpp
-AutoConnectConfig(const char* ap, const char* password, const unsigned long timeout, const uint8_t channel)
-```
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">ap</span><span class="apidesc">SSID for SoftAP. The length should be up to 31. The default value is **esp8266ap** for ESP8266, **esp32ap** for ESP32.</span></dd>
-    <dd><span class="apidef">password</span><span class="apidesc">Password for SodtAP. The length should be from 8 to up to 63. The default value is **12345678**.</span></dd>
-    <dd><span class="apidef">timeout</span><span class="apidesc">The timeout value of the captive portal in [ms] units. The default value is 0.</span></dd>
-    <dd><span class="apidef">channel</span><span class="apidesc">The channel number of WIFi when SoftAP starts. The default values is 1.</span></dd>
-</dl>
-
-## <i class="fa fa-code"></i> Public member variables
-
-### <i class="fa fa-caret-right"></i> apid
-
-SoftAP's SSID. 
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"> The default value is **esp8266ap** for ESP8266, **esp32ap** for ESP32.</span></dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> apip
-
-Sets IP address for Soft AP in captive portal. When AutoConnect fails the initial WiFi.begin, it starts the captive portal with the IP address specified this.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">IPAddress</span><span class="apidesc">The default value is **192.168.244.1**</span></dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> autoReconnect
-
-Automatically will try to reconnect with the past established access point (BSSID) when the current configured SSID in ESP8266/ESP32 could not be connected. By enabling this option, *AutoConnect::begin()* function will attempt to reconnect to a known access point using credentials stored in the EEPROM, even if the connection failed by current SSID.  
-If the connection fails, starts the captive portal in SoftAP+STA mode.  
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd>bool</dd>
-    <dt>**Value**</dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Reconnect automatically.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">Starts Captive Portal in SoftAP + STA mode without trying to reconnect. This is the default.</span></dd>
-</dl>
-
-When the autoReconnect option is enabled, an automatic connection will behave if the following conditions are satisfied.
-
-- Invokes *AutoConnect::begin* without user name and password parameter as ```begin()```.
-- If one of the saved BSSIDs (not the SSID) of the credentials matches the BSSID detected by the network scan.
-
-### <i class="fa fa-caret-right"></i> autoReset
-
-Reset ESP8266 module automatically after WLAN disconnected.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd>bool</dd>
-    <dt>**Value**</dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Reset after WiFi disconnected automatically.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">No reset.</span></dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> autoRise
-
-Captive portal activation switch. False for disabling the captive portal. It prevents starting the captive portal even if the connection at the first *WiFi.begin* fails.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd>bool</dd>
-    <dt>**Value**</dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Enable the captive portal. This is the default.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">Disable the captive portal.</span></dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> autoSave
-
-The credential saved automatically at the connection establishment.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd>AC_SAVECREDENTIAL_t</dd>
-    <dt>**Value**</dt>
-    <dd><span class="apidef">AC_SAVECREDENTIAL_AUTO</span><span class="apidesc"></span><span class="apidef">&nbsp;</span><span class="apidesc">The credential saved automatically. This is the default.</span></dd>
-    <dd><span class="apidef">AC_SAVECREDENTIAL_NEVER</span><span class="apidesc"></span><span class="apidef">&nbsp;</span><span class="apidesc">The credential no saved.</span></dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> bootUri
-
-Specify the location to be redirected after module reset in the AutoConnect menu. It is given as an enumeration value of **AC_ONBOOTURI_t** indicating either the AutoConnect root path or the user screen home path.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd>AC_ONBOOTURI_t</dd>
-    <dt>**Value**</dt>
-    <dd><span class="apidef">AC_ONBOOTURI_ROOT</span><span class="apidesc"></span><span class="apidef">&nbsp;</span><span class="apidesc">Resetting the module redirects it to the AutoConnect root path. The root path is assumed to be AUTOCONNECT_URI defined in AutoConnectDefs.h.</span></dd>
-    <dd><span class="apidef">AC_ONBOOTURI_HOME</span><span class="apidesc"></span><span class="apidef">&nbsp;</span><span class="apidesc">It is redirected to the uri specified by [**AutoConnectConfig::homeUri**](apiconfig.md#homeuri).</span></dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> boundaryOffset
-
-Sets the offset address of the credential storage area for EEPROM. This value must be between greater than 4 and less than flash sector size. (4096 by SDK)  
-The default value is 0.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd>uint16_t</dd>
-</dl>
-
-!!! warning "It will conflict with user data."
-    If the sketch leaves this offset at zero, it will conflict the storage area of credentials with the user sketch owned data. It needs to use the behind of credential area.
-
-### <i class="fa fa-caret-right"></i> channel
-
-The channel number of WIFi when SoftAP starts.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd>uint8_t</dd>
-    <dt>**Value**</dt>
-    <dd>1 ~ 14. The default value is 1.</dd>
-</dl>
-
-!!! info "How do I choose Channel"
-    Espressif Systems had announced the [application note](https://www.espressif.com/sites/default/files/esp8266_wi-fi_channel_selection_guidelines.pdf) about Wi-Fi channel selection.
-
-### <i class="fa fa-caret-right"></i> dns1
-
-Set primary DNS server address when using static IP address.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd>IPAddress</dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> dns2
-
-Set secondary DNS server address when using static IP address.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd>IPAddress</dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> gateway
-
-Sets gateway address for Soft AP in captive portal. When AutoConnect fails the initial WiFi.begin, it starts the captive portal with the IP address specified this.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">IPAddress</span><span class="apidesc">The default value is **192.168.244.1**</span></dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> hidden
-
-Sets SoftAP to hidden SSID.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd>uint8_t</dd>
-    <dt>**Value**</dt>
-    <dd><span class="apidef">0</span><span class="aidesc">SSID will be appeared. This is the default.</span></dd>
-    <dd><span class="apidef">1</span><span class="apidesc">SSID will be hidden.</span></dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> homeUri
-
-Sets the home path of user sketch. This path would be linked from 'HOME' in the AutoConnect menu. The default for homeUri is "/".
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd>String</dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> hostName
-
-Sets the station host name of ESP8266/ESP32.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd>String</dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> immediateStart
-
-Disable the first WiFi.begin() and start the captive portal. If this option is enabled, the module will be in AP_STA mode and the captive portal will be activated regardless of [**AutoConnectConfig::autoRise**](apiconfig.md#autorise) specification.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd>bool</dd>
-    <dt>**Value**</dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Start the captive portal with [**AutoConnect::begin**](api.md#begin).</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">Enable the first WiFi.begin() and it will start captive portal when connection failed. This is default.</span></dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> netmask
-
-Sets subnet mask for Soft AP in captive portal. When AutoConnect fails the initial WiFi.begin, it starts the captive portal with the IP address specified this.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">IPAddress</span><span class="apidesc">The default value is **255.255.255.0**</span></dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> portalTimeout
-
-Specify the timeout value of the captive portal in [ms] units. It is valid when the station is not connected and does not time out if the station is connected to the ESP module in SoftAP mode (ie Attempting WiFi connection with the portal function). If 0, the captive portal will not be timed-out.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">unsigned long</span><span class="apidesc">Captive portal timeout value. The default value is 0.</span></dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> psk
-
-Sets password for SoftAP. The length should be from 8 to up to 63. The default value is **12345678**.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd>String</dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> retainPortal
-
-Specify whether to continue the portal function even if the captive portal timed out. If the true, when a timeout occurs, the [**AutoConnect::begin**](api.md#begin) function is exited with returns false, but the portal facility remains alive. So SoftAP remains alive and you can invoke AutoConnect while continuing sketch execution. The default is false.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd>bool</dd>
-    <dt>**Value**</dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Continue the portal function even if the captive portal times out. The STA + SoftAP mode of the ESP module continues and accepts the connection request to the AP.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">When the captive portal times out, STA + SoftAP mode of the ESP module is stopped. This is default.</span></dd>
-</dl>
-
-!!! hint "Connection request after timed-out"
-    With the **retainPortal**, even if AutoConnect::begin in the setup() is timed out, you can execute the sketch and the portal function as a WiFi connection attempt by calling AutoConnect::handleClient in the loop().
-
-!!! info "All unresolved addresses redirects to /_ac"
-    If you enable the **retainPortal** option, **all unresolved URIs will be redirected to `SoftAPIP/_ac`**. It happens frequently as client devices repeat captive portal probes in particular. To avoid this, you need to exit from the WiFi connection Apps on your device once.
-
-### <i class="fa fa-caret-right"></i> staip
-
-Set a static IP address. The IP will behave with STA mode.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd>IPAddress</dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> staGateway
-
-Set the gateway address when using static IP address.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd>IPAddress</dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> staNetmask
-
-Set the subnetmask when using static IP address.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd>IPAddress</dd>
-</dl>
-
-### <i class="fa fa-caret-right"></i> title
-
-Set the menu title.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd>String</dd>
-</dl>
-
-## <i class="fa fa-code"></i> AutoConnectConfig example
-
-```cpp
-AutoConenct        Portal;
-AutoConenctConfig  Config("", "passpass");    // SoftAp name is determined at runtime
-Config.apid = ESP.hostname();                 // Retrieve host name to SotAp identification
-Config.apip = IPAddress(192,168,10,101);      // Sets SoftAP IP address
-Config.gateway = IPAddress(192,168,10,1);     // Sets WLAN router IP address
-Config.netmask = IPAddress(255,255,255,0);    // Sets WLAN scope
-Config.autoReconnect = true;                  // Enable auto-reconnect
-Config.autoSave = AC_SAVECREDENTIAL_NEVER;    // No save credential
-Config.boundaryOffet = 64;                    // Reserve 64 bytes for the user data in EEPROM.
-Config.portalTimeout = 60000;                 // Sets timeout value for the captive portal
-Config.retainPortal = true;                   // Retains the portal function after timed-out
-Config.homeUri = "/index.html";				  // Sets home path of the sketch application
-Config.title ="My menu";                      // Customize the menu title
-Config.staip = IPAddress(192,168,10,10);      // Sets static IP
-Config.staGateway = IPAddress(192,168,10,1);  // Sets WiFi router address
-Config.staNetmask = IPAddress(255,255,255,0); // Sets WLAN scope
-Config.dns1 = IPAddress(192,168,10,1);        // Sets primary DNS address
-Portal.config(Config);                        // Configure AutoConnect
-Portal.begin();                               // Starts and behaves captive portal
-```




diff --git a/lib/AutoConnect-master/mkdocs/apielements.md b/lib/AutoConnect-master/mkdocs/apielements.md
deleted file mode 100644
index f85f473ae2cfcd18a6c009b4a03e7333893d2728..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/apielements.md
+++ /dev/null
@@ -1,804 +0,0 @@
-## AutoConnectButton
-
-### <i class="fa fa-code"></i> Constructor
-
-```cpp
-AutoConnectButton(const char* name = "", const char* value = "", const String& action = String())
-```
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">name</span><span class="apidesc">The element name.</span></dd>
-    <dd><span class="apidef">value</span><span class="apidesc">Value of the element.</span></dd>
-    <dd><span class="apidef">action</span><span class="apidesc">Native code of the action script executed when the button is clicked.</span></dd>
-</dl>
-
-### <i class="fa fa-code"></i> Public member variables
-
-#### <i class="fa fa-caret-right"></i> action
-
-HTML native code of the action script to be executed when the button is clicked. It is mostly used with a JavaScript to activate a script.[^1]
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-[^1]:JavaScript can be inserted into a custom Web page using AutoConnectElement.
-
-#### <i class="fa fa-caret-right"></i> enable
-
-Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">boolean</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> name
-
-The element name.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> value
-
-Value of the element.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-### <i class="fa fa-code"></i> Public member functions
-
-#### <i class="fa fa-caret-right"></i> typeOf
-
-```cpp
-ACElement_t typeOf(void)
-```
-Returns type of AutoConnectElement.
-<dl class="apidl">
-    <dt>**Return value**</dt>
-    <dd>AC_Button</dd>
-</dl>
-
-## AutoConnectCheckbox
-
-### <i class="fa fa-code"></i> Constructor
-
-```cpp
-  explicit AutoConnectCheckboxBasis(const char* name = "", const char* value = "", const char* label = "", const bool checked = false)
-```
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">name</span><span class="apidesc">The element name.</span></dd>
-    <dd><span class="apidef">value</span><span class="apidesc">Value of the element.</span></dd>
-    <dd><span class="apidef">label</span><span class="apidesc">A label string prefixed to the checkbox.</span></dd>
-    <dd><span class="apidef">check</span><span class="apidesc">Checked state of the checkbox.</span></dd>
-</dl>
-
-### <i class="fa fa-code"></i> Public member variables
-
-#### <i class="fa fa-caret-right"></i> checked
-
-It indicates the checked status of the checkbox. The value of the checked checkbox element is packed in the query string and sent by submit.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">Boolean</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> enable
-
-Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">boolean</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> label
-
-A label is an optional string. A label is always arranged on the right side of the checkbox. Specification of a label will generate an HTML `#!html <label>` tag with an `id` attribute. The checkbox and the label are connected by the id attribute.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> name
-
-The element name. 
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> value
-
-Value of the element. It becomes a value attribute of an HTML `#!html <input type="checkbox">` tag.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-### <i class="fa fa-code"></i> Public member functions
-
-#### <i class="fa fa-caret-right"></i> typeOf
-
-```cpp
-ACElement_t typeOf(void)
-```
-Returns type of AutoConnectElement.
-<dl class="apidl">
-    <dt>**Return value**</dt>
-    <dd>AC_Checkbox</dd>
-</dl>
-
-## AutoConnectElement
-
-### <i class="fa fa-code"></i> Constructor
-
-```cpp
-AutoConnectElement(const char* name = "", const char* value = "")
-```
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">name</span><span class="apidesc">The element name.</span></dd>
-    <dd><span class="apidef">value</span><span class="apidesc">Value of the element.</span></dd>
-</dl>
-
-### <i class="fa fa-code"></i> Public member variables
-
-#### <i class="fa fa-caret-right"></i> enable
-
-Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">boolean</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> name
-
-The element name.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> value
-
-Value of the element. It is output as HTML as it is as a source for generating HTML code.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-### <i class="fa fa-code"></i> Public member functions
-
-#### <i class="fa fa-caret-right"></i> typeOf
-
-```cpp
-ACElement_t typeOf(void)
-```
-Returns type of AutoConnectElement.
-<dl class="apidl">
-    <dt>**Return value**</dt>
-    <dd>AC_Element</dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> as<T\>
-
-```cpp
-AutoConnectElement& as<T>(void)
-```
-Casts the reference to the AutoConnectElement the specified type.
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">T</span><span class="apidesc">The element type. AutoConnectElements type such as [AutoConnectButton](apielements.md#autoconnectbutton), [AutoConnectCheckbox](apielements.md#autoconnectcheckbox), [AutoConnectFile](apielements.md#autoconnectfile), [AutoConnectInput](apielements.md#autoconnectinput), [AutoConnectRadio](apielements.md#autoconnectradio), [AutoConnectSelect](apielements.md#autoconnectselect), [AutoConnectSubmit](apielements.md#autoconnectsubmit), [AutoConnectText](apielements.md#autoconnecttext).</span></dd>
-    <dt>**Return value**</dt>
-    <dd>A reference to the AutoConnectElement with actual type.</dd>
-</dl>
-
-## AutoConnectFile
-
-### <i class="fa fa-code"></i> Constructor
-
-```cpp
-AutoConnectFile(const char* name = "", const char* value = "", const char* label = "", const ACFile_t store = AC_File_FS)
-```
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">name</span><span class="apidesc">The element name.</span></dd>
-    <dd><span class="apidef">value</span><span class="apidesc">File name to be upload.</span></dd>
-    <dd><span class="apidef">label</span><span class="apidesc">Label string.</span></dd>
-    <dd><span class="apidef">store</span><span class="apidesc">The **ACFile_t** enumerator that represents the media to save the uploaded file.</span></dd>
-
-</dl>
-
-### <i class="fa fa-code"></i> Public member variables
-
-#### <i class="fa fa-caret-right"></i> enable
-
-Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">boolean</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> label
-
-A label is an optional string. A label is always arranged on the left side of the file input box. Specification of a label will generate an HTML `#!html <label>` tag with an id attribute. The file input box and the label are connected by the id attribute.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> mimeType
-
-The mime type of the upload file which included as Media type in the http post request. Set by the client (usually the browser) that requested the upload. It is determined by the file type as `application/octet-stream`, `text` etc. which is described in [IANA Media Type](https://www.iana.org/assignments/media-types/media-types.xhtml).
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> name
-
-The element name.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> size
-
-Size of the uploading file.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">size_t</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> store
-
-Specifies the save destination of the uploaded file. You can use the built-in uploader to save uploaded file to the flash of the ESP8266/ESP32 module or external SD media without writing a dedicated sketch code. It also supports saving to any destination using a custom uploader that inherits from the AutoConnectUploadHandler class.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">ACFile_t</span><span class="apidesc">
-        
-- **`AC_File_FS`** : Save the uploaded file to SPIFFS in the flash.
-- **`AC_File_SD`** : Save the uploaded file to SD.
-- **`AC_File_Extern`** : Save the file using your own upload handler.
-    </span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> value
-
-File name to be upload. The value contains the value entered by the client browser to the `#!html <input type="file">` tag and is read-only.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-### <i class="fa fa-code"></i> Public member functions
-
-#### <i class="fa fa-caret-right"></i> typeOf
-
-```cpp
-ACElement_t typeOf(void)
-```
-Returns type of AutoConnectFile.
-<dl class="apidl">
-    <dt>**Return value**</dt>
-    <dd>AC_File</dd>
-</dl>
-
-## AutoConnectInput
-
-### <i class="fa fa-code"></i> Constructor
-
-```cpp
-AutoConnectInput(const char* name = "", const char* value = "", const char* label = "", const char* pattern = "", const char* placeholder = "")
-```
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">name</span><span class="apidesc">The element name.</span></dd>
-    <dd><span class="apidef">value</span><span class="apidesc">Value of the element.</span></dd>
-    <dd><span class="apidef">label</span><span class="apidesc">Label string.</span></dd>
-    <dd><span class="apidef">pattern</span><span class="apidesc">Regular expression string for checking data format.</span></dd>
-    <dd><span class="apidef">placeholder</span><span class="apidesc">A placeholder string.</span></dd>
-</dl>
-
-### <i class="fa fa-code"></i> Public member variables
-
-#### <i class="fa fa-caret-right"></i> enable
-
-Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">boolean</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> label
-
-A label is an optional string. A label is always arranged on the left side of the input box. Specification of a label will generate an HTML `#!html <label>` tag with an id attribute. The input box and the label are connected by the id attribute.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> name
-
-The element name.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> value
-
-Value of the element. It becomes a value attribute of an HTML `#!html <input type="text">` tag. An entered text in the custom Web page will be sent with a query string of the form. The value set before accessing the page is displayed as the initial value.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> pattern
-
-A pattern specifies a regular expression that the input-box's value is checked against on form submission.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> placeholder
-
-A placeholder is an option string. Specification of a placeholder will generate a `placeholder` attribute for the input tag.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-### <i class="fa fa-code"></i> Public member functions
-
-#### <i class="fa fa-caret-right"></i> isValid
-
-```cpp
-bool isValid(void)
-```
-Evaluate the pattern as a regexp and return whether value matches. Always return true if the pattern is undefined.
-<dl class="apidl">
-    <dt>**Return value**</dt>
-    <dd><span class="apidef">true</span><span class="apidesc">The value matches a pattern.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">The value does not match a pattern.</span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> typeOf
-
-```cpp
-ACElement_t typeOf(void)
-```
-Returns type of AutoConnectElement.
-<dl class="apidl">
-    <dt>**Return value**</dt>
-    <dd>AC_Input</dd>
-</dl>
-
-## AutoConnectRadio
-
-### <i class="fa fa-code"></i> Constructor
-
-```cpp
-AutoConnectRadio(const char* name = "", std::vector<String> const& values = {}, const char* label = "", const ACArrange_t order = AC_Vertical, const uint8_t checked = 0)
-```
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">name</span><span class="apidesc">The element name.</span></dd>
-    <dd><span class="apidef">values</span><span class="apidesc">An array of values of the radio buttons. Specifies a [std::vector](https://en.cppreference.com/w/cpp/container/vector) object.</span></dd>
-    <dd><span class="apidef">label</span><span class="apidesc">Label string.</span></dd>
-    <dd><span class="apidef">order</span><span class="apidesc">The direction to arrange the radio buttons.</span></dd>
-    <dd><span class="apidef">checked</span><span class="apidesc">An index to be checked in the radio buttons.</span></dd>
-</dl>
-
-### <i class="fa fa-code"></i> Public member variables
-
-#### <i class="fa fa-caret-right"></i> checked
-
-Specifies the index number (1-based) of the **values** to be checked. If this parameter is not specified neither item is checked.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">uint8_t</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> enable
-
-Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">boolean</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> label
-
-A label is an optional string. A label will be arranged in the left or top of the radio buttons according to the [order](#order).
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> name
-
-The element name.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> order
-
-Specifies the direction to arrange the radio buttons. A label will place in the left or the top according to the **_order_**. It is a value of **ACArrange_t** type and accepts one of the following:
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">ACArrange_t</span><span class="apidesc">
-        
-- **`AC_Horizontal`** : Horizontal arrangement.
-- **`AC_Vertical`** : Vertical arrangement.
-    </span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> values
-
-An array of String type for the radio button options. It is an initialization list can be used. The `#!html <input type="radio">` tags will be generated from each entry in the values.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">std::vector&lt;String&gt;</span><span class="apidesc"></span></dd>
-</dl>
-
-### <i class="fa fa-code"></i> Public member functions
-
-#### <i class="fa fa-caret-right"></i> add
-
-```cpp
-void add(const String& value)
-```
-Adds an option for the radio button.
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">value</span><span class="apidesc">An option string to add to the radio button.</span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> check
-
-```cpp
-void check(const String& value)
-```
-Indicates the check of the specified option for the radio buttons. You can use the **check** function for checking dynamically with arbitrary of the radio button.
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">value</span><span class="apidesc">An option string to be checked.</span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> empty
-
-```cpp
-void empty(const size_t reserve = 0)
-```
-Clear the array of option strings that AutoConnectRadio has in the values. When the **_reserve_** parameter is specified, a vector container of that size is reserved.
-
-The empty function resets the checked value to zero. When the empty function is executed, any button will be turned off.
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">reserve</span><span class="apidesc">Reserved size of a container for the radio button option strings.</span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> operator &#91;&nbsp;&#93;
-
-```cpp
-const String& operator[] (const std::size_t n)
-```
-Returns a value string of the index specified by **_n_**.
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">n</span><span class="apidesc">Index of values array to return. Its base number is 0.</span></dd>
-    <dt>**Return value**</dt>
-    <dd>A reference of a value string indexed by the specified the **n**.</dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> size
-
-```cpp
-size_t size(void)
-```
-Returns number of options which contained.
-<dl class="apidl">
-    <dt>**Return value**</dt>
-    <dd>Number of options which contained.</dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> typeOf
-
-```cpp
-ACElement_t typeOf(void)
-```
-Returns type of AutoConnectElement.
-<dl class="apidl">
-    <dt>**Return value**</dt>
-    <dd>AC_Radio</dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> value
-
-```cpp
-  const String& value(void) const
-```
-Returns current checked option of the radio buttons.
-<dl class="apidl">
-    <dt>**Return value**</dt>
-    <dd>A String of an option current checked. If there is no checked option, a null string returned.</dd>
-</dl>
-
-## AutoConnectSelect
-
-### <i class="fa fa-code"></i> Constructor
-
-```cpp
-AutoConnectSelect(const char* name = "", std::vector<String> const& options = {}, const char* label = "", const uint8_t selected = 0)
-```
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">name</span><span class="apidesc">The element name.</span></dd>
-    <dd><span class="apidef">options</span><span class="apidesc">An array of options of the select element. Specifies a [std::vector](https://en.cppreference.com/w/cpp/container/vector) object.</span></dd>
-    <dd><span class="apidef">label</span><span class="apidesc">Label string.</span></dd>
-    <dd><span class="apidef">selected</span><span class="apidesc">An option should be pre-selected when the page loads.</span></dd>
-</dl>
-
-### <i class="fa fa-code"></i> Public member variables
-
-#### <i class="fa fa-caret-right"></i> enable
-
-Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">boolean</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> name
-
-The element name.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> label
-
-A label is an optional string. A label will be arranged in the top of the selection list.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> options
-
-An array of String type for the selection options. It is an initialization list can be used. The `#!html <option value>` tags will be generated from each entry in the options.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">std::vector&lt;String&gt;</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> selected
-
-A `selected` is an optional value. Specifies 1-based index value of an options array that an option should be pre-selected when the page loads.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">uint8_t</span><span class="apidesc"></span></dd>
-</dl>
-
-### <i class="fa fa-code"></i> Public member functions
-
-#### <i class="fa fa-caret-right"></i> add
-
-```cpp
-void add(const String& option)
-```
-Adds a selectable option string for the selection list.
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">option</span><span class="apidesc">A string of selectable item to be contained in the select element.</span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> empty
-
-```cpp
-void empty(const size_t reserve = 0)
-```
-Clear the array of options list that AutoConnectSelect has in the options. When the **_reserve_** parameter is specified, a vector container of that size is reserved.
-
-The empty function resets the selected value to zero. When the empty function is executed, there are no selected options and the first item is placed at the beginning.
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">reserve</span><span class="apidesc">Reserved size of a container for the options.</span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> operator &#91;&nbsp;&#93;
-
-```cpp
-const String& operator[] (const std::size_t n)
-```
-Returns an option string of the index specified by **_n_**.
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">n</span><span class="apidesc">Index of options array to return. Its base number is 0.</span></dd>
-    <dt>**Return value**</dt>
-    <dd>A reference of a option string indexed by the specified the **n**.</dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> select
-
-```cpp
-void  select(const String& value);
-```
-Selects an option with the value.
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">value</span><span class="apidesc">String value that option should be selected in an option array.</span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> size
-
-```cpp
-size_t size(void)
-```
-Returns number of options which contained.
-<dl class="apidl">
-    <dt>**Return value**</dt>
-    <dd>Number of options which contained.</dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> typeOf
-
-```cpp
-ACElement_t typeOf(void)
-```
-Returns type of AutoConnectElement.
-<dl class="apidl">
-    <dt>**Return value**</dt>
-    <dd>AC_Select</dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> value
-
-```cpp
-const String& value(void) const;
-```
-Returns current selected option of the select list.
-<dl class="apidl">
-    <dt>**Return value**</dt>
-    <dd>A String of an option current selected. If there is no select option, a null string returned.</dd>
-</dl>
-
-## AutoConnectSubmit
-
-### <i class="fa fa-code"></i> Constructor
-
-```cpp
-AutoConnectSubmit(const char* name = "", const char* value ="", char* uri = "")
-```
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">name</span><span class="apidesc">The element name.</span></dd>
-    <dd><span class="apidef">value</span><span class="apidesc">The name of the submit button as an HTML `#!html <input type="button">` tag, it will also be the label of the button.</span></dd>
-    <dd><span class="apidef">uri</span><span class="apidesc">Destination URI.</span></dd>
-</dl>
-
-### <i class="fa fa-code"></i> Public member variables
-
-#### <i class="fa fa-caret-right"></i> enable
-
-Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">boolean</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> name
-
-The element name.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> uri
-
-Destination URI.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> value
-
-The name of the submit button. It will also be the label of the button.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-### <i class="fa fa-code"></i> Public member functions
-
-#### <i class="fa fa-caret-right"></i> typeOf
-
-```cpp
-ACElement_t typeOf(void)
-```
-Returns type of AutoConnectElement.
-<dl class="apidl">
-    <dt>**Return value**</dt>
-    <dd>AC_Submit</dd>
-</dl>
-
-## AutoConnectText
-
-### <i class="fa fa-code"></i> Constructor
-
-```cpp
-AutoConnectText(const char* name = "", const char* value = "", const char* style = "", const char* format = "")
-```
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">name</span><span class="apidesc">The element name.</span></dd>
-    <dd><span class="apidef">value</span><span class="apidesc">String of content for the text element.</span></dd>
-    <dd><span class="apidef">style</span><span class="apidesc">A style code with CSS format that qualifiers the text.</span></dd>
-    <dd><span class="apidef">format</span><span class="apidesc">A pointer to a null-terminated multibyte string specifying how to interpret the value. It specifies the conversion format when outputting values. The format string conforms to C-style printf library functions</span></dd>
-</dl>
-
-### <i class="fa fa-code"></i> Public member variables
-
-#### <i class="fa fa-caret-right"></i> enable
-
-Enable HTML tag generation for the element. AutoConnect will generate the element into HTML only if the enable attribute is true.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">boolean</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> format
-
-The conversion format when outputting values. The format string conforms to C-style printf library functions.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> name
-
-The element name.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> style
-
-A style code with CSS format that qualifiers the text.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> value
-
-A content string of the text element.
-<dl class="apidl">
-    <dt>**Type**</dt>
-    <dd><span class="apidef">String</span><span class="apidesc"></span></dd>
-</dl>
-
-### <i class="fa fa-code"></i> Public member functions
-
-#### <i class="fa fa-caret-right"></i> typeOf
-
-```cpp
-ACElement_t typeOf(void)
-```
-Returns type of AutoConnectElement.
-<dl class="apidl">
-    <dt>**Return value**</dt>
-    <dd>AC_Text</dd>
-</dl>




diff --git a/lib/AutoConnect-master/mkdocs/apiextra.md b/lib/AutoConnect-master/mkdocs/apiextra.md
deleted file mode 100644
index a0cda6fbbf626e8db33af07cf6dd4a23c0312b7d..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/apiextra.md
+++ /dev/null
@@ -1,24 +0,0 @@
-## <i class="fa fa-gift"></i> Icons
-
-The library presents two PNG icons which can be used to embed a hyperlink to the AutoConnect menu.
-
-- Bar type <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAApklEQVRYR2NkGGDAOMD2M4w6YDQEkEMgEJggZwCxGI0T5mug+alAvBFkD7IDXtLBcpjfXgEZ4ugOeAETpHEIgIwHeVYC3QH+0CgAS9AQgCwHRcFmdAfQ0E7cRo9mw0EVAqPlAKhwEKVTVsBZDsyiQ2k4Wg6gxPKgyoZ0Sn+o1iCHQBBQaiYQi9DYJTjbAyAJWluOtz0wWg7QOOqxGz+aDUdDYMBDAACA0x4hs/MPrwAAAABJRU5ErkJggg==" title="AutoConnect menu" alt="AutoConnect menu" />
-- Cog type <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAC2klEQVRIS61VvWsUQRSfmU2pon9BUIkQUaKFaCBKgooSb2d3NSSFKbQR/KrEIiIKBiGF2CgRxEpjQNHs7mwOUcghwUQ7g58IsbGxEBWsb2f8zR177s3t3S2cA8ftzPu993vzvoaSnMu2vRKlaqgKp74Q/tE8qjQPyHGcrUrRjwlWShmDbFMURd/a6TcQwNiYUmpFCPElUebcuQ2vz6aNATMVReHEPwzfSSntDcNwNo2rI+DcvQzhpAbA40VKyV0p1Q9snzBG1qYVcYufXV1sREraDcxpyHdXgkfpRBj6Uwm2RsC5dxxmZ9pdOY9cKTISRcHTCmGiUCh4fYyplTwG2mAUbtMTBMHXOgK9QfyXEZr+TkgQ1oUwDA40hEgfIAfj+HuQRaBzAs9eKyUZ5Htx+T3ZODKG8DzOJMANhmGomJVMXPll+hx9UUAlzZrJJ4QNCDG3VEfguu7mcpmcB/gkBOtShhQhchAlu5jlLUgc9ENgyP5gf9+y6LTv+58p5zySkgwzLNOIGc8sEoT1Lc53NMlbCQQuvMxeCME1NNPVVkmH/i3IzzXDtCSA0qQQwZWOCJDY50jsQRjJmkslEOxvTcDRO6zPxOh5xZglKkYLhWM9jMVnkIsTyMT6NBj7IbOCEjm6HxNVVTo2WXqEWJZ1T8rytB6GxizyDkPhWVpBqfiXUtbo/HywYJSpA9kMamNNPZ71R9Hcm+TMHHZNGw3EuraXEUldbfvw25UdOjqOt+JhMwJd7+jSTpZaEiIcaCDwPK83jtWnTkwnunFMtxeL/ge9r4XItt1RNNaj/0GAcV2bR3U5sG3nEh6M61US+Qrfd9Bs31GGulI2GOS/8dgcQZV1w+ApjIxB7TDwF9GcNzJzoA+rD0/8HvPnXQJCt2qFCwbBTfRI7UyXumWVt+HJ9NO4XI++bdsb0YyrqXmlh+AWOLHaLqS5CLQR5EggR3YlcVS9gKeH2hnX8r8Kmi1CAsl36QAAAABJRU5ErkJggg==" title="AutoConnect menu" alt="AutoConnect menu" />
-
-To reference the icon, use the **AUTOCONNECT_LINK** macro in the sketch. It expands into the string literal as an HTML ```<a></a>``` tag with PNG embedded of the AutoConnect menu hyperlinks. Icon type is specified by the parameter of the macro.
-
-<dl class="apidl">
-    <dd><span class="apidef">BAR_24</span>Bars icon, 24x24.</dd>
-    <dd><span class="apidef">BAR_32</span>Bars icon, 32x32.</dd>
-    <dd><span class="apidef">BAR_48</span>Bars icon, 48x48.</dd>
-    <dd><span class="apidef">COG_24</span>Cog icon, 24x24.</dd>
-    <dd><span class="apidef">COG_32</span>Cog icon, 32x32.</dd>
-</dl>
-
-!!! note "Usage"
-    ```cpp
-    String html = "<html>";
-    html += AUTOCONNECT_LINK(BAR_32);
-    html += "</html>";
-    server.send(200, "text/html", html);
-    ```




diff --git a/lib/AutoConnect-master/mkdocs/basicusage.md b/lib/AutoConnect-master/mkdocs/basicusage.md
deleted file mode 100644
index c169c5fe204dfb30001ca1094fc22639398cfbce..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/basicusage.md
+++ /dev/null
@@ -1,107 +0,0 @@
-## Simple usage
-
-### <i class="fa fa-edit"></i> Embed to the sketches
-
-How embed the AutoConnect to the sketches you have. Most simple approach to applying AutoConnect for the existing sketches, follow the below steps. The below sketch is for ESP8266. For ESP32, replace ```ESP8266WebServer``` with ```WebServer``` and ```ESP8266WiFi.h``` with ```WiFi.h``` respectively.
-
-<img src="images/BeforeAfter.svg" />
-
-<ul class="ulsty-edit" style="list-style:none;">
-  <li>Insert <code class="codehilite"><span class="cp">#include</span> <span class="cpf">&lt;AutoConnect.h&gt;</span></code> to behind of <code class="codehilite"><span class="cp">#include</span> <span class="cpf">&lt;ESP8266WebServer.h&gt;</span></code>.</li>
-  <li>Insert <code class="codehilite"><span class="na">AutoConnect</span> <em>PORTAL(WEBSERVER);</em></code> to behind of <code class="codehilite"><span class="na">ESP8266WebServer</span> <em>WEBSERVER;</em></code> declaration.<sup id="fnref:1"><a class="footnote-ref" href="#fn:1" rel="footnote">1</a></sup></li>
-  <li>Remove <code class="codehilite">WiFi.<span class="na">begin</span>(<em>SSID</em>,<em>PSK</em>)</code> and the subsequent logic for the connection status check.</li>
-  <li>Replace <code class="codehilite"><em>WEBSERVER</em>.<span class="na">begin</span><span class="p">()</span></code> to <code class="codehilite"><em>PORTAL</em>.<span class="na">begin</span><span class="p">()</span></code>.<sup id="fnref:2"><a class="footnote-ref" href="#fn:2" rel="footnote">2</a></sup></li>
-  <li>Replace <code class="codehilite"><em>WEBSERVER</em>.<span class="na">handleClient</span><span class="p">()</span></code> to <code class="codehilite"><em>PORTAL</em>.<span class="na">handleClient</span><span class="p">()</span></code>.<sup id="fnref:3"><a class="footnote-ref" href="#fn:3" rel="footnote">3</a></sup></li>
-  <li>If the connection checks logic is needed, you can check the return value according to <code class="codehilite"><em>PORTAL</em>.<span class="na">begin</span><span class="p">()</span></code> with <code class="codehilite">true</code> or <code class="codehilite">false</code>.</li>
-</ul>
-
-[^1]:
-Each *VARIABLE* conforms to the actual declaration in the sketches.  
-
-[^2]:
-WiFi SSID and Password can be specified AutoConnect::begin() too.
-
-[^3]:
-Replacement the **handleClient** method is not indispensable. AutoConnect can still connect with the captive portal as it is ESP8266WebServer::handleClient. But it can **not valid AutoConnect menu**.
-
-## Basic usage
-
-### <i class="fa fa-caret-right"></i> Basic logic sequence for the user sketches
-
-#### 1. A typical logic sequence
-
-!!! note ""
-    1. <strong>Include headers,</strong> `ESP8266WebServer.h`/`WebServer.h` and `AutoConnect.h`  
-    2. <strong>Declare an ESP8266WebServer variable for ESP8266 or a WebServer variable for ESP32.</strong>  
-    3. <strong>Declare an AutoConnect variable.</strong>  
-    4. <strong>Implement the URL handlers provided for the </strong>`on`<strong> method of ESP8266WebServer/WebServer with the *function()*.</strong>  
-    5. <strong>setup()</strong>  
-       5.1 <strong>Sets URL handler the *function()* to ESP8266WebServer/WebServer by</strong>`ESP8266WebServer::on`<strong>/</strong>`WebServer::on`<strong>.</strong>  
-       5.2 <strong>Starts </strong>`AutoConnect::begin()`<strong>.</strong>  
-       5.3 <strong>Check WiFi connection status.</strong>  
-    6. <strong>loop()</strong>  
-       6.1 <strong>Do the process for actual sketch.</strong>  
-       6.2 <strong>Invokes </strong>`AutoConnect::handleClient()`<strong>, or invokes </strong>`ESP8266WebServer::handleClient()`<strong>/</strong>`WebServer::handleClient`<strong> then </strong>`AutoConnect::handleRequest()`<strong>.</strong>  
-
-#### 2. Declare AutoConnect object
-
-[Two options](#esp8266webserver-hosted-or-parasitic) are available for [AutoConnect constructor](api.md#constructors).
-
-```cpp
-AutoConnect VARIABLE(&ESP8266WebServer);  // For ESP8266
-AutoConnect VARIABLE(&WebServer);         // For ESP32
-```
-or
-
-```cpp
-AutoConnect VARIABLE;
-```
-
-- **The parameter with an ESP8266WebServer/WebServer variable:** An ESP8266WebServer/WebServer object variable must be declared. AutoConnect uses its variable to handles the [AutoConnect menu](menu.md).
-
-- **With no parameter:** The sketch does not declare ESP8266WebServer/WebServer object. In this case, AutoConnect allocates an instance of the ESP8266WebServer/WebServer internally. The logic sequence of the sketch is somewhat different as the above. To register a URL handler function by *ESP8266WebServer::on* or *WebServer::on* should be performed after [*AutoConnect::begin*](api.md#begin).
-
-#### 3. No need WiFI.begin(...)
-
-AutoConnect internally performs *WiFi.begin* to establish a WiFi connection. There is no need for a general process to establish a connection using *WiFi.begin* with a sketch code.
-
-#### 4. Alternate ESP8266WebServer::begin() and WebServer::begin()
-
-[*AutoConnect::begin*](api.md#begin) executes *ESP8266WebServer::begin*/*WebServer::begin* internally too and it starts the DNS server to behave as a Captive portal. So it is not needed to call *ESP8266WebServer::begin*/*WebServer::begin* in the sketch.
-
-!!! info "Why DNS Server starts"
-    AutoConnect traps the detection of the captive portal and achieves a connection with the WLAN interactively by the AutoConnect menu. It responds SoftAP address to all DNS queries temporarily to trap. Once a WiFi connection establishes, the DNS server contributed by AutoConnect stops.
-
-#### 5. AutoConnect::begin with SSID and Password
-
-SSID and Password can also specify by [*AutoConnect::begin*](api.md#begin). ESP8266/ESP32 uses provided SSID and Password explicitly. If the connection false with specified SSID with Password then a captive portal is activated. SSID and Password are not present, ESP8266 SDK will attempt to connect using the still effectual SSID and password. Usually, it succeeds.
-
-#### 6. Use ESP8266WebServer::on and WebServer::on to handle URL
-
-AutoConnect is designed to coexist with the process for handling the web pages by user sketches. The page processing function which will send an HTML to the client invoked by the "*on::ESP8266WebServer*" or the "*on::WebServer*" function is the same as when using ESP8266WebServer/WebServer natively.
-
-#### 7. Use either ESP8266WebServer::handleClient()/WebServer::handleClient() or AutoConnect::handleClient()
-
-Both classes member function name is the same: *handleClient*, but the behavior is different. Using the AutoConnect embedded along with ESP8266WebServer::handleClient/WebServer::handleClient has limitations. Refer to the below section for details. 
-
-### <i class="fa fa-caret-right"></i> ESP8266WebServer/WebServer hosted or parasitic
-
-The interoperable process with an ESP8266WebServer/WebServer depends on the parameters of the [AutoConnect constructor](api.md#constructors).
-
-Declaration parameter for the constructor | Use ESP8266WebServer::handleClient or WebServer::handleClient only | Use AutoConnect::handleClient
-----|----|---
-[None](api.md#constructors) | AutoConnect menu not available.<br>To use AutoConnect menu, need [AutoConnect::handleRequest()](api.md#handlerequest).<br>also to use ESP8266WebServer/WebServer natively, need [AutoConnect::host()](api.md#host). | AutoConnect menu available.<br>To use ESP8266WebServer/WebServer natively, need [AutoConnect::host()](api.md#host).
-[Reference to ESP8266WebServer/WebServer](api.md#withparameter) | AutoConnect menu not available.<br>To use AutoConnect menu, need [AutoConnect::handleRequest()](api.md#handlerequest). | AutoConnect menu available.
-
-- **By declaration for the AutoConnect variable with no parameter**: The ESP8266WebServer/WebServer instance is hosted by AutoConnect automatically then the sketches use [*AutoConnect::host*](api.md#host) as API to get it after [*AutoConnect::begin*](api.md#begin) performed.
-
-- **By declaration for the AutoConnect variable with the reference of ESP8266WebServer/WebServer**: AutoConnect will use it. The sketch can use it is too.
-
-- **In use ESP8266WebServer::handleClient()/WebServer::handleClient()**: AutoConnect menu can be dispatched but not works normally. It is necessary to call [*AutoConnect::handleRequest*](api.md#void-handlerequest) after *ESP8255WebServer::handleClient*/*WebServer::handleClient* invoking.
-
-- **In use [AutoConnect::handleClient()](api.md#void-handleclient)**: The handleClient() process and the AutoConnect menu is available without calling *ESP8266WebServer::handleClient*.
-
-!!! info "Why AutoConnect::handleRequest is needed when using ESP8266WebServer::handleClient/WebServer::handleClient"
-    The AutoConnect menu function may affect WiFi connection state. It follows that the menu process must execute outside *ESP8266WebServer::handleClient* and *WebServer::handleClient*.  
-    [*AutoConnect::handleClient*](api.md#void-handleclient) is equivalent *ESP8266WebServer::handleClient* and *WEbServer::handleClient* included [*AutoConnect::handleRequest*](api.md#void-handlerequest).
-




diff --git a/lib/AutoConnect-master/mkdocs/changelog.md b/lib/AutoConnect-master/mkdocs/changelog.md
deleted file mode 100644
index 8fc7dc0e15ef177569e65fc2d0e01ab0cbb2fd9f..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/changelog.md
+++ /dev/null
@@ -1,67 +0,0 @@
-#### [0.9.10] June 12, 2019
-- Fixed the unable to get AutoConnectElemets values ​​in the sketch with ESP8266 arduino core 2.5.2.
-
-#### [0.9.9] May 25, 2019
-- Supports ESP8266 Arduino core 2.5.2.
-- Menu text/background color can be statically customized.
-- Added the [enable](achandling.md#enable-autoconnectelements-during-the-sketch-execution)  attribute to the AutoConnectElements. This attribute gives dynamically change to the element activation during the sketch executing.
-- Added ID attribute to HTML tag generated from AutoConnectText.
-- Fixed the input box layout collapsed.
-- Fixed that the decoration of AutoConnectButton was disabled.
-- Fixed that the value remains even after clearing the option with AutoConnectSelect.
-- Fixed that an alignment violation exception occurred when loading AutoConnectAux described by JSON with PROGMEM attribute.
-
-#### [0.9.8] May 3, 2019
-- Supports ArduinoJson 6.9.1 or later.
-- Supports allocating JsonDocument buffer to PSRAM on ESP32 with ArduinoJson 6.10.0 or later.
-- Supports [**operator`[]`**](apiaux.md#operator) as a shortcut for AutoConnectAux::getElement function.
-- Supports [**AutoConnectElement::as<T\>**](apielements.md#ast62) function to easily coding for conversion from an AutoConnectElement to an actual type.
-- Supports new element type [**AutoConnectFile**](acelements.md#autoconnectfile) and built-in file uploader.
-- Supports a [**format**](acelements.md#format) attribute with the AutoConnectText element.
-- Supports a [**selected**](acelements.md#selected) attribute with the AutoConnectSelect element.
-- Supports multiple element loading with [AutoConnectAux::loadElement](apiaux.md#loadelement).
-- Changed menu labels placement in source files structure.
-- Changed API interface of [**AutoConnect::where](api.md#where) function.
-- Fixed blank page responds with Configure new.
-- Fixed loading elements value missing.
-- Fixed losing elements in saveElement with ArduinoJson V6.
-- Fixed compile error with older than ESP8266 core 2.5.0.
-
-#### [0.9.7] Jan. 25, 2019
-
-- Fixed crash in some environments. Thank you @ageurtse
-- Supports AutoConnect menu extension by user sketch with [**AutoConnectAux**](acintro.md).
-- Supports loading and saving of user-defined parameters with JSON format.
-- Improved the WiFi connection sequence at the first WiFi.begin. Even if [**AutoConnectConfig::autoReconnect**](apiconfig.md#autoreconnect) is disabled when SSID and PSK are not specified, it will use the information of the last established access point. The autoReconnect option will achieve trying the connect after a previous connection failed.
-- Supports the [**AutoConnectConfig::immediateStart**](apiconfig.md#immediatestart) option and immediately starts the portal without first trying WiFi.begin. You can start the captive portal at any time in combination with the [**AutoConnectConfig::autoRise**](apiconfig.md#autorise) option.
-- Improved boot uri after reset. [**AutoConnectConfig::bootUri**](apiconfig.md#booturi) can be specified either /_ac or HOME path as the uri to be accessed after invoking Reset from AutoConnect menu.
-- Improved source code placement of predefined macros. Defined common macros have been moved to ```AutoConnectDefs.h```.
-- Supports [**AutoConnectConfig::hostName**](apiconfig.md#hostname). It activates ```WiFi.hostname()```/```WiFi.setHostName()```.
-- Supports the captive portal time-out. It can be controlled by [**AutoConnectConfig::portalTimeout**](apiconfig.md#portaltimeout) and [**AutoConnectConfig::retainPortal**](apiconfig.md#retainportal).
-
-#### [0.9.6] Sept.27, 2018.
-
-- Improvement of RSSI detection for saved SSIDs.
-- Fixed disconnection SoftAP completely at the first connection phase of the [**AutoConnect::begin**](api.md#begin).
-
-#### [0.9.5] Aug.27, 2018.
-
-- Supports ESP32.
-- Fixed that crash may occur if the number of stored credentials in the EEPROM is smaller than the number of found WiFi networks.
-
-#### [0.9.4] May 5, 2018.
-
-- Automatically focus passphrase after selecting SSID with Configure New AP.
-- Supports [**AutoConnectConfig::autoReconnect**](apiconfig.md#autoreconnect) option, it will scan the WLAN when it can not connect to the default SSID, apply the applicable credentials if it is saved, and try reconnecting.
-
-#### [0.9.3] March 23, 2018.
-
-- Supports a static IP address assignment.
-
-#### [0.9.2] March 19, 2018.
-
-- Improvement of string literal declaration with the examples, no library change.
-
-#### [0.9.1] March 13, 2018.
-
-- A release of the stable.




diff --git a/lib/AutoConnect-master/mkdocs/colorized.md b/lib/AutoConnect-master/mkdocs/colorized.md
deleted file mode 100644
index 403a0e60cbb6242cf378d4d42e164b8d92bd74ae..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/colorized.md
+++ /dev/null
@@ -1,54 +0,0 @@
-## AutoConnect menu colorizing ##
-
-You can easily change the color of the AutoConnect menu. Menu colors can be changed statically by the AutoConnect menu color definition determined at compile time. You cannot change the color while the sketch is running.
-
-The menu color scheme has been separated to `AutoConnectLabels.h` placed the AutoConnect library folder.[^1] You can change the color scheme of the menu with the following three color codes. The color code also accepts CSS standard color names.[^2]
-
-[^1]: Usually, it will locate to the Arduino/libraries/AutoConnect/src folder of user documents.
-
-[^2]: The W3C HTML and CSS standards have listed only 16 valid color names: aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, and yellow. Major browsers can accept more color names, but they are not web safe in typically.
-
-In `AutoConnectLabels.h` you can find three definition macros for menu colors:
-
-- \#define <b>AUTOCONNECT_MENUCOLOR_TEXT</b>  
-Defines the menu text color.
-
-- \#define <b>AUTOCONNECT_MENUCOLOR_BACKGROUND</b>  
-Defines the menu background color.
-
-- \#define <b>AUTOCONNECT_MENUCOLOR_ACTIVE</b>  
-Defines the active menu item background color.
-
-## Typical color schemes
-
-Here are some color schemes picked up.
-
-### <i class="fas fa-palette"></i> Indigo
-
-```cpp
-#define AUTOCONNECT_MENUCOLOR_TEXT        "#ffa500"
-#define AUTOCONNECT_MENUCOLOR_BACKGROUND  "#1a237e"
-#define AUTOCONNECT_MENUCOLOR_ACTIVE      "#283593"
-```
-
-<img src="images/ACMenu_indigo.png">
-
-### <i class="fas fa-palette"></i> Dim-gray
-
-```cpp
-#define AUTOCONNECT_MENUCOLOR_TEXT        "#fffacd"
-#define AUTOCONNECT_MENUCOLOR_BACKGROUND  "#696969"
-#define AUTOCONNECT_MENUCOLOR_ACTIVE      "#808080"
-```
-
-<img src="images/ACMenu_dimgray.png">
-
-### <i class="fas fa-palette"></i> Brown
-
-```cpp
-#define AUTOCONNECT_MENUCOLOR_TEXT        "#e6e6fa"
-#define AUTOCONNECT_MENUCOLOR_BACKGROUND  "#3e2723"
-#define AUTOCONNECT_MENUCOLOR_ACTIVE      "#4e342e"
-```
-
-<img src="images/ACMenu_brown.png">




diff --git a/lib/AutoConnect-master/mkdocs/credit.md b/lib/AutoConnect-master/mkdocs/credit.md
deleted file mode 100644
index 964630a3667a4f99d6a53a47b15ae10efb524d24..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/credit.md
+++ /dev/null
@@ -1,142 +0,0 @@
-## Saved credential in EEPROM
-
-AutoConnect stores the established WiFi connection in the EEPROM of the ESP8266/ESP32 module and equips the class to access it from the sketch. You can read, write or erase the credentials using this class individually. It's [**AutoConnectCredential**](#autoconnectcredential) class which provides the access method to the saved credentials in EEPROM.[^1]
-
-[^1]:An example using AutoConnectCredential is provided as [an example](https://github.com/Hieromon/AutoConnect/blob/master/examples/Credential/Credential.ino) of a library sketch to delete saved credentials.
-
-## AutoConnectCredential
-
-### <i class="fa fa-code"></i> Include header
-
-```cpp
-#include <AutoConnectCredential.h>
-```
-
-### <i class="fa fa-code"></i> Constructors
-
-```cpp
-AutoConnectCredential();
-```
-
-AutoConnectCredential default constructor. The default offset value is 0. If the offset value is 0, the credential area starts from the top of the EEPROM. AutoConnect sometimes overwrites data when using this area with user sketch.
-
-```cpp
-AutoConnectCredential(uint16_t offset);
-```
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">offset</span><span class="apidesc">Species offset from the top of the EEPROM for the credential area together. The offset value is from 0 to the flash sector size.</span></dd>
-</dl>
-
-### <i class="fa fa-code"></i> Public member functions
-
-#### <i class="fa fa-caret-right"></i> entries
-
-```cpp
-uint8_t entries(void)
-```
-
-Returns number of entries as contained credentials.
-<dl class="apidl">
-    <dt>**Return value**</dt>
-    <dd>Number of entries as contained credentials.</dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> load
-
-```cpp
-int8_t load(const char* ssid, struct station_config* config)
-```
-
-Load a credential entry and store to **config**.
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">ssid</span><span class="apidesc">SSID to be loaded.</span></dd>
-    <dd><span class="apidef">config</span><span class="apidesc">station_config</span></dd>
-    <dt>**Return value**</dt>
-    <dd>Save the specified SSID's credential entry to station_config pointed to by the parameter as **config**. -1 is returned if the SSID is not saved. </dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> load
-
-```cpp
-bool load(int8_t entry, struct station_config* config)
-```
-
-Load a credential entry and store to **config**.
-<dl class="apidl">
-    <dt>**Parameters**</dt>
-    <dd><span class="apidef">entry</span><span class="apidesc">Specifies the index number based 0 to be loaded.</span></dd>
-    <dd><span class="apidef">config</span><span class="apidesc">station_config</span></dd>
-    <dt>**Return value**</dt>
-    <dd>Save the specified credential entry to station_config pointed to by the parameter as **config**. -1 is returned if specified number is not saved. </dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> save
-
-```cpp
-bool save(const struct station_config* config)
-```
-
-Save a credentail entry.
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">config</span><span class="apidesc">station_config to be saved.</span></dd>
-    <dt>**Return value**</dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Successfully saved.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">Failed to save.</span></dd>
-</dl>
-
-#### <i class="fa fa-caret-right"></i> del
-
-```cpp
-bool del(const char* ssid)
-```
-
-Delete a credential the specified SSID.
-<dl class="apidl">
-    <dt>**Parameter**</dt>
-    <dd><span class="apidef">ssid</span><span class="apidesc">SSID to be deleted.</span></dd>
-    <dt>**Return value**</dt>
-    <dd><span class="apidef">true</span><span class="apidesc">Successfully deleted.</span></dd>
-    <dd><span class="apidef">false</span><span class="apidesc">Failed to delete.</span></dd>
-</dl>
-
-## The data structures
-
-### <i class="fa fa-code"></i>  station_config
-
-A structure is included in the ESP8266 SDK. You can use it in the sketch like as follows:
-
-```cpp
-extern "C" {
-#include <user_interface.h>
-}
-```
-
-```cpp
-struct station_config {
-  uint8 ssid[32];
-  uint8 password[64];
-  uint8 bssid_set;
-  uint8 bssid[6];
-};
-```
-
-### <i class="fa fa-code"></i>  The credential entry
-
-A data structure of the credential saving area in EEPROM as the below. [^2]
-
-[^2]:
-There may be 0xff as an invalid data in the credential saving area. The 0xff area would be reused.
-
-| Byte offset | Length   | Value                                                               |
-|-------------|----------|---------------------------------------------------------------------|
-| 0           | 8        | AC_CREDT                                                            |
-| 8           | 1        | Number of contained entries (uint8_t)                               |
-| 9           | 2        | Container size, excluding size of AC_CREDT and size of the number of entries(width for uint16_t type). |
-| 11          | variable | SSID terminated by 0x00. Max length is 32 bytes.                    |
-| variable    | variable | Password plain text terminated by 0x00. Max length is 64 bytes.     |
-| variable    | 6        | BSSID                                                               |
-| variable    |          | Contained the next entries. (Continuation SSID+Password+BSSID)      |
-| variable    | 1        | 0x00. End of container.                                             |




diff --git a/lib/AutoConnect-master/mkdocs/css/extra.css b/lib/AutoConnect-master/mkdocs/css/extra.css
deleted file mode 100644
index 1a9c3d666dbb1afb4daf1f3ac067897c7a26b222..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/css/extra.css
+++ /dev/null
@@ -1,9 +0,0 @@
-pre { color: white !important; }
-
-.md-clipboard:before {
-    color: rgb(100, 100, 100);
-}
-
-.codehilite:hover .md-clipboard:before,.md-typeset .highlight:hover .md-clipboard:before,pre:hover .md-clipboard:before {
-    color: rgba(255, 255, 255, 0.54) !important
-}




diff --git a/lib/AutoConnect-master/mkdocs/css/paragraph.css b/lib/AutoConnect-master/mkdocs/css/paragraph.css
deleted file mode 100644
index 7fe9434bbea53900e8621109b0ef8a657a32d815..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/css/paragraph.css
+++ /dev/null
@@ -1,67 +0,0 @@
-.lead {
-	color: gray;
-	font-size: 15px;
-}
-
-.md-typeset h2 {
-	border-bottom: solid 1px #d3d3d3;
-	padding-bottom: 5px;
-}
-
-.md-typeset pre {
-  font-size: 12px;
-}
-
-.md-typeset .codehilitetable {
-  margin-left:-20px;
-  margin-right: -20px;
-  border-radius: 0;
-}
-
-.md-typeset .codehilitetable .linenodiv {
-  background-color: #222 !important;
-}
-
-.md-typeset .codehilitetable .linenodiv pre {
-  background-color: #222 !important;
-  color: #aaa;
-  margin: 0;
-}
-
-.md-typeset .codehilitetable .md-clipboard:before {
-  color: rgba(240,240,240,.8);
-}
-.md-typeset .codehilitetable .md-clipboard:hover:before {
-  color: rgba(102,217,224,1);
-}
-
-.apidl {
-  margin-left: 20px;
-}
-
-.apidef {
-  display: block;
-  float: left;
-  width: 100px;
-}
-
-.apidesc {
-  display: inline-block;
-  width: calc(100% - 100px);
-}
-
-.ulsty-edit > li:before {
-  font-family: 'FontAwesome';
-  content: '\f044';
-  margin:0 0.8em 0 -1.8em;
-}
-
-.horizontal-list {
-  list-style-type: none;
-  overflow: hidden;
-}
-
-.horizontal-list > li {
-  float: left;
-  display: block;
-}
\ No newline at end of file




diff --git a/lib/AutoConnect-master/mkdocs/datatips.md b/lib/AutoConnect-master/mkdocs/datatips.md
deleted file mode 100644
index e104d38bdc36ff08a205235e4fc77a9469da0245..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/datatips.md
+++ /dev/null
@@ -1,184 +0,0 @@
-## Convert AutoConnectElements value to actual data type
-
-The values in the AutoConnectElements field of the custom Web page are all typed as String. A sketch needs to be converted to an actual data type if the data type required for sketch processing is not a String type.
-
-The AutoConnect library does not provide the data conversion utility, and its function depends on Arduino language functions or functions of the type class. However, commonly used data conversion methods are generally similar.
-
-Here, represent examples the typical method for the data type conversion for the AutoConnectElements value of custom Web pages.
-
-### <i class="fa fa-exchange"></i> Integer
-
-Use [int()](https://www.arduino.cc/reference/en/language/variables/conversion/intcast/) or [toInt() of String](https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/toint/).
-
-```cpp
-AutoConnectInput& input = aux.getElement<AutoConnectInput>("INPUT");
-int value = input.value.toInt();
-```
-You can shorten it and write as like:
-```cpp
-int value = aux["INPUT"].value.toInt();
-```
-
-### <i class="fa fa-exchange"></i> Float
-
-Use [float()](https://www.arduino.cc/reference/en/language/variables/conversion/floatcast/) or [toFloat() of String](https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/tofloat/).
-
-```cpp
-AutoConnectInput& input = aux.getElement<AutoConnectInput>("INPUT");
-float value = input.value.toFloat();
-```
-You can shorten it and write as like:
-```cpp
-float value = aux["INPUT"].value.toFloat();
-```
-
-### <i class="fa fa-exchange"></i> Date &amp; Time
-
-The easiest way is to use the [Arduino Time Library](https://www.pjrc.com/teensy/td_libs_Time.html). Sketches must accommodate differences in date and time formats depending on the time zone. You can absorb the difference in DateTime format by using `sscanf` function.[^1]
-
-[^1]:The ssanf library function cannot be used with the old Arduino core.
-
-```cpp
-#include <TimeLib.h>
-
-time_t tm;
-int Year, Month, Day, Hour, Minute, Second;
-
-AutoConnectInput& input = aux.["INPUT"].as<AutoConnectInput>();
-sscanf(input.value.c_str(), "%d-%d-%d %d:%d:%d", &Year, &Month, &Day, &Hour, &Minute, &Second);
-tm.Year = CalendarYrToTm(Year);
-tm.Month = Month;
-tm.Day = Day;
-tm.Hour = Hour;
-tm.Minute = Minute;
-tm.Second = Second;
-```
-
-### <i class="fa fa-exchange"></i> IP address
-
-To convert a String to an IP address, use **IPAddress::fromString**. To stringize an instance of an IP address, use **IPAddress::toString**.
-
-```cpp
-IPAddress ip;
-AutoConnectInput& input aux["INPUT"].as<AutoConnectInput>();
-ip.fromString(input.value);
-input.value = ip.toString();
-```
-
-## Validation for the value
-
-To convert input data correctly from the string, it must match its format. The validation implementation with sketches depends on various perspectives. Usually, the tiny devices have no enough power for the lexical analysis completely. But you can reduce the burden for data verification using the [**pattern**](achandling.md#check-data-against-on-submission) of AutoConnectInput.
-
-By giving a [pattern](acelements.md#pattern) to [AutoConnectInput](apielements.md#pattern), you can find errors in data format while typing in custom Web pages. Specifying the input data rule as a [regular expression](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions) will validate the type match during input. If there is an error in the format during input, the background color of the field will change to pink. Refer to section [*Handling the custom Web pages*](achandling.md#check-data-against-on-submission).
-
-However, input data will be transmitted even if the value does not match the pattern. Sketches require the validation of the received data. You can use the [AutoConnectInput::isValid](apielements.md#isvalid) function to validate it. The isValid function validates whether the value member variable matches a pattern and returns true or false.
-
-```cpp hl_lines="16 47"
-#include <ESP8266WiFi.h>
-#include <ESP8266WebServer.h>
-#include <AutoConnect.h>
-
-static const char input_page[] PROGMEM = R"raw(
-[
-  {
-    "title": "IP Address",
-    "uri": "/",
-    "menu": true,
-    "element": [
-      {
-        "name": "ipaddress",
-        "type": "ACInput",
-        "label": "IP Address",
-        "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$"
-      },
-      {
-        "name": "send",
-        "type": "ACSubmit",
-        "value": "SEND",
-        "uri": "/check"
-      }
-    ]
-  },
-  {
-    "title": "IP Address",
-    "uri": "/check",
-    "menu": false,
-    "element": [
-      {
-        "name": "result",
-        "type": "ACText"
-      }
-    ]
-  }
-]
-)raw";
-
-AutoConnect portal;
-
-String checkIPAddress(AutoConnectAux& aux, PageArgument& args) {
-  AutoConnectAux&   input_page = *portal.aux("/");
-  AutoConnectInput& ipaddress = input_page["ipaddress"].as<AutoConnectInput>();
-  AutoConnectText&  result = aux["result"].as<AutoConnectText>();
-
-  if (ipaddress.isValid()) {
-    result.value = "IP Address " + ipaddress.value + " is OK.";
-    result.style = "";
-  }
-  else {
-    result.value = "IP Address " + ipaddress.value + " error.";
-    result.style = "color:red;";
-  }
-  return String("");
-}
-
-void setup() {
-  portal.load(input_page);
-  portal.on("/check", checkIPAddress);
-  portal.begin();
-}
-
-void loop() {
-  portal.handleClient();
-}
-```
-
-!!! caution "Regular Expressions for JavaScript"
-    Regular expressions specified in the AutoConnectInput pattern conforms to the [JavaScript specification](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions).
-
-Here, represent examples the typical regular expression for the input validation.
-
-### <img src="images/regexp.png" align="top"> URL
-
-```
-^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
-```
-
-### <img src="images/regexp.png" align="top"> DNS hostname
-
-```
-^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$
-```
-
-### <img src="images/regexp.png" align="top"> email address [^2]
-
-```
-^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$
-```
-
-### <img src="images/regexp.png" align="top"> IP Address
-
-```
-^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
-```
-
-### <img src="images/regexp.png" align="top"> Date as MM/DD/YYYY [^3]
-
-```
-^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.](19|20)\d\d$
-```
-
-!!! caution "Contain with backquote"
-    If that regular expression contains a backquote it must be escaped by backquote duplication.
-
-[^2]: This regular expression does not fully support the format of the e-mail address requested in [RFC5322](https://tools.ietf.org/html/rfc5322).
-[^3]: This regular expression does not consider semantic constraints. It is not possible to detect errors that do not exist as actual dates.




diff --git a/lib/AutoConnect-master/mkdocs/faq.md b/lib/AutoConnect-master/mkdocs/faq.md
deleted file mode 100644
index c1e044dc3a95dc99efb77fdabb4e81b27ef0cdbc..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/faq.md
+++ /dev/null
@@ -1,207 +0,0 @@
-## <i class="fa fa-question-circle"></i> After connected, AutoConnect menu performs but no happens.
-
-If you can access the **AutoConnect root path** as http://ESP8266IPADDRESS/_ac from browser, probably the sketch uses *ESP8266WebServer::handleClient()* without [*AutoConnect::handleRequest()*](api.md#handlerequest).  
-For AutoConnect menus to work properly, call [*AutoConnect::handleRequest()*](api.md#handlerequest) after *ESP8266WebServer::handleClient()* invoked, or use [*AutoConnect::handleClient()*](api.md#handleclient). [*AutoConnect::handleClient()*](api.md#handleclient) is equivalent *ESP8266WebServer::handleClient* combined [*AutoConnect::handleRequest()*](api.md#handlerequest).
-
-See also the explanation [here](basicusage.md#esp8266webserver-hosted-or-parasitic).
-
-## <i class="fa fa-question-circle"></i> An esp8266ap as SoftAP was connected but Captive portal does not start.
-
-Captive portal detection could not be trapped. It is necessary to disconnect and reset ESP8266 to clear memorized connection data in ESP8266. Also, It may be displayed on the smartphone if the connection information of esp8266ap is wrong. In that case, delete the connection information of esp8266ap memorized by the smartphone once.
-
-## <i class="fa fa-question-circle"></i> Connection lost immediately after establishment with AP
-
-A captive portal is disconnected immediately after the connection establishes with the new AP. This is a known problem of ESP32, and it may occur when the following conditions are satisfied at the same time.
-
-- SoftAP channel on ESP32 and the connecting AP channel you specified are different. (The default channel of SoftAP is 1.)
-- NVS had erased by erase_flash causes the connection data lost. The NVS partition has been moved. Never connected to the AP in the past.
-- There are receivable multiple WiFi signals which are the same SSID with different channels using the WiFi repeater etc. (This condition is loose, it may occur even if there is no WiFi repeater.)
-- Or the using channel of the AP which established a connection is congested with the radio signal on the same band. (If the channel crowd, connections to known APs may also fail.)
-
-!!! info "Other possibilities"
-    The above conditions are not absolute. It results from my investigation, and other conditions may exist.
-
-To avoid this problem, try [changing the channel](#1-change-wifi-channel).
-
-ESP32 hardware equips only one RF circuitry for WiFi signal. At the AP_STA mode, ESP32 as an AP attempts connect to another AP on another channel while keeping the connection with the station then the channel switching will occur causes the station may be disconnected. But it may not be just a matter of channel switching causes ESP8266 has the same constraints too. It may be a problem with AutoConnect or the arduino core or SDK issue. This problem will persist until a specific solution.
-
-## <i class="fa fa-question-circle"></i> Does not appear esp8266ap in smartphone.
-
-Maybe it is successfully connected at the [**first WiFi.begin**](lsbegin.md#autoconnectbegin-logic-sequence). ESP8266 remembers the last SSID successfully connected and will use at the next. It means SoftAP will only start up when the first *WiFi.begin()* fails.
-
-The saved SSID would be cleared by  *WiFi.disconnect()* with WIFI_STA mode. If you do not want automatic reconnection, you can erase the memorized SSID with the following simple sketch.
-
-```cpp
-#include <ESP8266WiFi.h>
-
-void setup() {
-  delay(1000);
-  Serial.begin(115200);
-  WiFi.mode(WIFI_STA);
-  delay(100);
-  WiFi.begin();
-  if (WiFi.waitForConnectResult() == WL_CONNECTED) {
-    WiFi.disconnect();
-    while (WiFi.status() == WL_CONNECTED)
-      delay(100);
-  }
-  Serial.println("WiFi disconnected.");
-}
-
-void loop() {
-  delay(1000);
-}
-```
-
-??? hint "You can interactively check the WiFi state of ESP8266."
-    Please try [**ESPShaker**](https://github.com/Hieromon/ESPShaker). It is ESP8266 interactive serial command processor.
-
-    <img src="images/espshaker.gif" />
-
-## <i class="fa fa-question-circle"></i> Does not response from /\_ac.
-
-Probably **WiFi.begin** failed with the specified SSID. Activating the [debug printing](advancedusage.md#debug-print) will help you to track down the cause.
-
-## <i class="fa fa-question-circle"></i> How change esp8266ap for SSID name in Captive portal?
-
-You can change both by using [AutoConnectConfig::apid](apiconfig.md#apid) and [AutoConnectConfig::psk](apiconfig.md#psk). Refer to section [Change SSID and Password for SoftAP](advancedusage.md#change-ssid-and-password-for-softap) in [Advanced usage](advancedusage.md).
-
-## <i class="fa fa-question-circle"></i> How change HTTP port?
-
-HTTP port number is defined as a macro in [AutoConnectDefs.h](https://github.com/Hieromon/AutoConnect/blob/master/src/AutoConnectDefs.h#L112) header file. You can change it directly with several editors and must re-compile.
-
-```cpp
-#define AUTOCONNECT_HTTPPORT    80
-```
-
-## <i class="fa fa-question-circle"></i> Hang up after Reset?
-
-If ESP8266 hang up after reset by AutoConnect menu, perhaps manual reset is not yet. Especially if it is not manual reset yet after uploading the sketch, the boot mode will stay 'Uart Download'. There is some discussion about this on the Github's ESP8266 core: https://github.com/esp8266/Arduino/issues/1017
-
-If you received the following message, the boot mode is still sketch uploaded. It needs to the manual reset once.
-
-```
-ets Jan  8 2013,rst cause:2, boot mode:(1,6) or (1,7)
-ets Jan  8 2013,rst cause:4, boot mode:(1,6) or (1,7)
-wdt reset
-```
-
-The correct boot mode for starting the sketch is **(3, x)**.
-
-!!! info "ESP8266 Boot Messages"
-    It is described by [ESP8266 Non-OS SDK API Reference](view-source:https://www.espressif.com/en/products/hardware/esp8266ex/resources), section A.5.
-
-    | Messages | Description |
-    |----------|-------------|
-    | rst cause | 1: power on<br>2: external reset<br>4: hardware watchdog reset |
-    | boot mode<br>(the first parameter) | 1: ESP8266 is in UART-down mode (and downloads firmware into flash).<br>3: ESP8266 is in Flash-boot mode (and boots up from flash). |
-
-## <i class="fa fa-question-circle"></i> How erase the credentials saved in EEPROM?
-
-Make some sketches for erasing the EEPROM area, or some erasing utility is needed. You can prepare the sketch to erase the saved credential with *AutoConnectCredential*. The *AutoConnectCrendential* class provides the access method to the saved credential in EEPROM and library source file is including it. Refer to '[Saved credential access](credit.md#saved-credential-in-eeprom)' on section [Appendix](credit.md) for details.
-
-!!! hint
-    With the [**ESPShaker**](https://github.com/Hieromon/ESPShaker), you can access EEPROM interactively from the serial monitor, and of course you can erase saved credentials.
-
-## <i class="fa fa-question-circle"></i> How locate the link button to the  AutoConnect menu?
-
-Link button to AutoConnect menu can be embedded into Sketch's web page. The root path of the menu is **/_ac** by default and embed the following ```<a></a>``` tag in the generating HTML.
-
-```html
-<a style="background-color:SteelBlue; display:inline-block; padding:7px 13px; text-decoration:none;" href="/_ac">MENU</a>
-```
-
-## <i class="fa fa-question-circle"></i> How much memory does AutoConnect consume?
-
-### Sketch size
-
-It increases about 53K bytes compared to the case without AutoConnect. A sketch size of the most simple example introduced in the Getting started is about 330K bytes. (270K byte without AutoConnect)
-
-### Heap size
-
-It consumes about 2K bytes in the static and about 12K bytes are consumed at the moment when menu executed.
-
-## <i class="fa fa-question-circle"></i> I cannot complete to Wi-Fi login from smartphone.
-
-Because AutoConnect does not send a login success response to the captive portal requests from the smartphone. The login success response varies iOS, Android and Windows. By analyzing the request URL of different login success inquiries for each OS, the correct behavior can be implemented, but not yet. Please resets ESP8266 from the AutoConnect menu.
-
-## <i class="fa fa-question-circle"></i> I cannot see the custom Web page.
-
-If the sketch is correct, a JSON syntax error may have occurred. In this case, activate the [AC_DEBUG](faq.md#3-turn-on-the-debug-log-options) and rerun. If you take the message of JSON syntax error, the [Json Assistant](https://arduinojson.org/v5/assistant/) helps syntax checking. This online tool is provided by the author of ArduinoJson and is most consistent for the AutoConnect. 
-
-## <i class="fa fa-question-circle"></i> Submit element in a custom Web page does not react.
-
-Is there the AutoConnectElements element named **SUBMIT** in the custom Web page? (case sensitive ignored) AutoConnect does not rely on the `input type=submit` element for the form submission and uses [HTML form element submit](https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit) function instead. So, the submit function will fail if there is an element named 'submit' in the form. You can not use **SUBMIT** as the element name of AutoConnectElements in a custom Web page that declares the AutoConnectSubmit element.
-
-## <i class="fa fa-question-circle"></i> Still, not stable with my sketch.
-
-If AutoConnect behavior is not stable with your sketch, you can try the following measures.
-
-### 1. Change WiFi channel
-
-Both ESP8266 and ESP32 can only work on one channel at any given moment. This will cause your station to lose connectivity on the channel hosting the captive portal. If the channel of the AP which you want to connect is different from the SoftAP channel, the operation of the captive portal will not respond with the screen of the AutoConnect connection attempt remains displayed. In such a case, please try to configure the [channel](apiconfig.md#channel) with [AutoConnectConfig](apiconfig.md#autoconnectconfig) to match the access point.
-
-```cpp
-AutoConnect portal;
-AutoConnectConfig config;
-
-config.channel = 3;     // Specifies a channel number that matches the AP
-portal.config(config);  // Apply channel configurration
-portal.begin();         // Start the portal
-```
-
-!!! info "Channel selection guide"
-    Espressif Systems has released a [channel selection guide](https://www.espressif.com/sites/default/files/esp8266_wi-fi_channel_selection_guidelines.pdf).
-
-### 2. Change the arduino core version
-
-I recommend change installed an arduino core version to the upstream when your sketch is not stable with AutoConnect on each board.
-
-#### with ESP8266 arduino core
-
-You can select the [lwIP](http://lwip.wikia.com/wiki/LwIP_Wiki) variant to contribute for the stable behavior. The **lwIP v2 Lower memory** option of Arduino IDE for core version 2.4.2 is based on the lwIP-v2. On the other hand, the core version 2.5.0 upstream is based on the lwIP-2.1.2 stable release.
-
-You can select the option from Arduino IDE as **Tool** menu, if you are using ESP8266 core 2.5.0. It can be select `lwIP v2 Lower Memory` option. (not `lwIP v2 Lower Memory (no features)`) It is expected to improve response performance and stability.
-
-#### with ESP32 arduino core
-
-The [arduino-esp32](https://github.com/espressif/arduino-esp32) is still under development. It is necessary to judge whether the problem cause of the core or AutoConnect. Trace the log with the esp32 core and the AutoConnect debug option enabled for problem diagnosis and please you check the [issue of arduino-esp32](https://github.com/espressif/arduino-esp32/issues). The problem that your sketch possesses may already have been solved.
-
-### 3. Turn on the debug log options
-
-To fully enable for the AutoConnect debug logging options, change the following two files.
-
-<i class="fas fa-angle-right"></i> AutoConnectDefs.h
-
-```cpp
-#define AC_DEBUG
-```
-
-<i class="fas fa-angle-right"></i> PageBuilder.h [^2]
-
-```cpp
-#define PB_DEBUG
-```
-
-[^2]: `PageBuilder.h` exists in the `libraries/PageBuilder/src` directory under your sketch folder.
-
-### 4. Reports the issue to AutoConnect Github repository
-
-If you can not solve AutoConnect problems please report to [Issues](https://github.com/Hieromon/AutoConnect/issues). And please make your question comprehensively, not a statement. Include all relevant information to start the problem diagnostics as follows:[^3]
-
-* [ ] Hardware module
-* [ ] Arduino core version Including the upstream commit ID if necessary
-* [ ] Operating System which you use
-* [ ] Your smartphone OS and version (Especially for Android)
-* [ ] Your AP information (IP, channel) if related
-* [ ] lwIP variant
-* [ ] Problem description
-* [ ] If you have a STACK DUMP decoded result with formatted by the code block tag
-* [ ] The sketch code with formatted by the code block tag (Reduce to the reproducible minimum code for the problem)
-* [ ] Debug messages output (Including arduino core)
-
-I will make efforts to solve as quickly as possible. But I would like you to know that it is not always possible.
-
-Thank you.
-
-[^3]:Without this information, the reproducibility of the problem is reduced, making diagnosis and analysis difficult.




diff --git a/lib/AutoConnect-master/mkdocs/gettingstarted.md b/lib/AutoConnect-master/mkdocs/gettingstarted.md
deleted file mode 100644
index 038085be2678ece2cd78c5b59bbe7256472a3e30..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/gettingstarted.md
+++ /dev/null
@@ -1,72 +0,0 @@
-## Let's do the most simple sketch
-
-Open the Arduino IDE, write the following sketch and upload it. The feature of this sketch is that the SSID and Password are not coded.
-
-```cpp
-#include <ESP8266WiFi.h>          // Replace with WiFi.h for ESP32
-#include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
-#include <AutoConnect.h>
-
-ESP8266WebServer Server;          // Replace with WebServer for ESP32
-AutoConnect      Portal(Server);
-
-void rootPage() {
-  char content[] = "Hello, world";
-  Server.send(200, "text/plain", content);
-}
-
-void setup() {
-  delay(1000);
-  Serial.begin(115200);
-  Serial.println();
-
-  Server.on("/", rootPage);
-  if (Portal.begin()) {
-    Serial.println("WiFi connected: " + WiFi.localIP().toString());
-  }
-}
-
-void loop() {
-	Portal.handleClient();
-}
-```
-
-!!! note ""
-    The above code can be applied to ESP8266. To apply to ESP32, replace ```ESP8266WebServer``` class with ```WebServer``` and include ```WiFi.h``` and ```WebServer.h``` of arduino-esp32 appropriately.
-
-### <i class="fa fa-play-circle"></i> Run at first
-
-After about 30 seconds, if the ESP8266 cannot connect to nearby Wi-Fi spot, you pull out your smartphone and open *Wi-Fi settings* from the *Settings* Apps. You can see the **esp8266ap** [^1] in the list of *"CHOOSE A NETWORK..."*. Then tap the esp8266ap and enter password **12345678**, a something screen pops up automatically as shown below.
-
-[^1]:When applied to ESP32, SSID will appear as **esp32ap**.
-
-<span style="display:inline-block;width:282px;height:501px;border:1px solid lightgrey;"><img data-gifffer="images/login_ani.gif" data-gifffer-width="280" style="width:280px;" /></span><img src="images/arrow_right.svg" style="vertical-align:top;padding-top:120px;width:48px;margin-left:30px;margin-right:30px;" /><img src="images/stat.png" style="border:1px solid lightgrey;width:280px;" /></span>
-
-This is the AutoConnect statistics screen. This screen displays the current status of the established connection, WiFi mode, IP address, free memory size, and etc. Also, the **hamburger icon** is the control menu of AutoConnect seems at the upper right. By tap the hamburger icon, the control menu appears as the below.
-
-### <i class="fa fa-cog"></i> Join to the new access point
-
-Here, tap *"Configure new AP"* to connect the new access point then the SSID configuration screen would be shown. Enter the **SSID** and **Passphrase** and tap **apply** to start connecting the access point.
-
-<img src="images/menu_login.png" style="border:1px solid lightgrey;width:280px;" /><img src="images/arrow_right.svg" style="vertical-align:top;padding-top:120px;width:48px;margin-left:30px;margin-right:30px;" /><img src="images/config_ssid.png" style="border:1px solid lightgrey;width:280px;" />
-
-### <i class="fa fa-rss"></i> Connection establishment
-
-After connection established, the current status screen will appear. It is already connected to WLAN with WiFi mode as WIFI\_AP\_STA and the IP connection status is displayed there including the SSID. Then at this screen, you have two options for the next step.
-
-For one, continues execution of the sketch while keeping this connection. You can access ESP8266 via browser through the established IP address after cancel to "**Log in**" by upper right on the screen.  
-Or, "**RESET**" can be selected. The ESP8266 resets and reboots. After that, immediately before the connection will be restored automatically with WIFI\_STA mode.
-
-<img src="images/established.png" style="border:1px solid lightgrey;width:280px;" /><img src="images/arrow_right.svg" style="vertical-align:top;padding-top:120px;width:48px;margin-left:30px;margin-right:30px;" /><img src="images/reset.png" style="border:1px solid lightgrey;width:280px;" />
-
-### <i class="fa fa-play-circle"></i> Run for usually
-
-The IP address of ESP8266 would be displayed on the serial monitor after connection restored. Please access its address from the browser. The "Hello, world" page will respond. It's the page that was handled by in the sketch with "**on**" function of *ESP8266WebServer*.
-
-<img src="images/serial.png" style="vertical-align:top;" /><img src="images/arrow_right.svg" style="vertical-align:top;padding-top:60px;width:48px;margin-left:45px;margin-right:30px;" /><img src="images/hello_world.png" style="border:1px solid lightgrey;width:280px;" />
-
-<script>
-  window.onload = function() {
-    Gifffer();
-  };
-</script>




diff --git a/lib/AutoConnect-master/mkdocs/howtoembed.md b/lib/AutoConnect-master/mkdocs/howtoembed.md
deleted file mode 100644
index c9f3afc2840099172c2c329500888878052d9c7d..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/howtoembed.md
+++ /dev/null
@@ -1,129 +0,0 @@
-## Embed the AutoConnect to the sketch
-
-Here hold two case examples. Both examples perform the same function. Only how to incorporate the **AutoConnect** into the sketch differs. Also included in the sample folder, HandlePortal.ino also shows how to use the [PageBuilder](https://github.com/Hieromon/PageBuilder) library for HTML assemblies.
-
-## What does this example do?
-
-Uses the web interface to light the LED connected to the D0 (sometimes called *BUILTIN_LED*) port of the **[NodeMCU](https://github.com/nodemcu/nodemcu-devkit-v1.0)** module like the following animation.
-
-Access to the ESP8266 module connected WiFi from the browser then the page contains the current value of the D0 port would be displayed. The page has the buttons to switch the port value. The LED will blink according to the value with clicked by the button. This example is a typical sketch of manipulating ESP8266's GPIO via WLAN.
-
-<img data-gifffer="images/ac2.gif" />
-
-Embed AutoConnect library into this sketch. There are few places to be changed. And you can use AutoConnect's captive portal function to establish a connection freely to other WiFi spots.
-
-## Embed AutoConnect
-
-### <i class="fa fa-code" aria-hidden="true"></i> Pattern A.
-
-Bind to ESP8266WebServer, performs handleClient with handleRequest.
-
-<img src="images/handleClient.svg" />
-
-!!! hint "In what situations should the handleRequest be used."
-    It is something needs to be done immediately after the handle client. It is better to call only AutoConnect::handleClient whenever possible.
-
-### <i class="fa fa-code" aria-hidden="true"></i> Pattern B.
-
-Declare only AutoConnect, performs handleClient.
-
-<img src="images/handlePortal.svg" />
-
-## Used with MQTT as a client application
-
-The effect of AutoConnect is not only for ESP8266/ESP32 as the web server. It has advantages for something WiFi client as well. For example, AutoConnect is also convenient for publishing MQTT messages from various measurement points. Even if the SSID is different for each measurement point, it is not necessary to modify the sketch.
-
-This example tries to publish the WiFi signal strength of ESP8266 with MQTT. It uses the [ThingSpeak](https://thingspeak.com/) for MQTT broker. ESP8266 publishes the RSSI value to the channel created on ThingSpeak as [MQTT client](https://github.com/knolleary/pubsubclient). This example is well suited to demonstrate the usefulness of AutoConnect, as RSSI values are measured at each access point usually. Just adding a few lines of code makes it unnecessary to upload sketches with the different SSIDs rewrite for each access point.
-
-<img src="images/ChannelStatus.png" width="70%"/>
-
-### Advance procedures
-
-- Arduino Client for MQTT - It's the [PubSubClient](https://github.com/knolleary/pubsubclient), install it to Arduino IDE. If you have the latest version already, this step does not need.
-- Create a channel on ThingSpeak.
-- Get the Channel API Keys from ThingSpeak, put its keys to the sketch.
-
-The ThingSpeak is the open IoT platform. It is capable of sending data privately to the cloud and analyzing, visualizing its data. If you do not have an account of ThingSpeak, you need that account to proceed further. ThingSpeak has the free plan for the account which uses within the scope of this example.[^1] You can sign up with the [ThingSpeak sign-up page](https://thingspeak.com/users/sign_up).
-
-!!! warning "Whether you should do sign-up or not."
-    You are entrusted with the final judgment of account creation for ThingSpeak. Create an account at your own risk.
-
-[^1]:As of March 21, 2018.
-
-#### Create a channel on ThingSpeak
-
-Sign in ThingSpeak. Select **Channels** to show the **My Channels**, then click **New Channel**.
-
-At the **New Channel** screen, enter each field as a below. And click **Save Channel** at the bottom of the screen to save.
-
-- Name: ```ESP8266 Signal Strength```
-- Description: ```ESP8266 RSSI publish```
-- Field1: ```RSSI```
-
-<img src="images/CreateChannel.png" width="70%"/>
-
-#### Get Channel ID and API Keys
-
-The channel successfully created, you can see the channel status screen as a below. **Channel ID** is displayed there.[^2]
-
-[^2]:'454951' in the example above, but your channel ID should be different.
-
-<img src="images/ChannelID.png" width="70%"/>
-
-Here, switch the channel status tab to **API Keys**. The API key required to publish the message is the **Write API Key**.
-
-<img src="images/APIKeys.png" width="70%"/>
-
-The last key you need is the **User API Key** and can be confirmed it in the user profile. Pull down **Account** from the top menu, select **My profile**. Then you can see the ThingSpeak settings and the **User API Key** is displayed middle of this screen.
-
-<img src="images/USERKey.png" width="70%"/>
-
-### The sketch, Publishes messages
-
-The complete code of the sketch is [mqttRSSI.ino](https://github.com/Hieromon/AutoConnect/blob/master/examples/mqttRSSI/mqttRSSI.ino) in the [AutoConnect repository](https://github.com/Hieromon/AutoConnect). Replace the following #define in a sketch with **User API Key**, **Write API Key** and **Channel ID**. After Keys updated, compile the sketch and upload it.
-
-```cpp
-#define MQTT_USER_KEY        "****************"  // Replace to User API Key.
-#define CHANNEL_ID           "******"            // Replace to Channel ID.
-#define CHANNEL_API_KEY_WR   "****************"  // Replace to the write API Key.
-```
-
-### Publish messages
-
-After upload and reboot complete, the message publishing will start via the access point now set. The message carries RSSI as the current WiFi signal strength. The signal strength variations in RSSI are displayed on ThingSpeak's Channel status screen.
-
-### How embed to your sketches
-
-For the client sketches, the code required to connect to WiFi is the following four parts only.
-
-1. \#include directive[^3]
-    
-    Include ```AutoConnect.h``` header file behind the include of ```ESP8266WiFi.h```.
-
-    <img src="images/include.png" width="55%"/>
-
-2. Declare AutoConnect
-    
-    The declaration of the [**AutoConnect variable**](api.md#autoconnect) is not accompanied by ESP8266WebServer.
-
-    <img src="images/declare.png" width="55%"/>
-
-3. Invokes "begin()"
-    
-    Call [**AutoConnect::begin**](api.md#begin). If you need to assign a static IP address, executes [AutoConnectConfig](apiconfig.md) before that. 
-
-    <img src="images/begin.png" width="55%"/>
-
-4. Performs "handleClent()" in "loop()"
-    
-    Invokes [**AutoConnect::handleClient()**](api.md#handleclient) at inside ```loop()``` to enable the AutoConnect menu.
-
-    <img src="images/handleClient.png" width="55%"/>
-
-[^3]:```#include <ESP8266WebServer.h>``` does not necessary for uses only client.
-
-<script>
-  window.onload = function() {
-    Gifffer();
-  };
-</script>




diff --git a/lib/AutoConnect-master/mkdocs/images/ACMenu_brown.png b/lib/AutoConnect-master/mkdocs/images/ACMenu_brown.png
deleted file mode 100644
index e6e7ffbaa7b1bdf7aa0e0ac5d1d5b3f4670a8528..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/ACMenu_brown.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/ACMenu_dimgray.png b/lib/AutoConnect-master/mkdocs/images/ACMenu_dimgray.png
deleted file mode 100644
index 53f1f7190ed03a09c8472b6cd8b7d0bb29eeb805..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/ACMenu_dimgray.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/ACMenu_indigo.png b/lib/AutoConnect-master/mkdocs/images/ACMenu_indigo.png
deleted file mode 100644
index 78b2afb48df09684ed5c4a3ce5c25863c6a8841c..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/ACMenu_indigo.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/APIKeys.png b/lib/AutoConnect-master/mkdocs/images/APIKeys.png
deleted file mode 100644
index 0f1832baa39dbebb70fb4d6f141e811cb88ae964..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/APIKeys.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/AutoConnectAux.gif b/lib/AutoConnect-master/mkdocs/images/AutoConnectAux.gif
deleted file mode 100644
index 3538872c5431ecca0cd7a1727cd90a4d6e8890ee..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/AutoConnectAux.gif and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/BeforeAfter.svg b/lib/AutoConnect-master/mkdocs/images/BeforeAfter.svg
deleted file mode 100644
index 95a183833f4662240940d8149deb2e1d3b3e258c..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/images/BeforeAfter.svg
+++ /dev/null
@@ -1,639 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   id="svg8"
-   version="1.1"
-   viewBox="0 0 196.63957 182.99508"
-   height="182.99507mm"
-   width="196.63957mm">
-  <defs
-     id="defs2">
-    <marker
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Lend"
-       style="overflow:visible">
-      <path
-         id="path6600"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
-    </marker>
-    <marker
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Lend"
-       style="overflow:visible">
-      <path
-         id="path6582"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="matrix(-0.8,0,0,-0.8,-10,0)" />
-    </marker>
-    <marker
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Tail"
-       style="overflow:visible">
-      <g
-         id="g6627"
-         transform="scale(-1.2)"
-         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1">
-        <path
-           id="path6615"
-           d="M -3.8048674,-3.9585227 0.54352094,0"
-           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1" />
-        <path
-           id="path6617"
-           d="M -1.2866832,-3.9585227 3.0617053,0"
-           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1" />
-        <path
-           id="path6619"
-           d="M 1.3053582,-3.9585227 5.6537466,0"
-           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1" />
-        <path
-           id="path6621"
-           d="M -3.8048674,4.1775838 0.54352094,0.21974226"
-           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1" />
-        <path
-           id="path6623"
-           d="M -1.2866832,4.1775838 3.0617053,0.21974226"
-           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1" />
-        <path
-           id="path6625"
-           d="M 1.3053582,4.1775838 5.6537466,0.21974226"
-           style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-opacity:1" />
-      </g>
-    </marker>
-    <linearGradient
-       id="linearGradient6499"
-       osb:paint="solid">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop6497" />
-    </linearGradient>
-    <marker
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Lend-9"
-       style="overflow:visible">
-      <path
-         id="path6600-6"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
-    </marker>
-  </defs>
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     transform="translate(39.78823,-45.773269)"
-     id="layer1">
-    <g
-       transform="translate(147.66531,3.5499426)"
-       id="layer1-8">
-      <path
-         id="path2315-6"
-         style="fill:none;stroke:#000000;stroke-width:0.026;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.49803922"
-         d="M -80.290968,53.521296 V 220.21829 m 5.29167,-166.696994 V 220.21829 m 5.29167,-166.696994 V 220.21829 m 5.29166,-166.696994 V 220.21829 m 5.29167,-166.696994 V 220.21829 m 5.29166,-166.696994 V 220.21829 m 5.29167,-166.696994 V 220.21829 m 5.29167,-166.696994 V 220.21829 m 5.29166,-166.696994 V 220.21829 m 5.29167,-166.696994 V 220.21829 M -27.374294,53.521296 V 220.21829 m 5.29166,-166.696994 V 220.21829 m 5.29167,-166.696994 V 220.21829 m 5.29167,-166.696994 V 220.21829 M -6.2076337,53.521296 V 220.21829 M -0.91596368,53.521296 V 220.21829 M -80.290968,53.521296 H 4.1860363 M -80.290968,58.812963 H 4.1860363 M -80.290968,64.104628 H 4.1860363 M -80.290968,69.396301 H 4.1860363 m -84.4770043,5.29166 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29166 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 M -80.290968,101.1463 H 4.1860363 m -84.4770043,5.29166 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 M -80.290968,117.0213 H 4.1860363 m -84.4770043,5.29165 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29166 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29166 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29166 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29166 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29166 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29167 H 4.1860363 m -84.4770043,5.29166 H 4.1860363" />
-      <path
-         id="path2315"
-         style="fill:none;stroke:#000000;stroke-width:0.026;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.49803922"
-         d="M -182.44054,53.5214 V 220.21839 M -177.14887,53.5214 V 220.21839 M -171.8572,53.5214 v 166.69699 m 5.29166,-166.69699 v 166.69699 m 5.29167,-166.69699 v 166.69699 m 5.29166,-166.69699 v 166.69699 m 5.29167,-166.69699 v 166.69699 m 5.29167,-166.69699 v 166.69699 m 5.29166,-166.69699 v 166.69699 m 5.29167,-166.69699 v 166.69699 m 5.29167,-166.69699 v 166.69699 m 5.29166,-166.69699 v 166.69699 m 5.29167,-166.69699 v 166.69699 m 5.29167,-166.69699 v 166.69699 m 5.29166,-166.69699 v 166.69699 m 5.29167,-166.69699 v 166.69699 m -79.375,-166.69699 h 84.476996 m -84.476996,5.291666 h 84.476996 m -84.476996,5.291666 h 84.476996 m -84.476996,5.291667 h 84.476996 m -84.476996,5.291666 h 84.476996 m -84.476996,5.291666 h 84.476996 m -84.476996,5.291667 h 84.476996 m -84.476996,5.291666 h 84.476996 m -84.476996,5.291667 h 84.476996 m -84.476996,5.291669 h 84.476996 m -84.476996,5.29166 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29166 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29166 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29166 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29166 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29166 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29166 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29166 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29167 h 84.476996 m -84.476996,5.29166 h 84.476996" />
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:1.25;font-family:monospace;-inkscape-font-specification:'monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="-179.95392"
-         y="58.437435"
-         id="text817"><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="58.437435"
-           x="-179.95392"
-           id="tspan2030"><tspan
-   id="tspan2338"
-   style="fill:#669900">#include</tspan> &lt;<tspan
-   id="tspan2332"
-   style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'">ESP8266WiFi</tspan>.h&gt;</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="63.729103"
-           x="-179.95392"
-           id="tspan2032"><tspan
-   id="tspan2336"
-   style="fill:#669900">#include</tspan> &lt;<tspan
-   id="tspan2334"
-   style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'">ESP8266WebServer</tspan>.h&gt;</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="69.020767"
-           x="-179.95392"
-           id="tspan2034" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="74.312431"
-           x="-179.95392"
-           id="tspan2036" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="79.604103"
-           x="-179.95392"
-           id="tspan2038"><tspan
-   id="tspan2340"
-   style="fill:#ff6600">ESP8266WebServer</tspan> Server;</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="84.895767"
-           x="-179.95392"
-           id="tspan2040" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="90.187431"
-           x="-179.95392"
-           id="tspan2042" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="95.479103"
-           x="-179.95392"
-           id="tspan2044"><tspan
-   id="tspan2344"
-   style="fill:#3366cc">void</tspan> rootPage() {</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="100.77077"
-           x="-179.95392"
-           id="tspan2046">  <tspan
-   id="tspan2350"
-   style="fill:#3366cc">char</tspan> content[] = <tspan
-   id="tspan2346"
-   style="fill:#003399">&quot;Hello, world&quot;</tspan>;</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="106.06243"
-           x="-179.95392"
-           id="tspan2048">  Server.<tspan
-   id="tspan2352"
-   style="fill:#ff6600">send</tspan>(200, <tspan
-   id="tspan2348"
-   style="fill:#003399">&quot;text/plain&quot;</tspan>, content);</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="111.3541"
-           x="-179.95392"
-           id="tspan2050">}</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="116.64577"
-           x="-179.95392"
-           id="tspan2052" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="121.93743"
-           x="-179.95392"
-           id="tspan2054"><tspan
-   id="tspan2354"
-   style="fill:#3366cc">void</tspan> <tspan
-   id="tspan2356"
-   style="fill:#808080">setup</tspan>() {</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="127.2291"
-           x="-179.95392"
-           id="tspan2056">  <tspan
-   id="tspan2358"
-   style="fill:#ff6600">delay</tspan>(1000);</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="132.52077"
-           x="-179.95392"
-           id="tspan2058">  <tspan
-   id="tspan2360"
-   style="fill:#ff6600">Serial</tspan>.<tspan
-   id="tspan2362"
-   style="fill:#ff6600">begin</tspan>(115200);</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="137.81242"
-           x="-179.95392"
-           id="tspan2060">  <tspan
-   id="tspan2366"
-   style="fill:#ff6600">Serial</tspan>.<tspan
-   id="tspan2364"
-   style="fill:#ff6600">println</tspan>();</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="143.1041"
-           x="-179.95392"
-           id="tspan2062" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="148.39577"
-           x="-179.95392"
-           id="tspan2064">  <tspan
-   id="tspan2368"
-   style="fill:#ff6600">WiFi</tspan>.<tspan
-   id="tspan2370"
-   style="fill:#ff6600">begin</tspan>(<tspan
-   id="tspan2372"
-   style="fill:#003399">&quot;ssid&quot;</tspan>, <tspan
-   id="tspan2374"
-   style="fill:#003399">&quot;pass&quot;</tspan>);</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="153.68742"
-           x="-179.95392"
-           id="tspan2066">  <tspan
-   id="tspan2378"
-   style="fill:#808080">while</tspan> (<tspan
-   id="tspan2376"
-   style="fill:#ff6600">WiFi</tspan>.status() != WL_CONNECTED) {</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="158.9791"
-           x="-179.95392"
-           id="tspan2068">    <tspan
-   id="tspan2380"
-   style="fill:#ff6600">delay</tspan>(100);</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="164.27077"
-           x="-179.95392"
-           id="tspan2070">  }</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="169.56242"
-           x="-179.95392"
-           id="tspan2072" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="174.8541"
-           x="-179.95392"
-           id="tspan2074">  Server.<tspan
-   id="tspan2382"
-   style="fill:#ff6600">on</tspan>(<tspan
-   id="tspan2384"
-   style="fill:#003399">&quot;/&quot;</tspan>, rootPage);</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="180.14577"
-           x="-179.95392"
-           id="tspan2076">  Server.<tspan
-   id="tspan2386"
-   style="fill:#ff6600">begin</tspan>();</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="185.43742"
-           x="-179.95392"
-           id="tspan2078">  <tspan
-   id="tspan2388"
-   style="fill:#ff6600">Serial</tspan>.<tspan
-   id="tspan2390"
-   style="fill:#ff6600">println</tspan>(<tspan
-   id="tspan2392"
-   style="fill:#003399">&quot;Web server started:&quot;</tspan> +</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="190.7291"
-           x="-179.95392"
-           id="tspan2080">              <tspan
-   id="tspan2394"
-   style="fill:#ff6600">WiFi</tspan>.localIP().toString());</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="196.02077"
-           x="-179.95392"
-           id="tspan2082">}</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="201.31242"
-           x="-179.95392"
-           id="tspan2084" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="206.6041"
-           x="-179.95392"
-           id="tspan2090"><tspan
-   id="tspan2434"
-   style="fill:#3366cc">void</tspan> <tspan
-   id="tspan2436"
-   style="fill:#808080">loop</tspan>() {</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="211.89577"
-           x="-179.95392"
-           id="tspan2092">  Server.<tspan
-   id="tspan2438"
-   style="fill:#ff6600">handleClient</tspan>();</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="217.18742"
-           x="-179.95392"
-           id="tspan2094">}</tspan></text>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.23333311px;line-height:1.25;font-family:monospace;-inkscape-font-specification:'monospace, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="-77.797623"
-         y="58.444054"
-         id="text817-4"><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="58.444054"
-           x="-77.797623"
-           id="tspan1964"><tspan
-   id="tspan2440"
-   style="fill:#669900">#include</tspan> &lt;<tspan
-   id="tspan2460"
-   style="-inkscape-font-specification:'monospace Italic';font-family:monospace;font-weight:normal;font-style:italic;font-stretch:normal;font-variant:normal">ESP8266WiFi</tspan>.h&gt;</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="63.735722"
-           x="-77.797623"
-           id="tspan1966"><tspan
-   id="tspan2442"
-   style="fill:#669900">#include</tspan> &lt;<tspan
-   id="tspan2464"
-   style="-inkscape-font-specification:'monospace Italic';font-family:monospace;font-weight:normal;font-style:italic;font-stretch:normal;font-variant:normal">ESP8266WebServer</tspan>.h&gt;</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="69.02739"
-           x="-77.797623"
-           id="tspan1968"><tspan
-   id="tspan2444"
-   style="fill:#669900">#include</tspan> &lt;<tspan
-   id="tspan2466"
-   style="-inkscape-font-specification:'monospace Italic';font-family:monospace;font-weight:normal;font-style:italic;font-stretch:normal;font-variant:normal">AutoConnect</tspan>.h&gt;</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="74.319054"
-           x="-77.797623"
-           id="tspan1970" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="79.610718"
-           x="-77.797623"
-           id="tspan1972"><tspan
-   id="tspan2446"
-   style="fill:#ff6600">ESP8266WebServer</tspan> Server;</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="84.902382"
-           x="-77.797623"
-           id="tspan1974"><tspan
-   id="tspan2448"
-   style="fill:#ff6600">AutoConnect</tspan>      Portal(Server);</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="90.194054"
-           x="-77.797623"
-           id="tspan1976" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="95.485718"
-           x="-77.797623"
-           id="tspan1978"><tspan
-   id="tspan2450"
-   style="fill:#3366cc">void</tspan> rootPage() {</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="100.77738"
-           x="-77.797623"
-           id="tspan1980">  <tspan
-   id="tspan2452"
-   style="fill:#3366cc">char</tspan> content[] = <tspan
-   id="tspan2456"
-   style="fill:#003399">&quot;Hello, world&quot;</tspan>;</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="106.06905"
-           x="-77.797623"
-           id="tspan1982">  Server.<tspan
-   id="tspan2454"
-   style="fill:#ff6600">send</tspan>(200, <tspan
-   id="tspan2458"
-   style="fill:#003399">&quot;text/plain&quot;</tspan>, content);</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="111.36072"
-           x="-77.797623"
-           id="tspan1984">}</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="116.65238"
-           x="-77.797623"
-           id="tspan1986" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="121.94405"
-           x="-77.797623"
-           id="tspan1988"><tspan
-   id="tspan2414"
-   style="fill:#3366cc">void</tspan> <tspan
-   id="tspan2416"
-   style="fill:#808080">setup</tspan>() {</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="127.23572"
-           x="-77.797623"
-           id="tspan1990">  <tspan
-   id="tspan2418"
-   style="fill:#ff6600">delay</tspan>(1000);</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="132.52739"
-           x="-77.797623"
-           id="tspan1992">  <tspan
-   id="tspan2420"
-   style="fill:#ff6600">Serial</tspan>.<tspan
-   id="tspan2424"
-   style="fill:#ff6600">begin</tspan>(115200);</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="137.81905"
-           x="-77.797623"
-           id="tspan1994">  <tspan
-   id="tspan2422"
-   style="fill:#ff6600">Serial</tspan>.<tspan
-   id="tspan2426"
-   style="fill:#ff6600">println</tspan>();</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="143.11072"
-           x="-77.797623"
-           id="tspan1996" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="148.40239"
-           x="-77.797623"
-           id="tspan1998" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="153.69405"
-           x="-77.797623"
-           id="tspan2000" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="158.98572"
-           x="-77.797623"
-           id="tspan2002" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="164.27737"
-           x="-77.797623"
-           id="tspan2004" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="169.56905"
-           x="-77.797623"
-           id="tspan2006" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="174.86072"
-           x="-77.797623"
-           id="tspan2008">  Server.<tspan
-   id="tspan2406"
-   style="fill:#ff6600">on</tspan>(<tspan
-   id="tspan2408"
-   style="fill:#003399">&quot;/&quot;</tspan>, rootPage);</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="180.15237"
-           x="-77.797623"
-           id="tspan2010">  Portal.<tspan
-   id="tspan2410"
-   style="fill:#ff6600">begin</tspan>();</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="185.44405"
-           x="-77.797623"
-           id="tspan2014">  <tspan
-   id="tspan2400"
-   style="fill:#ff6600">Serial</tspan>.<tspan
-   id="tspan2398"
-   style="fill:#ff6600">println</tspan>(<tspan
-   id="tspan2396"
-   style="fill:#003399">&quot;Web server started:&quot;</tspan> + </tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="190.73572"
-           x="-77.797623"
-           id="tspan2018">               <tspan
-   id="tspan2412"
-   style="fill:#ff6600">WiFi</tspan>.localIP().toString());</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="196.02737"
-           x="-77.797623"
-           id="tspan2020">}</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="201.31905"
-           x="-77.797623"
-           id="tspan2022" /><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="206.61072"
-           x="-77.797623"
-           id="tspan2024"><tspan
-   id="tspan2428"
-   style="fill:#3366cc">void</tspan> <tspan
-   id="tspan2430"
-   style="fill:#808080">loop</tspan>() {</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="211.90237"
-           x="-77.797623"
-           id="tspan2026">  Portal.<tspan
-   id="tspan2432"
-   style="fill:#ff6600">handleClient</tspan>();</tspan><tspan
-           style="font-size:3.17499995px;line-height:0"
-           y="217.19405"
-           x="-77.797623"
-           id="tspan2028">}</tspan></text>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:6.3499999px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="-145.07974"
-         y="50.99984"
-         id="text8720"><tspan
-           id="tspan8718"
-           x="-145.07974"
-           y="50.99984"
-           style="font-size:4.93888903px;stroke-width:0.26458332">Before</tspan></text>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.3499999px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#003399;fill-opacity:0.5884476;stroke:none;stroke-width:0.26458332;"
-         x="-104.55894"
-         y="69.372025"
-         id="text4947"><tspan
-           id="tspan4945"
-           x="-104.55894"
-           y="69.372025"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#003399;fill-opacity:0.5884476;stroke-width:0.26458332;">Insert</tspan></text>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.3499999px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#003399;fill-opacity:0.5884476;stroke:none;stroke-width:0.26458332;"
-         x="-104.55894"
-         y="85.179016"
-         id="text4947-7"><tspan
-           id="tspan4945-8"
-           x="-104.55894"
-           y="85.179016"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#003399;fill-opacity:0.5884476;stroke-width:0.26458332;">Insert</tspan></text>
-      <path
-         style="display:inline;opacity:1;fill:#003399;fill-opacity:0.5884476;stroke:#000000;stroke-width:0.03373705;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;paint-order:markers stroke fill"
-         id="path8601"
-         d="m -80.856438,83.447853 -5.300459,3.260004 V 80.18785 Z" />
-      <path
-         style="display:inline;opacity:1;fill:#003399;fill-opacity:0.5884476;stroke:#000000;stroke-width:0.03373705;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;paint-order:markers stroke fill"
-         id="path8601-8"
-         d="m -80.856438,67.640873 -5.300459,3.260004 V 64.38087 Z" />
-      <path
-         style="display:inline;fill:none;stroke:#003399;stroke-width:0.88;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.76,0.88;stroke-dashoffset:0;stroke-opacity:0.58823529"
-         d="m -77.507201,70.059294 h 45.903536"
-         id="path8701" />
-      <path
-         style="display:inline;fill:none;stroke:#003399;stroke-width:0.88;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.76,0.88;stroke-dashoffset:0;stroke-opacity:0.58823529"
-         d="m -77.866451,85.834446 h 60.63188"
-         id="path8701-6" />
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.3499999px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#003399;fill-opacity:0.58823529;stroke:none;stroke-width:0.26458332;"
-         x="-90.962158"
-         y="156.75723"
-         id="text4947-7-7"><tspan
-           id="tspan4945-8-3"
-           x="-90.962158"
-           y="156.75723"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#003399;fill-opacity:0.58823529;stroke-width:0.26458332;">Remove</tspan></text>
-      <path
-         style="display:inline;opacity:1;fill:#003399;fill-opacity:0.58823529;stroke:none;stroke-width:0.034;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;paint-order:markers stroke fill"
-         id="path8601-2"
-         d="m -92.128228,154.97999 -5.300459,3.26001 v -6.52001 z" />
-      <path
-         style="display:inline;fill:none;stroke:#003399;stroke-width:0.91645706;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.83291411, 1.83291411;stroke-dashoffset:0;stroke-opacity:0.58823529"
-         d="m -178.99241,143.23968 v 24.27983 h 79.594422 V 143.4604 Z"
-         id="path8699" />
-      <path
-         style="display:inline;opacity:1;fill:none;stroke:#003399;stroke-width:0.88;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.58823529"
-         d="M -86.136974,179.15988 H -141.12544"
-         id="path8682" />
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.3499999px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#003399;fill-opacity:0.58823529;stroke:none;stroke-width:0.26458332;"
-         x="-108.76884"
-         y="177.24081"
-         id="text4947-7-7-1"><tspan
-           id="tspan4945-8-3-2"
-           x="-108.76884"
-           y="177.24081"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#003399;fill-opacity:0.58823529;stroke-width:0.26458332;">Replace</tspan></text>
-      <path
-         style="display:inline;opacity:1;fill:#003399;fill-opacity:0.58823529;stroke:none;stroke-width:0.03373705;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;paint-order:markers stroke fill"
-         id="path8601-2-1-2"
-         d="m -80.856438,179.17113 -5.300459,3.26001 v -6.52001 z" />
-      <path
-         style="display:inline;fill:none;stroke:#003399;stroke-width:0.88;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.76,0.88;stroke-dashoffset:0;stroke-opacity:0.58823529"
-         d="m -175.9977,181.00311 h 11.62328"
-         id="path8701-6-3" />
-      <path
-         style="display:inline;fill:none;stroke:#003399;stroke-width:0.88;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.76,0.88;stroke-dashoffset:0;stroke-opacity:0.58823529"
-         d="M -74.015893,181.05546 H -62.07686"
-         id="path8701-6-3-0" />
-      <path
-         style="display:inline;fill:none;stroke:#003399;stroke-width:0.88;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.58823529"
-         d="M -86.152364,210.80953 H -128.31409"
-         id="path8682-0" />
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.3499999px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;display:inline;fill:#003399;fill-opacity:0.58823529;stroke:none;stroke-width:0.26458332;"
-         x="-108.76881"
-         y="208.89076"
-         id="text4947-7-7-1-1"><tspan
-           id="tspan4945-8-3-2-6"
-           x="-108.76881"
-           y="208.89076"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';fill:#003399;fill-opacity:0.58823529;stroke-width:0.26458332;">Replace</tspan></text>
-      <path
-         style="display:inline;opacity:1;fill:#003399;fill-opacity:0.58823529;stroke:none;stroke-width:0.03373705;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:0;paint-order:markers stroke fill"
-         id="path8601-2-1-2-6"
-         d="m -80.856438,210.82078 -5.300459,3.26001 v -6.52001 z" />
-      <path
-         style="display:inline;fill:none;stroke:#003399;stroke-width:0.88;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.76, 0.88000000000000000;stroke-dashoffset:0;stroke-opacity:0.58823529"
-         d="m -175.95631,212.87316 h 13.88168"
-         id="path8701-6-3-3" />
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:6.3499999px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="-43.61565"
-         y="51.013618"
-         id="text8720-4"><tspan
-           id="tspan8718-5"
-           x="-43.61565"
-           y="51.013618"
-           style="font-size:4.93888903px;stroke-width:0.26458332">After</tspan></text>
-      <path
-         style="display:inline;opacity:1;fill:none;stroke:#003399;stroke-width:0.88;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.76, 0.88000000000000000;stroke-dashoffset:0;stroke-opacity:0.58823529"
-         d="m -73.445331,212.91466 h 12.468034"
-         id="path8701-6-3-0-1" />
-    </g>
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/mkdocs/images/ChannelID.png b/lib/AutoConnect-master/mkdocs/images/ChannelID.png
deleted file mode 100644
index f975ce3bc5d9962b48c3394bc8afc27ac2a73a95..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/ChannelID.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/ChannelStatus.png b/lib/AutoConnect-master/mkdocs/images/ChannelStatus.png
deleted file mode 100644
index 3172fe0af5e293adc4935ac8a614cd93a8ef1fdc..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/ChannelStatus.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/CreateChannel.png b/lib/AutoConnect-master/mkdocs/images/CreateChannel.png
deleted file mode 100644
index 1c34982028dfe90ffecb37b0850e3689b0f01258..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/CreateChannel.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/PageBuilder.png b/lib/AutoConnect-master/mkdocs/images/PageBuilder.png
deleted file mode 100644
index 0ac01ef4fcfc14940880247688db2132eccf0850..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/PageBuilder.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/USERKey.png b/lib/AutoConnect-master/mkdocs/images/USERKey.png
deleted file mode 100644
index 132ce2453ef7d23489ff20ad9829b0fba14cf56f..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/USERKey.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/ac.png b/lib/AutoConnect-master/mkdocs/images/ac.png
deleted file mode 100644
index 72f7bb5872eca7d2b2c7aa1cdf6173c8ef7a76d8..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/ac.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/ac2.gif b/lib/AutoConnect-master/mkdocs/images/ac2.gif
deleted file mode 100644
index a61ae8b98d20dd7a5965451b5fc9cf667913740f..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/ac2.gif and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/ac_auxjoin_multi.svg b/lib/AutoConnect-master/mkdocs/images/ac_auxjoin_multi.svg
deleted file mode 100644
index e444ab7b6e028db35fb0827bc862fd455ac1fd8c..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/images/ac_auxjoin_multi.svg
+++ /dev/null
@@ -1,233 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="162.49986mm"
-   height="50.781212mm"
-   viewBox="0 0 162.49986 50.781212"
-   version="1.1"
-   id="svg6816"
-   inkscape:version="0.92.1 r15371"
-   sodipodi:docname="ac_auxjoin_multi.svg">
-  <defs
-     id="defs6810" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4"
-     inkscape:cx="292.19207"
-     inkscape:cy="131.80979"
-     inkscape:document-units="mm"
-     inkscape:current-layer="layer5"
-     showgrid="false"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     inkscape:window-width="1495"
-     inkscape:window-height="756"
-     inkscape:window-x="2593"
-     inkscape:window-y="280"
-     inkscape:window-maximized="0" />
-  <metadata
-     id="metadata6813">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="grid"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-11.759858,-8.8834486)"
-     sodipodi:insensitive="true">
-    <path
-       d="M 11.75987,8.8834486 V 59.664658 M 14.405703,8.8834486 V 59.664658 M 17.051536,8.8834486 V 59.664658 M 19.697369,8.8834486 V 59.664658 M 22.343203,8.8834486 V 59.664658 M 24.989036,8.8834486 V 59.664658 M 27.634869,8.8834486 V 59.664658 M 30.280702,8.8834486 V 59.664658 M 32.926536,8.8834486 V 59.664658 M 35.572369,8.8834486 V 59.664658 M 38.218202,8.8834486 V 59.664658 M 40.864035,8.8834486 V 59.664658 M 43.509868,8.8834486 V 59.664658 M 46.155702,8.8834486 V 59.664658 M 48.801535,8.8834486 V 59.664658 M 51.447368,8.8834486 V 59.664658 M 54.093201,8.8834486 V 59.664658 M 56.739034,8.8834486 V 59.664658 M 59.384868,8.8834486 V 59.664658 M 62.030701,8.8834486 V 59.664658 M 64.676534,8.8834486 V 59.664658 M 67.322367,8.8834486 V 59.664658 M 69.9682,8.8834486 V 59.664658 M 72.614034,8.8834486 V 59.664658 M 75.259867,8.8834486 V 59.664658 M 77.9057,8.8834486 V 59.664658 M 80.551533,8.8834486 V 59.664658 M 83.197366,8.8834486 V 59.664658 M 85.8432,8.8834486 V 59.664658 M 88.489033,8.8834486 V 59.664658 M 91.134866,8.8834486 V 59.664658 M 93.780699,8.8834486 V 59.664658 M 96.426532,8.8834486 V 59.664658 M 99.072366,8.8834486 V 59.664658 M 101.7182,8.8834486 V 59.664658 M 104.36403,8.8834486 V 59.664658 M 107.00986,8.8834486 V 59.664658 M 109.6557,8.8834486 V 59.664658 M 112.30153,8.8834486 V 59.664658 M 114.94736,8.8834486 V 59.664658 M 117.5932,8.8834486 V 59.664658 M 120.23903,8.8834486 V 59.664658 M 122.88486,8.8834486 V 59.664658 M 125.5307,8.8834486 V 59.664658 M 128.17653,8.8834486 V 59.664658 M 130.82236,8.8834486 V 59.664658 M 133.4682,8.8834486 V 59.664658 M 136.11403,8.8834486 V 59.664658 M 138.75986,8.8834486 V 59.664658 M 141.4057,8.8834486 V 59.664658 M 144.05153,8.8834486 V 59.664658 M 146.69736,8.8834486 V 59.664658 M 149.3432,8.8834486 V 59.664658 M 151.98903,8.8834486 V 59.664658 M 154.63486,8.8834486 V 59.664658 M 157.2807,8.8834486 V 59.664658 M 159.92653,8.8834486 V 59.664658 M 162.57236,8.8834486 V 59.664658 M 165.2182,8.8834486 V 59.664658 M 167.86403,8.8834486 V 59.664658 M 170.50986,8.8834486 V 59.664658 M 173.1557,8.8834486 V 59.664658 M 11.75987,8.8834486 H 174.25972 M 11.75987,11.529282 H 174.25972 M 11.75987,14.175115 H 174.25972 M 11.75987,16.820948 H 174.25972 M 11.75987,19.466782 H 174.25972 M 11.75987,22.112615 H 174.25972 M 11.75987,24.758448 H 174.25972 M 11.75987,27.404281 H 174.25972 M 11.75987,30.050115 H 174.25972 M 11.75987,32.695948 H 174.25972 M 11.75987,35.341781 H 174.25972 M 11.75987,37.987614 H 174.25972 M 11.75987,40.633447 H 174.25972 M 11.75987,43.279281 H 174.25972 M 11.75987,45.925114 H 174.25972 M 11.75987,48.570947 H 174.25972 M 11.75987,51.21678 H 174.25972 M 11.75987,53.862613 H 174.25972 M 11.75987,56.508447 H 174.25972 M 11.75987,59.15428 h 162.49985"
-       style="fill:none;stroke:#000000;stroke-width:0.0264583px"
-       id="path7619"
-       inkscape:connector-curvature="0" />
-  </g>
-  <g
-     inkscape:groupmode="layer"
-     id="layer4"
-     inkscape:label="code"
-     transform="translate(-11.759858,-8.8834486)"
-     sodipodi:insensitive="true"
-     style="display:inline">
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458338"
-       x="16.588673"
-       y="17.167612"
-       id="text4512"><tspan
-         sodipodi:role="line"
-         id="tspan7470"
-         style="line-height:8.81856251px"
-         x="16.588673"
-         y="17.167612"><tspan
-   style="fill:#ff6600"
-   id="tspan7488">AutoConnect</tspan>    portal;</tspan><tspan
-         sodipodi:role="line"
-         id="tspan7472"
-         style="line-height:8.81856251px"
-         x="16.588673"
-         y="25.986176"><tspan
-   style="fill:#ff6600"
-   id="tspan7490">AutoConnectAux</tspan> aux1<tspan
-   style="fill:#ff0000"
-   id="tspan7637">(</tspan><tspan
-   style="fill:#216778"
-   id="tspan7498">&quot;/mqtt_setting&quot;</tspan>, <tspan
-   style="fill:#216778"
-   id="tspan7500">&quot;MQTT Setting&quot;</tspan><tspan
-   style="fill:#ff0000"
-   id="tspan7643">)</tspan>;</tspan><tspan
-         sodipodi:role="line"
-         id="tspan7474"
-         style="line-height:8.81856251px"
-         x="16.588673"
-         y="34.804737"><tspan
-   style="fill:#ff6600"
-   id="tspan7492">AutoConnectAux</tspan> aux2<tspan
-   style="fill:#ff0000"
-   id="tspan7639">(</tspan><tspan
-   style="fill:#216778"
-   id="tspan7506">&quot;/mqtt_save&quot;, &quot;MQTT Setting&quot;</tspan>, <tspan
-   style="fill:#37abc8"
-   id="tspan7514">false</tspan><tspan
-   style="fill:#ff0000"
-   id="tspan7645">)</tspan>;</tspan><tspan
-         sodipodi:role="line"
-         id="tspan7476"
-         style="line-height:8.81856251px"
-         x="16.588673"
-         y="43.623299"><tspan
-   style="fill:#ff6600"
-   id="tspan7494">AutoConnectAux</tspan> aux3<tspan
-   style="fill:#ff0000"
-   id="tspan7647">(</tspan><tspan
-   style="fill:#216778"
-   id="tspan7512">&quot;/mqtt_start&quot;, &quot;MQTT Start&quot;</tspan><tspan
-   style="fill:#ff0000"
-   id="tspan7641">)</tspan>;</tspan><tspan
-         sodipodi:role="line"
-         id="tspan7478"
-         style="line-height:8.81856251px"
-         x="16.588673"
-         y="52.441864">portal.<tspan
-   style="fill:#ff6600"
-   id="tspan7496">join</tspan><tspan
-   style="fill:#ff0000"
-   id="tspan7625">(</tspan><tspan
-   id="tspan7633"
-   style="fill:#0000ff">{</tspan> aux1, aux2, aux3 <tspan
-   style="fill:#ff0000"
-   id="tspan7623"><tspan
-   style="fill:#0000ff"
-   id="tspan7635">}</tspan>)</tspan>;</tspan></text>
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot7480"
-       style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
-       transform="scale(0.26458333)"><flowRegion
-         id="flowRegion7482"><rect
-           id="rect7484"
-           width="222.23357"
-           height="51.51778"
-           x="221.2234"
-           y="103.27576" /></flowRegion><flowPara
-         id="flowPara7486"></flowPara></flowRoot>  </g>
-  <g
-     inkscape:groupmode="layer"
-     id="layer5"
-     inkscape:label="view"
-     transform="translate(-11.759858,-8.8834486)"
-     sodipodi:insensitive="true">
-    <rect
-       style="opacity:0.38699999;fill:#37abc8;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:0.52916666, 0.52916666;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect7539"
-       width="16.395168"
-       height="8.6281242"
-       x="150.52138"
-       y="28.977301"
-       ry="2.1733632" />
-    <path
-       style="fill:none;stroke:#ff6600;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 35.246169,53.951772 H 46.738758"
-       id="path7543"
-       inkscape:connector-curvature="0" />
-    <rect
-       style="opacity:0.38699999;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:0.52916667, 0.52916667;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect7539-7"
-       width="14.410792"
-       height="7.2107134"
-       x="85.975174"
-       y="47.568375"
-       ry="1.8163275" />
-    <rect
-       style="opacity:0.38699999;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:0.52916667, 0.52916667;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect7539-7-6"
-       width="14.410792"
-       height="7.2107134"
-       x="69.485977"
-       y="47.332142"
-       ry="1.8163275" />
-    <rect
-       style="opacity:0.38699999;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:0.52916667, 0.52916667;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect7539-7-4"
-       width="14.410792"
-       height="7.2107134"
-       x="52.958519"
-       y="47.332138"
-       ry="1.8163275" />
-    <rect
-       style="opacity:0.38699999;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:0.52916668, 0.52916668;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect7539-7-4-4"
-       width="13.229617"
-       height="7.2107134"
-       x="55.538654"
-       y="21.157295"
-       ry="1.8163275" />
-    <rect
-       style="opacity:0.38699999;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:0.52916667, 0.52916667;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect7539-7-4-4-5"
-       width="13.324111"
-       height="7.2107134"
-       x="55.538654"
-       y="29.955509"
-       ry="1.8163275" />
-    <rect
-       style="opacity:0.38699999;fill:#ff6600;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:0.52916667, 0.52916667;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect7539-7-4-4-9"
-       width="13.276864"
-       height="7.2107134"
-       x="55.538658"
-       y="38.753723"
-       ry="1.8163275" />
-    <rect
-       style="opacity:0.38699999;fill:none;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect7617"
-       width="162.49986"
-       height="50.781212"
-       x="11.759858"
-       y="8.8834486"
-       ry="0" />
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/mkdocs/images/ac_auxmenu.png b/lib/AutoConnect-master/mkdocs/images/ac_auxmenu.png
deleted file mode 100644
index e1e7edc5deebad570198f9352cf7a118fe8d7a90..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/ac_auxmenu.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/ac_auxmenu_multi.png b/lib/AutoConnect-master/mkdocs/images/ac_auxmenu_multi.png
deleted file mode 100644
index a845549252c611cc74c00d650ed6e595124cc3f7..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/ac_auxmenu_multi.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/ac_declaration.svg b/lib/AutoConnect-master/mkdocs/images/ac_declaration.svg
deleted file mode 100644
index 1bf2f2e3adfe8faa48a14c84b10f38d819cab6a6..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/images/ac_declaration.svg
+++ /dev/null
@@ -1,384 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="281.83228mm"
-   height="92.538231mm"
-   viewBox="0 0 281.83228 92.538231"
-   version="1.1"
-   id="svg8"
-   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
-   sodipodi:docname="ac_declaration.svg">
-  <defs
-     id="defs2">
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker1034"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1032"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:isstock="true"
-       style="overflow:visible"
-       id="TriangleOutM"
-       refX="0"
-       refY="0"
-       orient="auto"
-       inkscape:stockid="TriangleOutM">
-      <path
-         inkscape:connector-curvature="0"
-         transform="scale(0.4)"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         id="path4735" />
-    </marker>
-    <marker
-       inkscape:isstock="true"
-       style="overflow:visible"
-       id="Arrow1Send"
-       refX="0"
-       refY="0"
-       orient="auto"
-       inkscape:stockid="Arrow1Send">
-      <path
-         inkscape:connector-curvature="0"
-         transform="matrix(-0.2,0,0,-0.2,-1.2,0)"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         id="path4605" />
-    </marker>
-    <marker
-       inkscape:isstock="true"
-       style="overflow:visible"
-       id="TriangleOutM-4"
-       refX="0"
-       refY="0"
-       orient="auto"
-       inkscape:stockid="TriangleOutM">
-      <path
-         transform="scale(0.4)"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         id="path4735-7"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:isstock="true"
-       style="overflow:visible"
-       id="TriangleOutM-4-7"
-       refX="0"
-       refY="0"
-       orient="auto"
-       inkscape:stockid="TriangleOutM"
-       inkscape:collect="always">
-      <path
-         transform="scale(0.4)"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         id="path4735-7-4"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker1034-8"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1032-4"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker1034-8-1"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1032-4-7"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#800000;fill-opacity:1;fill-rule:evenodd;stroke:#800000;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.3293607"
-     inkscape:cx="327.68411"
-     inkscape:cy="226.67409"
-     inkscape:document-units="mm"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:snap-global="false"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     inkscape:window-width="1440"
-     inkscape:window-height="810"
-     inkscape:window-x="1424"
-     inkscape:window-y="144"
-     inkscape:window-maximized="0" />
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="レイヤー 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(224.0709,-23.945169)">
-    <g
-       inkscape:label="grid"
-       id="layer1-7"
-       transform="translate(-220.3157,-58.591603)"
-       style="display:inline">
-      <path
-         d="M -3.7041667,82.550001 V 174.88958 M -1.0583334,82.550001 V 174.88958 M 1.5875,82.550001 V 174.88958 M 4.2333333,82.550001 V 174.88958 M 6.8791663,82.550001 V 174.88958 M 9.5250003,82.550001 V 174.88958 M 12.170833,82.550001 V 174.88958 M 14.816666,82.550001 V 174.88958 M 17.4625,82.550001 V 174.88958 M 20.108333,82.550001 V 174.88958 M 22.754166,82.550001 V 174.88958 M 25.4,82.550001 V 174.88958 M 28.045833,82.550001 V 174.88958 M 30.691666,82.550001 V 174.88958 M 33.3375,82.550001 V 174.88958 M 35.983333,82.550001 V 174.88958 M 38.629166,82.550001 V 174.88958 M 41.275,82.550001 V 174.88958 M 43.920833,82.550001 V 174.88958 M 46.566666,82.550001 V 174.88958 M 49.2125,82.550001 V 174.88958 M 51.858333,82.550001 V 174.88958 M 54.504166,82.550001 V 174.88958 M 57.15,82.550001 V 174.88958 M 59.795833,82.550001 V 174.88958 M 62.441666,82.550001 V 174.88958 M 65.0875,82.550001 V 174.88958 M 67.733333,82.550001 V 174.88958 M 70.379166,82.550001 V 174.88958 M 73.025,82.550001 V 174.88958 M 75.670833,82.550001 V 174.88958 M 78.316666,82.550001 V 174.88958 M 80.9625,82.550001 V 174.88958 M 83.608333,82.550001 V 174.88958 M 86.254166,82.550001 V 174.88958 M 88.9,82.550001 v 92.339579 m 2.645833,-92.339579 v 92.339579 m 2.645833,-92.339579 v 92.339579 m 2.645837,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M 102.12916,82.550001 V 174.88958 M 104.775,82.550001 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64584,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M 120.65,82.550001 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64584,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M 136.525,82.550001 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64584,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M 152.4,82.550001 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64584,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M 168.275,82.550001 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64584,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M 184.15,82.550001 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64584,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M 200.025,82.550001 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64584,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M 215.9,82.550001 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64584,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M 231.775,82.550001 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64584,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M 247.65,82.550001 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64584,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M 263.525,82.550001 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64584,-92.339579 v 92.339579 m 2.64583,-92.339579 v 92.339579 m 2.64583,-92.339579 V 174.88958 M -3.7041667,82.550001 H 278.07708 M -3.7041667,85.195834 H 278.07708 M -3.7041667,87.841667 H 278.07708 M -3.7041667,90.487501 H 278.07708 M -3.7041667,93.133334 H 278.07708 M -3.7041667,95.779168 H 278.07708 M -3.7041667,98.425001 H 278.07708 M -3.7041667,101.07083 H 278.07708 M -3.7041667,103.71667 H 278.07708 M -3.7041667,106.3625 H 278.07708 M -3.7041667,109.00833 H 278.07708 M -3.7041667,111.65417 H 278.07708 M -3.7041667,114.3 H 278.07708 M -3.7041667,116.94583 H 278.07708 M -3.7041667,119.59167 H 278.07708 M -3.7041667,122.2375 H 278.07708 M -3.7041667,124.88333 H 278.07708 M -3.7041667,127.52917 H 278.07708 M -3.7041667,130.175 H 278.07708 M -3.7041667,132.82083 H 278.07708 M -3.7041667,135.46667 H 278.07708 M -3.7041667,138.1125 H 278.07708 M -3.7041667,140.75833 H 278.07708 M -3.7041667,143.40417 H 278.07708 M -3.7041667,146.05 H 278.07708 M -3.7041667,148.69583 H 278.07708 M -3.7041667,151.34167 H 278.07708 M -3.7041667,153.9875 H 278.07708 M -3.7041667,156.63333 H 278.07708 M -3.7041667,159.27917 H 278.07708 M -3.7041667,161.925 H 278.07708 M -3.7041667,164.57083 H 278.07708 M -3.7041667,167.21667 H 278.07708 M -3.7041667,169.8625 H 278.07708 M -3.7041667,172.50833 H 278.07708"
-         style="fill:none;stroke:#000000;stroke-width:0.0264583px"
-         id="path6231"
-         inkscape:connector-curvature="0" />
-    </g>
-    <path
-       style="opacity:0.63899997;fill:none;stroke:#800000;stroke-width:0.50218612;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.50218609, 0.50218609;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1034-8-1)"
-       d="m -174.79736,44.887278 -27.9336,32.521806"
-       id="path943-6-2"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="opacity:0.63899997;fill:none;stroke:#000080;stroke-width:0.50218612;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.50218608, 0.50218608;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1034)"
-       d="m -191.18295,53.880903 11.39872,22.253419"
-       id="path943"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <g
-       id="layer2"
-       inkscape:label="view"
-       style="display:inline"
-       transform="translate(-224.86465,23.416002)">
-      <image
-         y="25.031691"
-         x="152.64569"
-         id="image4500"
-         xlink:href="data:image/png;base64,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 AABJRU5ErkJggg== "
-         preserveAspectRatio="none"
-         height="59.266666"
-         width="124.08958" />
-      <rect
-         style="opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-         id="rect4584"
-         width="281.78125"
-         height="92.339584"
-         x="0.79375017"
-         y="0.72781485" />
-      <path
-         style="fill:none;stroke:#000080;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.52916667, 0.52916667;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#TriangleOutM)"
-         d="M 6.3169273,29.302814 H 112.84479 l 58.30755,25.135417"
-         id="path4586"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="ccc" />
-      <path
-         style="display:inline;fill:none;stroke:#000080;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.52916667, 0.52916667;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#TriangleOutM-4)"
-         d="M 6.3212163,38.64276 H 112.84908 l 44.8138,27.384375"
-         id="path4586-4"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="ccc" />
-      <path
-         style="display:inline;fill:none;stroke:#000080;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.52916667, 0.52916667;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#TriangleOutM-4-7)"
-         d="M 6.4518573,20.602493 H 144.68958 l 5.90768,3.525536"
-         id="path4586-4-4"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="ccc" />
-    </g>
-    <text
-       id="text4512"
-       y="33.215248"
-       x="-218.43906"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458335"
-       xml:space="preserve"><tspan
-         id="tspan4514"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:8.81856251px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458335"
-         y="33.215248"
-         x="-218.43906"
-         sodipodi:role="line"><tspan
-   dy="0"
-   id="tspan4548"
-   style="line-height:8.81856251px;fill:#ff6600">AutoConnect</tspan>     portal;</tspan><tspan
-         id="tspan4540"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:8.81856251px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458335"
-         y="42.03381"
-         x="-218.43906"
-         sodipodi:role="line"><tspan
-   id="tspan4550"
-   style="line-height:8.81856251px;fill:#ff6600">AutoConnectAux</tspan>  aux(<tspan
-   id="tspan4554"
-   style="line-height:8.81856251px;fill:#0088aa">&quot;/mqtt_setting&quot;</tspan>, <tspan
-   id="tspan4556"
-   style="line-height:8.81856251px;fill:#0088aa">&quot;MQTT Setting&quot;</tspan>);</tspan><tspan
-         id="tspan4516"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:8.81856251px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458335"
-         y="50.852375"
-         x="-218.43906"
-         sodipodi:role="line"><tspan
-   id="tspan4570"
-   style="line-height:8.81856251px;fill:#ff6600">ACText</tspan>(header, <tspan
-   id="tspan4564"
-   style="line-height:8.81856251px;fill:#0088aa">&quot;MQTT broker settings&quot;</tspan>);</tspan><tspan
-         id="tspan4518"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:8.81856251px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458335"
-         y="59.670937"
-         x="-218.43906"
-         sodipodi:role="line"><tspan
-   id="tspan4568"
-   style="line-height:8.81856251px;fill:#ff6600">ACText</tspan>(caption, <tspan
-   id="tspan4566"
-   style="line-height:8.81856251px;fill:#0088aa">&quot;Publishing the WiFi...&quot;</tspan>);</tspan><tspan
-         id="tspan4520"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:8.81856251px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458335"
-         y="67.167023"
-         x="-218.43906"
-         sodipodi:role="line" /><tspan
-         id="tspan4522"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:8.81856251px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458335"
-         y="74.663109"
-         x="-218.43906"
-         sodipodi:role="line"><tspan
-   id="tspan4574"
-   style="line-height:8.81856251px;fill:#00aad4">void</tspan><tspan
-   id="tspan4576"
-   style="line-height:8.81856251px;fill:#666666">setup</tspan>() {</tspan><tspan
-         id="tspan4530"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:8.81856251px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458335"
-         y="83.481674"
-         x="-218.43906"
-         sodipodi:role="line">  aux.<tspan
-   id="tspan4578"
-   style="line-height:8.81856251px;fill:#ff6600">add</tspan>({ header, caption });</tspan><tspan
-         id="tspan4532"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:8.81856251px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458335"
-         y="92.300232"
-         x="-218.43906"
-         sodipodi:role="line">  portal.<tspan
-   id="tspan4580"
-   style="line-height:8.81856251px;fill:#ff6600">join</tspan>(aux);</tspan><tspan
-         id="tspan4534"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:8.81856251px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458335"
-         y="101.1188"
-         x="-218.43906"
-         sodipodi:role="line">  portal.<tspan
-   id="tspan4582"
-   style="line-height:8.81856251px;fill:#ff6600">begin</tspan>();</tspan><tspan
-         id="tspan4536"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:8.81856251px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458335"
-         y="109.93736"
-         x="-218.43906"
-         sodipodi:role="line">}</tspan></text>
-    <rect
-       ry="4.1159506"
-       y="45.466137"
-       x="-202.09026"
-       height="8.2319012"
-       width="21.702286"
-       id="rect6136"
-       style="opacity:0.34100001;fill:#000080;fill-opacity:1;stroke:none;stroke-width:0.5291667;stroke-miterlimit:4;stroke-dasharray:0.52916668, 0.52916668;stroke-dashoffset:0;stroke-opacity:1"
-       rx="4.1159506" />
-    <rect
-       ry="4.1159506"
-       y="54.352848"
-       x="-202.09026"
-       height="8.2319012"
-       width="24.929565"
-       id="rect6136-3"
-       style="display:inline;opacity:0.34100001;fill:#000080;fill-opacity:1;stroke:none;stroke-width:0.5291667;stroke-miterlimit:4;stroke-dasharray:0.52916668, 0.52916668;stroke-dashoffset:0;stroke-opacity:1"
-       rx="4.1159506" />
-    <rect
-       ry="4.1159506"
-       y="77.785698"
-       x="-187.68443"
-       height="8.2319012"
-       width="21.702286"
-       id="rect6136-4"
-       style="display:inline;opacity:0.34100001;fill:#000080;fill-opacity:1;stroke:none;stroke-width:0.5291667;stroke-miterlimit:4;stroke-dasharray:0.52916668, 0.52916668;stroke-dashoffset:0;stroke-opacity:1"
-       rx="4.1159506" />
-    <rect
-       ry="4.1159506"
-       y="77.785698"
-       x="-164.85962"
-       height="8.2319012"
-       width="21.702286"
-       id="rect6136-4-0"
-       style="display:inline;opacity:0.34100001;fill:#000080;fill-opacity:1;stroke:none;stroke-width:0.5291667;stroke-miterlimit:4;stroke-dasharray:0.52916668, 0.52916668;stroke-dashoffset:0;stroke-opacity:1"
-       rx="4.1159506" />
-    <rect
-       ry="4.1159506"
-       y="77.785698"
-       x="-214.53166"
-       height="8.2319012"
-       width="12.113992"
-       id="rect6136-4-0-2"
-       style="display:inline;opacity:0.34100001;fill:#800000;fill-opacity:1;stroke:none;stroke-width:0.5291667;stroke-miterlimit:4;stroke-dasharray:0.52916668, 0.52916668;stroke-dashoffset:0;stroke-opacity:1"
-       rx="4.1159506" />
-    <rect
-       ry="4.1159506"
-       y="86.953049"
-       x="-182.37579"
-       height="8.2319012"
-       width="12.113992"
-       id="rect6136-4-0-2-8"
-       style="display:inline;opacity:0.34100001;fill:#800000;fill-opacity:1;stroke:none;stroke-width:0.5291667;stroke-miterlimit:4;stroke-dasharray:0.52916668, 0.52916668;stroke-dashoffset:0;stroke-opacity:1"
-       rx="4.1159506" />
-    <path
-       style="opacity:0.63899997;fill:none;stroke:#000080;stroke-width:0.50218612;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.50218609, 0.50218609;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1034-8)"
-       d="m -179.7291,62.978581 14.86948,14.807117"
-       id="path943-6"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <rect
-       rx="4.1159506"
-       ry="4.1159506"
-       y="36.532768"
-       x="-176.62614"
-       height="8.2319012"
-       width="12.113993"
-       id="rect6136-4-0-2-1"
-       style="display:inline;opacity:0.34100001;fill:#800000;fill-opacity:1;stroke:none;stroke-width:0.52916676;stroke-miterlimit:4;stroke-dasharray:0.52916669, 0.52916669;stroke-dashoffset:0;stroke-opacity:1" />
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/mkdocs/images/ac_json.png b/lib/AutoConnect-master/mkdocs/images/ac_json.png
deleted file mode 100644
index 96c5660a36865a06e56ea72df84eb05deb7f1900..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/ac_json.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/ac_load_save.svg b/lib/AutoConnect-master/mkdocs/images/ac_load_save.svg
deleted file mode 100644
index bf73a2f4fadd8add9094151705c342e86b239d4f..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/images/ac_load_save.svg
+++ /dev/null
@@ -1,822 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="135.15846mm"
-   height="81.855286mm"
-   viewBox="0 0 135.15846 81.855286"
-   version="1.1"
-   id="svg8"
-   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
-   sodipodi:docname="ac_load_save.svg">
-  <defs
-     id="defs2">
-    <marker
-       inkscape:stockid="Arrow1Lstart"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker5279"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5277"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt"
-         transform="matrix(0.8,0,0,0.8,10,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Lend"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5014"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt"
-         transform="matrix(-0.8,0,0,-0.8,-10,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lstart"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Lstart"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5011"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt"
-         transform="matrix(0.8,0,0,0.8,10,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4142136"
-     inkscape:cx="305.95467"
-     inkscape:cy="192.81283"
-     inkscape:document-units="mm"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:snap-global="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1001"
-     inkscape:window-x="2551"
-     inkscape:window-y="-9"
-     inkscape:window-maximized="1"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0" />
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="レイヤー 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-53.740477,-29.775057)">
-    <g
-       id="g888"
-       transform="matrix(0.05665416,0,0,0.05665416,112.41059,91.432461)"
-       style="stroke-width:4.67014837">
-      <g
-         id="g827"
-         style="stroke-width:4.67014837">
-        <g
-           id="g825"
-           style="stroke-width:4.67014837">
-          <g
-             id="g823"
-             style="stroke-width:4.67014837">
-            <path
-               id="path815"
-               d="M 236.936,0 H 91.465 C 87.459,0 83.693,1.56 80.86,4.392 80.859,4.393 80.859,4.393 80.859,4.393 L 33.647,51.604 c -2.833,2.833 -4.393,6.6 -4.393,10.606 v 203.98 c 0,8.271 6.728,15 15,15 7.091,0 185.609,0 192.682,0 8.271,0 15,-6.729 15,-15 V 15 c 0,-8.271 -6.729,-15 -15,-15 z m -25,271.19 H 69.254 v -82.595 c 0,-2.757 2.243,-5 5,-5 h 132.682 c 2.757,0 5,2.243 5,5 z m 25,0 h -15 v -82.595 c 0,-8.271 -6.729,-15 -15,-15 H 74.254 c -8.271,0 -15,6.729 -15,15 v 82.595 h -15 c -2.757,0 -5,-2.243 -5,-5 V 62.211 c 0,-1.335 0.52,-2.591 1.464,-3.536 l 47.21,-47.21 C 88.873,10.521 90.13,10 91.465,10 h 145.471 c 2.757,0 5,2.243 5,5 v 251.19 0 c 0,2.757 -2.243,5 -5,5 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path817"
-               d="m 129.96,29.929 h -25.524 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.524 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 109.436 V 39.929 h 15.524 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path819"
-               d="m 173.448,29.929 h -25.524 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.524 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 152.924 V 39.929 h 15.524 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path821"
-               d="m 216.936,29.929 h -25.525 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.525 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 196.411 V 39.929 h 15.525 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-          </g>
-        </g>
-      </g>
-      <g
-         id="g829"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g831"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g833"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g835"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g837"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g839"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g841"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g843"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g845"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g847"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g849"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g851"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g853"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g855"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g857"
-         style="stroke-width:4.67014837" />
-    </g>
-    <g
-       id="g898"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g900"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g902"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g904"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g906"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g908"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g910"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g912"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g914"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g916"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g918"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g920"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g922"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g924"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <g
-       id="g926"
-       transform="matrix(0.26458333,0,0,0.26458333,31.601706,133.56614)" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect1093"
-       width="1.699528"
-       height="2.319947"
-       x="119.41328"
-       y="91.30558"
-       rx="0.053364325"
-       ry="0.46776518" />
-    <g
-       id="g1153"
-       transform="matrix(0.06571814,0,0,0.052736,100.33233,54.752494)">
-      <g
-         id="g1097">
-        <path
-           id="path1095"
-           d="M 578.766,51.487 V 50.592 H 575.77 35.93 32.934 v 0.895 C 15.272,52.701 2.095,66.753 0,83.808 v 3.002 355.724 c 0,6.898 1.795,12.712 4.791,17.949 6.893,12.137 17.068,18.269 31.14,18.269 h 197.012 v 49.695 h -37.425 c -9.281,0 -16.467,7.218 -16.467,16.48 0,9.262 7.186,16.479 16.467,16.479 h 220.666 c 9.281,0 16.768,-7.218 16.768,-16.479 0,-9.263 -7.486,-16.48 -16.768,-16.48 H 378.759 V 478.752 H 575.77 c 14.078,0 24.343,-6.132 31.14,-18.269 3.085,-5.493 5.091,-11.37 5.091,-17.949 V 86.811 83.809 C 609.905,66.753 595.833,52.701 578.766,51.487 Z m 0,35.324 v 355.724 c 0,2.108 -0.895,3.002 -2.996,3.002 H 35.93 c -2.095,0 -2.996,-0.894 -2.996,-3.002 V 86.811 83.809 h 545.831 v 3.002 z"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         id="g1099" />
-      <g
-         id="g1101" />
-      <g
-         id="g1103" />
-      <g
-         id="g1105" />
-      <g
-         id="g1107" />
-      <g
-         id="g1109" />
-      <g
-         id="g1111" />
-      <g
-         id="g1113" />
-      <g
-         id="g1115" />
-      <g
-         id="g1117" />
-      <g
-         id="g1119" />
-      <g
-         id="g1121" />
-      <g
-         id="g1123" />
-      <g
-         id="g1125" />
-      <g
-         id="g1127" />
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="111.507"
-       y="64.232811"
-       id="text949"><tspan
-         sodipodi:role="line"
-         id="tspan947"
-         x="111.507"
-         y="64.232811"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">Hello,world</tspan></text>
-    <g
-       id="g987"
-       transform="translate(-11.478634,-67.005729)">
-      <text
-         id="text949-6"
-         y="136.25891"
-         x="119.62345"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-           y="136.25891"
-           x="119.62345"
-           id="tspan947-1"
-           sodipodi:role="line">Input</tspan></text>
-      <rect
-         ry="0.67219442"
-         rx="0.75240988"
-         y="133.58672"
-         x="128.76941"
-         height="3.4395833"
-         width="15.478125"
-         id="rect971"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-    </g>
-    <g
-       id="g982"
-       transform="translate(-11.221166,-68.130209)">
-      <rect
-         ry="0.67219514"
-         rx="0.75240886"
-         y="140.03593"
-         x="128.28984"
-         height="4.2002602"
-         width="6.7468748"
-         id="rect977"
-         style="opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text975"
-         y="143.27707"
-         x="129.01744"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#f4f4f4;fill-opacity:1;stroke-width:0.26458332"
-           y="143.27707"
-           x="129.01744"
-           id="tspan973"
-           sodipodi:role="line">OK</tspan></text>
-    </g>
-    <g
-       id="g888-9"
-       transform="matrix(0.05665416,0,0,0.05665416,83.006567,60.646215)"
-       style="stroke-width:4.67014837">
-      <g
-         id="g827-6"
-         style="stroke-width:4.67014837">
-        <g
-           id="g825-6"
-           style="stroke-width:4.67014837">
-          <g
-             id="g823-0"
-             style="stroke-width:4.67014837">
-            <path
-               id="path815-0"
-               d="M 236.936,0 H 91.465 C 87.459,0 83.693,1.56 80.86,4.392 80.859,4.393 80.859,4.393 80.859,4.393 L 33.647,51.604 c -2.833,2.833 -4.393,6.6 -4.393,10.606 v 203.98 c 0,8.271 6.728,15 15,15 7.091,0 185.609,0 192.682,0 8.271,0 15,-6.729 15,-15 V 15 c 0,-8.271 -6.729,-15 -15,-15 z m -25,271.19 H 69.254 v -82.595 c 0,-2.757 2.243,-5 5,-5 h 132.682 c 2.757,0 5,2.243 5,5 z m 25,0 h -15 v -82.595 c 0,-8.271 -6.729,-15 -15,-15 H 74.254 c -8.271,0 -15,6.729 -15,15 v 82.595 h -15 c -2.757,0 -5,-2.243 -5,-5 V 62.211 c 0,-1.335 0.52,-2.591 1.464,-3.536 l 47.21,-47.21 C 88.873,10.521 90.13,10 91.465,10 h 145.471 c 2.757,0 5,2.243 5,5 v 251.19 0 c 0,2.757 -2.243,5 -5,5 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path817-0"
-               d="m 129.96,29.929 h -25.524 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.524 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 109.436 V 39.929 h 15.524 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path819-6"
-               d="m 173.448,29.929 h -25.524 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.524 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 152.924 V 39.929 h 15.524 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path821-1"
-               d="m 216.936,29.929 h -25.525 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.525 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 196.411 V 39.929 h 15.525 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-          </g>
-        </g>
-      </g>
-      <g
-         id="g829-9"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g831-2"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g833-1"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g835-2"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g837-7"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g839-9"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g841-8"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g843-1"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g845-7"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g847-3"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g849-2"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g851-3"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g853-9"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g855-8"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g857-6"
-         style="stroke-width:4.67014837" />
-    </g>
-    <rect
-       style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.15541553;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect1093-2"
-       width="3.4251835"
-       height="2.7713468"
-       x="95.852501"
-       y="66.932808"
-       rx="0.11300837"
-       ry="0.7756142" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.73894894;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect1093-2-3-3"
-       width="2.84165"
-       height="2.3576286"
-       x="138.0146"
-       y="67.113701"
-       rx="0.093755633"
-       ry="2.117661" />
-    <g
-       id="g888-9-4"
-       transform="matrix(0.05665416,0,0,0.05665416,143.36529,60.633145)"
-       style="stroke-width:4.67014837">
-      <g
-         id="g827-6-4"
-         style="stroke-width:4.67014837">
-        <g
-           id="g825-6-4"
-           style="stroke-width:4.67014837">
-          <g
-             id="g823-0-2"
-             style="stroke-width:4.67014837">
-            <path
-               id="path815-0-2"
-               d="M 236.936,0 H 91.465 C 87.459,0 83.693,1.56 80.86,4.392 80.859,4.393 80.859,4.393 80.859,4.393 L 33.647,51.604 c -2.833,2.833 -4.393,6.6 -4.393,10.606 v 203.98 c 0,8.271 6.728,15 15,15 7.091,0 185.609,0 192.682,0 8.271,0 15,-6.729 15,-15 V 15 c 0,-8.271 -6.729,-15 -15,-15 z m -25,271.19 H 69.254 v -82.595 c 0,-2.757 2.243,-5 5,-5 h 132.682 c 2.757,0 5,2.243 5,5 z m 25,0 h -15 v -82.595 c 0,-8.271 -6.729,-15 -15,-15 H 74.254 c -8.271,0 -15,6.729 -15,15 v 82.595 h -15 c -2.757,0 -5,-2.243 -5,-5 V 62.211 c 0,-1.335 0.52,-2.591 1.464,-3.536 l 47.21,-47.21 C 88.873,10.521 90.13,10 91.465,10 h 145.471 c 2.757,0 5,2.243 5,5 v 251.19 0 c 0,2.757 -2.243,5 -5,5 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path817-0-7"
-               d="m 129.96,29.929 h -25.524 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.524 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 109.436 V 39.929 h 15.524 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path819-6-3"
-               d="m 173.448,29.929 h -25.524 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.524 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 152.924 V 39.929 h 15.524 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path821-1-2"
-               d="m 216.936,29.929 h -25.525 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.525 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 196.411 V 39.929 h 15.525 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-          </g>
-        </g>
-      </g>
-      <g
-         id="g829-9-8"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g831-2-8"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g833-1-1"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g835-2-5"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g837-7-1"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g839-9-3"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g841-8-0"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g843-1-9"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g845-7-8"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g847-3-2"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g849-2-0"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g851-3-8"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g853-9-3"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g855-8-1"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g857-6-4"
-         style="stroke-width:4.67014837" />
-    </g>
-    <rect
-       style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.15541553;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect1093-2-1"
-       width="0.94471467"
-       height="4.4746022"
-       x="144.63507"
-       y="66.088287"
-       rx="0.11300837"
-       ry="0.77561432" />
-    <g
-       id="g1484">
-      <rect
-         transform="rotate(90)"
-         ry="1.069078"
-         rx="0.10748189"
-         y="-144.40062"
-         x="68.031433"
-         height="9.8992567"
-         width="0.57877195"
-         id="rect1046-9-1"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <rect
-         transform="rotate(45)"
-         ry="1.069078"
-         rx="0.1074819"
-         y="-54.572708"
-         x="151.14955"
-         height="4.5920415"
-         width="0.25470743"
-         id="rect1046-3-5-6"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <rect
-         transform="rotate(135)"
-         ry="1.069078"
-         rx="0.1074819"
-         y="-151.21991"
-         x="-54.773582"
-         height="4.5920415"
-         width="0.25470743"
-         id="rect1046-3-6-2-1"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-    </g>
-    <rect
-       style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.73894894;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect1093-2-3-3-2"
-       width="2.84165"
-       height="2.3576288"
-       x="99.981239"
-       y="67.054848"
-       rx="0.093755633"
-       ry="2.117661" />
-    <g
-       id="g1503"
-       transform="translate(0.52916667)">
-      <rect
-         transform="rotate(90)"
-         ry="1.069078"
-         rx="0.10748189"
-         y="-106.65598"
-         x="67.981628"
-         height="10.434501"
-         width="0.57877195"
-         id="rect1046-9"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <rect
-         transform="rotate(45)"
-         ry="1.069078"
-         rx="0.1074819"
-         y="-27.114578"
-         x="123.6207"
-         height="4.5920415"
-         width="0.25470743"
-         id="rect1046-3-5"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <rect
-         transform="rotate(135)"
-         ry="1.069078"
-         rx="0.1074819"
-         y="-123.69107"
-         x="-27.315453"
-         height="4.5920415"
-         width="0.25470743"
-         id="rect1046-3-6-2"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-    </g>
-    <g
-       id="g888-3"
-       transform="matrix(0.05665416,0,0,0.05665416,112.41059,34.324498)"
-       style="stroke-width:4.67014837">
-      <g
-         id="g827-2"
-         style="stroke-width:4.67014837">
-        <g
-           id="g825-7"
-           style="stroke-width:4.67014837">
-          <g
-             id="g823-6"
-             style="stroke-width:4.67014837">
-            <path
-               id="path815-3"
-               d="M 236.936,0 H 91.465 C 87.459,0 83.693,1.56 80.86,4.392 80.859,4.393 80.859,4.393 80.859,4.393 L 33.647,51.604 c -2.833,2.833 -4.393,6.6 -4.393,10.606 v 203.98 c 0,8.271 6.728,15 15,15 7.091,0 185.609,0 192.682,0 8.271,0 15,-6.729 15,-15 V 15 c 0,-8.271 -6.729,-15 -15,-15 z m -25,271.19 H 69.254 v -82.595 c 0,-2.757 2.243,-5 5,-5 h 132.682 c 2.757,0 5,2.243 5,5 z m 25,0 h -15 v -82.595 c 0,-8.271 -6.729,-15 -15,-15 H 74.254 c -8.271,0 -15,6.729 -15,15 v 82.595 h -15 c -2.757,0 -5,-2.243 -5,-5 V 62.211 c 0,-1.335 0.52,-2.591 1.464,-3.536 l 47.21,-47.21 C 88.873,10.521 90.13,10 91.465,10 h 145.471 c 2.757,0 5,2.243 5,5 v 251.19 0 c 0,2.757 -2.243,5 -5,5 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path817-6"
-               d="m 129.96,29.929 h -25.524 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.524 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 109.436 V 39.929 h 15.524 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path819-1"
-               d="m 173.448,29.929 h -25.524 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.524 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 152.924 V 39.929 h 15.524 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-            <path
-               id="path821-5"
-               d="m 216.936,29.929 h -25.525 c -2.762,0 -5,2.239 -5,5 v 49.333 c 0,2.761 2.238,5 5,5 h 25.525 c 2.762,0 5,-2.239 5,-5 V 34.929 c 0,-2.762 -2.238,-5 -5,-5 z m -5,49.333 H 196.411 V 39.929 h 15.525 z"
-               inkscape:connector-curvature="0"
-               style="stroke-width:4.67014837" />
-          </g>
-        </g>
-      </g>
-      <g
-         id="g829-2"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g831-4"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g833-3"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g835-7"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g837-9"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g839-4"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g841-7"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g843-7"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g845-2"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g847-7"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g849-0"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g851-6"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g853-3"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g855-6"
-         style="stroke-width:4.67014837" />
-      <g
-         id="g857-1"
-         style="stroke-width:4.67014837" />
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#002700;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       x="104.19426"
-       y="111.57608"
-       id="text1516"><tspan
-         sodipodi:role="line"
-         id="tspan1514"
-         x="104.19426"
-         y="111.57608"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#002700;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">AutoConnect::load</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#002700;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       x="53.70327"
-       y="67.993149"
-       id="text1516-4"><tspan
-         sodipodi:role="line"
-         id="tspan1514-3"
-         x="53.70327"
-         y="67.993149"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#002700;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">AutoConnectAux</tspan><tspan
-         sodipodi:role="line"
-         x="53.70327"
-         y="71.961899"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#002700;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="tspan1536">::loadElement</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#002700;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       x="159.29454"
-       y="67.999352"
-       id="text1516-4-4"><tspan
-         sodipodi:role="line"
-         id="tspan1514-3-5"
-         x="159.29454"
-         y="67.999352"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#002700;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">AutoConnectAux</tspan><tspan
-         sodipodi:role="line"
-         x="159.29454"
-         y="71.968102"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#002700;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="tspan1536-1">::saveElement</tspan></text>
-    <rect
-       style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect1093-3"
-       width="4.487114"
-       height="2.1685081"
-       x="118.21754"
-       y="49.186954"
-       rx="0.14089312"
-       ry="0.43723083" />
-    <g
-       id="g1498"
-       transform="translate(-0.16225749)">
-      <rect
-         ry="1.069078"
-         rx="0.10748189"
-         y="50.580574"
-         x="120.13969"
-         height="5.1024733"
-         width="0.57877195"
-         id="rect1046-38"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <rect
-         transform="rotate(-45)"
-         ry="1.069078"
-         rx="0.1074819"
-         y="119.95757"
-         x="50.31118"
-         height="4.5920415"
-         width="0.25470743"
-         id="rect1046-3-2"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <rect
-         transform="rotate(45)"
-         ry="1.069078"
-         rx="0.1074819"
-         y="-50.381538"
-         x="119.75671"
-         height="4.5920415"
-         width="0.25470743"
-         id="rect1046-3-6-21"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#002700;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       x="92.995323"
-       y="32.187313"
-       id="text1516-47"><tspan
-         sodipodi:role="line"
-         id="tspan1514-31"
-         x="92.995323"
-         y="32.187313"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#002700;fill-opacity:1;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">AutoConnectAux::saveElement</tspan></text>
-    <g
-       transform="translate(-0.16225749,36.803633)"
-       id="g1498-6">
-      <rect
-         ry="1.069078"
-         rx="0.10748189"
-         y="50.580574"
-         x="120.13969"
-         height="5.1024733"
-         width="0.57877195"
-         id="rect1046-38-5"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <rect
-         transform="rotate(-45)"
-         ry="1.069078"
-         rx="0.1074819"
-         y="119.95757"
-         x="50.31118"
-         height="4.5920415"
-         width="0.25470743"
-         id="rect1046-3-2-3"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <rect
-         transform="rotate(45)"
-         ry="1.069078"
-         rx="0.1074819"
-         y="-50.381538"
-         x="119.75671"
-         height="4.5920415"
-         width="0.25470743"
-         id="rect1046-3-6-21-0"
-         style="opacity:1;vector-effect:none;fill:#3366cc;fill-opacity:1;stroke:#3366cc;stroke-width:1.32291663;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-    </g>
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/mkdocs/images/ac_mqtt_setting.png b/lib/AutoConnect-master/mkdocs/images/ac_mqtt_setting.png
deleted file mode 100644
index 632d673cd8703dc1547eb2e416f327015a898a81..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/ac_mqtt_setting.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/ac_objects.svg b/lib/AutoConnect-master/mkdocs/images/ac_objects.svg
deleted file mode 100644
index 15b83b2025c2df81a0daa2fc303ef24073862663..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/images/ac_objects.svg
+++ /dev/null
@@ -1,1401 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="214.78053mm"
-   height="193.00659mm"
-   viewBox="0 0 214.78053 193.00659"
-   version="1.1"
-   id="svg8"
-   inkscape:version="0.92.1 r15371"
-   sodipodi:docname="ac_objects.svg">
-  <defs
-     id="defs2">
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path4764"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#800080;fill-opacity:1;fill-rule:evenodd;stroke:#800080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM-4"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4764-2"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM-4-9"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4764-2-8"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM-4-6"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4764-2-4"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM-4-9-3"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4764-2-8-7"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM-4-9-3-3"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4764-2-8-7-6"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM-4-9-3-3-6"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4764-2-8-7-6-5"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM-4-6-5"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4764-2-4-6"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM-4-6-5-9"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4764-2-4-6-0"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM-4-6-5-9-4"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4764-2-4-6-0-3"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="TriangleOutM-4-6-5-9-4-9"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4764-2-4-6-0-3-0"
-         d="M 5.77,0 -2.88,5 V -5 Z"
-         style="fill:#000080;fill-opacity:1;fill-rule:evenodd;stroke:#000080;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="scale(0.4)" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.9983453"
-     inkscape:cx="385.25708"
-     inkscape:cy="389.74632"
-     inkscape:document-units="mm"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:snap-global="true"
-     inkscape:snap-nodes="false"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     inkscape:window-width="1920"
-     inkscape:window-height="1001"
-     inkscape:window-x="2551"
-     inkscape:window-y="118"
-     inkscape:window-maximized="1" />
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="レイヤー 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(24.367215,-27.539182)">
-    <rect
-       style="fill:none;fill-opacity:1;stroke:#800080;stroke-width:0.79374999;stroke-miterlimit:4;stroke-dasharray:0.79375, 0.79375;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4509"
-       width="107.59807"
-       height="184.5126"
-       x="82.418373"
-       y="35.636295"
-       ry="3.2948685" />
-    <g
-       id="g4513">
-      <rect
-         y="39.512989"
-         x="86.018501"
-         height="176.70897"
-         width="99.979797"
-         id="rect4507"
-         style="fill:#dddddd;fill-opacity:1;stroke:#dddddd;stroke-width:0.56186873;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
-      <image
-         width="99.27166"
-         height="176.53"
-         preserveAspectRatio="none"
-         xlink:href="data:image/png;base64,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
-PVQO/0kfPZYm94x8uVUnX3jpN/T5e9p6rayk8HOrZGW7k/ttn2VS0rWv7U/t0KZMp/RVtVZuKdKJ
-9L2qfdIl9/y9Wvbxds1Zs1fzJtSrYmXP86rv0s+BDLL/GAbh8XP5Wy47vE1VaVtUkJimRT/fpUV5
-IQXbz+ijE/v00t7rz1QLpsRJCqq1eZAfJUv0KPd+j+bdY5P93iQ54m2yStKEqYO6PXVSrKRWtXze
-50R4Bk6oYjQa86Hay1mvdp/1avd+mwp+vV/rU11alC1VhD9Lac/epT/keWQPb8wIdYQUunRG/gtJ
-Sp3St7BKHWoqlHuWU4tSpea54aVf//Yb6x3UZwpztH6uU5YrDdq9pUiHWiTVLNaz99SqMsOlF9Ym
-KzRZsrQ06/3v2M+BDK3/uO3ccYqVpPZmvX3TC70qKUtTRUqhlmU/psxEp+yTncp8tEzuVOe1pVfL
-oD/i5NH6si0qSAzPSK+EFAoFFTjbpI6ZyYq79R6FhRTq/M6FAFExRjcq5WvP1jM6X3FAL/R7vlm7
-v2rr/vLaG81CrX/MI/sPmlXzh8VyLUnSjGVOpayZryPt/ddSdfwztcqm9AxP99Lv5ZP6j17PR9sU
-7JB0t2OAdkSKkyVGUqhdgYgZ5ZHKQr3UGJRl8lRZFdKJY5sjdivfSj8HMvT+4/ZaNPd+xUkKfFkd
-sdt2YIHGSpVsekKulU5NLyvWoRbJMu3Hejq8m66ipVWSVXG2vhuNyuX97Rk1lqyWJNkXr1FBolXB
-s3v0XFmSpv/CqRnL58pz+Iw6htB+/8V2SXGKn9nnRGqypt45hIKAEWSMhuoefdgSku5MU0FpsXL7
-bjWMz9fONKekNjWf6jmYJluspAv1erGm7vqbWGKxMqdb+q/m6GH52yV7YrHc06TWpuo+m0k2651A
-dzt+ttTT60zmUq/Ov35Gdcuzwkc+U+tFSRNm6x/yBv6lFNbJSRH/u5V+DuQW+o/bJnXBXpXOmip1
-Nujtg3U3vXbVr4/pi98e056MiINn69R6uc8D2Q8bFJDkSCnutes8c6lLjvFSS8t+SdJPExIkBfXp
-8TJVXXsWb1NupvPmu5D78H3coFZZlD53S0R9Ni173DWkcoCRZMwu/26t3KxH/rVY7qRCbSvP12++
-aVZLh6Q742S/u/vzosHGSpUc7bmjXs3tC+WIz1Hteqve/TIoy2SnHpmZrH62ZYRV6+AX/6LMtGTZ
-1aYjx/fd2I6aw8pLXCiHe5ca7/Xq3S9Dirt3tuYkTJUu1mn3wdrwlXVa+W6d5j3lUvrj1fLOrJP/
-olWpKS45JkmhlgYFJjnlyNii2s5/0zOvd89eht5PSZdC6pDkmHVAO5d+oCOvbVbVLfV/AP2Wj/7Z
-NG99rbwRR2InJ4efxQflO7jihg1AfW39pEnLU13KXHJMXvdJ+b9WeIxZFDr3nl7tWdrwb9buRo9K
-U7JUufUt+fxN6piapnkzbdLFOlVVdj9rfTtwTi+kOOXO86o6sV6BTqscKS6lTh7iD1e+cr2a4VJp
-So4qtybL52+S7vUoM2HIIwoYMcboTFVSS6UWvlikik/Cv/ZtSrIcCclyTLFKl5t0pLZIWRsqI5bV
-9in/d5XyXQjKmuBRrjtH2clxavl4u1YeaZBklW2G64ZqDr3T/VlCtX+mg0dvOC3VF8uzvVJHvgrK
-Ms2jXHeW3NOsCp2rVsmmPpuHahcr6/Vq+dslR0qWch9yyTG+TX5fmXKeny/Pa5U60W6RdWLsd+in
-JN8e1ZwNSrFpynbnK/fRW+9/v/otH/2zKC4h/JqF/8XFBNV6zquKV3K0sGYQm4pqF+vnB2t1usPa
-PW7cWXJPs6ilsVJrthZHPC5oVsWGHJX4GtQe41SmO0fZSXHdY/HFxddWWQK/X6F1viYFZVP6QznK
-neuSvatBVXvLuh8F3O3QqkH1rVkVG/5RJb4mhSZ015cZL532eQe1nA2MROO6urquDl91VyWNu+W7
-py9J+vaLMOadf/1MVOplfI4O0RofiJKrXdK44Zs/jt2ZKgAAhhGqAAAYQqgCAGAIoQoAgCGEKgAA
-hhCqAAAYQqgCAGAIoQoAgCGEKgAAhhCqAAAYQqgCAGAIoQoAgCGEKgAAhoyqUH0w8QHF3BET7WZg
-hIq5I0YPJj4QtfoZnyNbtMcHxoZRFapbCl+W03ZftJuBEcppu09bCl+OWv2Mz5Et2uMDY8Oo+nuq
-AAAMCX9PFQCA0YlQBQDAEEIVAABDCFUAAAwhVAEAMIRQBQDAEEIVAABDCFUAAAwhVAEAMIRQBQDA
-EEIVAABDCFUAAAwhVAEAMIRQBQDAkGEOVf7sGwBgOA1v7jBTBQB8f40jVAEAGJUIVQAADCFUAQAw
-hFAFAMAQQhUAAEMIVQAADCFUAQAw5P8BaGFujcdln7kAAAAASUVORK5CYII=
-"
-         id="image4504"
-         x="86.372574"
-         y="39.602474" />
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#800080;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none"
-       x="-1.352039"
-       y="32.768837"
-       id="text4521"><tspan
-         sodipodi:role="line"
-         id="tspan4519"
-         x="-1.352039"
-         y="32.768837"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05555534px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#800080;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none">AutoConnectAux</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000080;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none"
-       x="-3.4879999"
-       y="72.430786"
-       id="text4521-9"><tspan
-         sodipodi:role="line"
-         id="tspan4541"
-         x="-3.4879999"
-         y="72.430786">AutoConnectText</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000080;fill-opacity:1;stroke:none;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none"
-       x="-8.1182032"
-       y="96.282768"
-       id="text4521-9-8"><tspan
-         sodipodi:role="line"
-         id="tspan4561"
-         x="-8.1182032"
-         y="96.282768">AutoConnectInput</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000080;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="-18.370811"
-       y="138.95129"
-       id="text4521-9-0"><tspan
-         sodipodi:role="line"
-         id="tspan4571"
-         x="-18.370811"
-         y="138.95129">AutoConnectElement</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000080;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="-24.337711"
-       y="152.99744"
-       id="text4521-9-7"><tspan
-         sodipodi:role="line"
-         id="tspan4581"
-         x="-24.337711"
-         y="152.99744">AutoConnectCheckbox</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000080;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="-14.126451"
-       y="201.49644"
-       id="text4521-9-1"><tspan
-         sodipodi:role="line"
-         id="tspan4593"
-         x="-14.126451"
-         y="201.49644">AutoConnectSubmit</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.05555534px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;opacity:1;fill:#000080;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="-8.3318024"
-       y="173.7346"
-       id="text4521-9-7-5"><tspan
-         sodipodi:role="line"
-         id="tspan4613"
-         x="-8.3318024"
-         y="173.7346">AutoConnectRadio</tspan></text>
-    <path
-       style="fill:none;stroke:#800080;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM)"
-       d="m -1.49919,34.533273 h 67.053288 l 14.355731,7.629026"
-       id="path4617"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;stroke:#000080;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-4)"
-       d="M -3.6694822,74.143969 H 65.37147 l 33.437303,-9.994928"
-       id="path4617-9"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;stroke:#000080;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-4-9)"
-       d="m 65.350339,74.141729 23.700513,2.983189"
-       id="path4617-9-1"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;stroke:#000080;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-4-6)"
-       d="M -8.1932283,98.243908 H 65.088073 l 25.884181,-5.092023"
-       id="path4617-9-4"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;stroke:#000080;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-4-9-3)"
-       d="m 65.187644,98.226117 25.903508,6.726623"
-       id="path4617-9-1-5"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;stroke:#000080;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-4-9-3-3)"
-       d="M 65.417074,98.317163 91.133183,119.05184"
-       id="path4617-9-1-5-3"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;stroke:#000080;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-4-9-3-3-6)"
-       d="M 65.435994,98.304931 91.749378,131.9711"
-       id="path4617-9-1-5-3-5"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;stroke:#000080;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-4-6-5)"
-       d="m -19.018615,140.90874 h 83.775633 l 23.822795,3.71571"
-       id="path4617-9-4-8"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;stroke:#000080;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-4-6-5-9)"
-       d="m -24.367215,155.22458 h 88.835401 l 24.57239,-2.46845"
-       id="path4617-9-4-8-6"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;stroke:#000080;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-4-6-5-9-4)"
-       d="M -8.689328,175.93275 H 64.966774 L 88.602171,164.84396"
-       id="path4617-9-4-8-6-1"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;stroke:#000080;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#TriangleOutM-4-6-5-9-4-9)"
-       d="m -14.248099,203.67012 h 79.465465 l 26.633776,2.59132"
-       id="path4617-9-4-8-6-1-0"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/mkdocs/images/ac_param_flow.svg b/lib/AutoConnect-master/mkdocs/images/ac_param_flow.svg
deleted file mode 100644
index 3f6bc8a66cb492842e3988f5a7acebae58d645b9..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/images/ac_param_flow.svg
+++ /dev/null
@@ -1,971 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="832.03271"
-   height="436.492"
-   viewBox="0 0 220.14199 115.4885"
-   version="1.1"
-   id="svg1212"
-   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
-   sodipodi:docname="ac_param_flow.svg"
-   inkscape:export-filename="C:\Users\masaki-owaki\Documents\Arduino\libraries\AutoConnect\mkdocs\images\ac_param_flow.png"
-   inkscape:export-xdpi="115.2"
-   inkscape:export-ydpi="115.2">
-  <defs
-     id="defs1206">
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker3715"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3713"
-         style="fill:#7f7f00;fill-opacity:1;fill-rule:evenodd;stroke:#7f7f00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:isstock="true"
-       style="overflow:visible"
-       id="marker6593"
-       refX="0"
-       refY="0"
-       orient="auto"
-       inkscape:stockid="Arrow2Mend"
-       inkscape:collect="always">
-      <path
-         transform="scale(-0.6)"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         id="path6591"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path1975"
-         style="fill:#ff7f00;fill-opacity:1;fill-rule:evenodd;stroke:#ff7f00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Send"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Send"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path1981"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="matrix(-0.3,0,0,-0.3,0.69,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2"
-         style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-2"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-6"
-         style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-2-6"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-6-8"
-         style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-2-4"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-6-0"
-         style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-2-4-6-6"
-       style="overflow:visible"
-       inkscape:isstock="true"
-       inkscape:collect="always">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-6-0-2-9"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-2-6-6"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-6-8-8"
-         style="fill:#7f7f00;fill-opacity:1;fill-rule:evenodd;stroke:#7f7f00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-0"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-9"
-         style="fill:#7f7f00;fill-opacity:1;fill-rule:evenodd;stroke:#7f7f00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker3715-8"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3713-3"
-         style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4"
-     inkscape:cx="343.2971"
-     inkscape:cy="197.13344"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:snap-global="false"
-     inkscape:window-width="1616"
-     inkscape:window-height="851"
-     inkscape:window-x="1667"
-     inkscape:window-y="103"
-     inkscape:window-maximized="0"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     units="px" />
-  <metadata
-     id="metadata1209">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="レイヤー 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-54.981799,-75.851144)">
-    <path
-       style="fill:none;stroke:#7f7f00;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.52916665, 0.52916665;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker3715)"
-       d="m 111.8047,94.091614 h -11.34039 v 78.933876 h 11.35111"
-       id="path3703"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-    <path
-       style="fill:none;stroke:#0000ff;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.52916667, 0.52916667;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker3715-8)"
-       d="m 194.71777,104.49173 -88.50483,0.0413 0.0668,14.53452 h 5.30483"
-       id="path3703-7"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-    <rect
-       style="opacity:0.98000004;vector-effect:none;fill:none;fill-opacity:1;stroke:#2f2f2f;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect1215"
-       width="182.27782"
-       height="112.94661"
-       x="92.779808"
-       y="75.91729"
-       rx="1.0996704"
-       ry="1.069078" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect6127-8"
-       width="37.797615"
-       height="19.074368"
-       x="153.76596"
-       y="132.42233"
-       rx="0.10748193"
-       ry="1.069078" />
-    <g
-       id="g2826"
-       transform="translate(18.421829,-13.844294)">
-      <text
-         id="text949-6"
-         y="119.13956"
-         x="39.723991"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-           y="119.13956"
-           x="39.723991"
-           id="tspan947-1"
-           sodipodi:role="line">Input</tspan></text>
-      <rect
-         ry="0.67219442"
-         rx="0.75240988"
-         y="116.46737"
-         x="48.869949"
-         height="3.4395833"
-         width="15.478125"
-         id="rect971"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-    </g>
-    <g
-       id="g1153"
-       transform="matrix(0.05237375,0,0,0.04755636,54.981799,95.989516)"
-       style="stroke-width:1.17960072">
-      <g
-         id="g1097"
-         style="stroke-width:1.17960072">
-        <path
-           id="path1095"
-           d="M 578.766,51.487 V 50.592 H 575.77 35.93 32.934 v 0.895 C 15.272,52.701 2.095,66.753 0,83.808 v 3.002 355.724 c 0,6.898 1.795,12.712 4.791,17.949 6.893,12.137 17.068,18.269 31.14,18.269 h 197.012 v 49.695 h -37.425 c -9.281,0 -16.467,7.218 -16.467,16.48 0,9.262 7.186,16.479 16.467,16.479 h 220.666 c 9.281,0 16.768,-7.218 16.768,-16.479 0,-9.263 -7.486,-16.48 -16.768,-16.48 H 378.759 V 478.752 H 575.77 c 14.078,0 24.343,-6.132 31.14,-18.269 3.085,-5.493 5.091,-11.37 5.091,-17.949 V 86.811 83.809 C 609.905,66.753 595.833,52.701 578.766,51.487 Z m 0,35.324 v 355.724 c 0,2.108 -0.895,3.002 -2.996,3.002 H 35.93 c -2.095,0 -2.996,-0.894 -2.996,-3.002 V 86.811 83.809 h 545.831 v 3.002 z"
-           inkscape:connector-curvature="0"
-           style="stroke-width:1.17960072" />
-      </g>
-      <g
-         id="g1099"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1101"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1103"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1105"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1107"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1109"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1111"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1113"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1115"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1117"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1119"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1121"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1123"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1125"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1127"
-         style="stroke-width:1.17960072" />
-    </g>
-    <g
-       id="g1877"
-       transform="translate(-61.780506,-30.859554)">
-      <rect
-         ry="0.67219514"
-         rx="0.75240886"
-         y="140.51062"
-         x="125.32892"
-         height="4.2002602"
-         width="14.163605"
-         id="rect977"
-         style="opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text975"
-         y="143.79285"
-         x="126.04444"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#f4f4f4;fill-opacity:1;stroke-width:0.26458332"
-           y="143.79285"
-           x="126.04444"
-           id="tspan973"
-           sodipodi:role="line">Submit</tspan></text>
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="60.579521"
-       y="96.507751"
-       id="text1881"><tspan
-         sodipodi:role="line"
-         id="tspan1879"
-         x="60.579521"
-         y="96.507751"
-         style="stroke-width:0.26458332">Web Browser</tspan></text>
-    <path
-       style="fill:none;stroke:#ff7f00;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
-       d="M 78.820918,111.56569 H 112.08571"
-       id="path1946"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="70.515366"
-       y="105.38773"
-       id="text949-6-9"><tspan
-         sodipodi:role="line"
-         id="tspan947-1-9"
-         x="70.515366"
-         y="105.38773"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">Value</tspan></text>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 150.17922,86.615905 V 185.54596"
-       id="path1883-6-0"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#0000ff;stroke-width:0.52916676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9)"
-       d="M 113.29213,119.12372 H 149.1118"
-       id="path1946-5"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="115.26271"
-       y="123.61919"
-       id="text1881-0-8"><tspan
-         sodipodi:role="line"
-         x="115.26271"
-         y="123.61919"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan1944-9">RequestArgument {</tspan><tspan
-         sodipodi:role="line"
-         x="115.26271"
-         y="127.58794"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3723">  String key;</tspan><tspan
-         sodipodi:role="line"
-         x="115.26271"
-         y="131.55669"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3725">  String value;</tspan><tspan
-         sodipodi:role="line"
-         x="115.26271"
-         y="135.52544"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3721">}</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="115.43201"
-       y="112.94273"
-       id="text1881-8-1"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2"
-         x="115.43201"
-         y="112.94273"
-         style="stroke-width:0.26458332">RequestHandler</tspan><tspan
-         sodipodi:role="line"
-         x="115.43201"
-         y="116.91148"
-         style="stroke-width:0.26458332"
-         id="tspan2508">::handle()</tspan></text>
-    <path
-       style="fill:none;stroke:#0000ff;stroke-width:0.52916682;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-2)"
-       d="m 150.54404,125.13896 h 43.78867"
-       id="path1946-5-8"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 239.85912,86.615905 V 185.54596"
-       id="path1883-6-0-9"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="155.18854"
-       y="114.73576"
-       id="text1881-8-1-4"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2-3"
-         x="155.18854"
-         y="114.73576"
-         style="stroke-width:0.26458332">INVOKE when</tspan><tspan
-         sodipodi:role="line"
-         x="155.18854"
-         y="118.70451"
-         style="stroke-width:0.26458332"
-         id="tspan6562"><tspan
-           style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start"
-           id="tspan4055">REQUEST_URL</tspan></tspan><tspan
-         sodipodi:role="line"
-         x="155.18854"
-         y="122.67326"
-         style="stroke-width:0.26458332"
-         id="tspan4053">= AutoConnectAux::uri</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:0.15451667;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       x="160.78702"
-       y="133.4962"
-       id="text1881-8-1-2"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2-39"
-         x="160.78702"
-         y="133.4962"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke:#ffffff;stroke-width:0.15451667;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">PageArgument</tspan></text>
-    <path
-       style="opacity:0.98000004;fill:none;stroke:#0000ff;stroke-width:0.52916682;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-2-6)"
-       d="M 239.46079,104.43767 H 196.74022"
-       id="path1946-5-8-3"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="241.53334"
-       y="101.93393"
-       id="text1881-8-2"><tspan
-         sodipodi:role="line"
-         x="241.53334"
-         y="101.93393"
-         style="stroke-width:0.26458332"
-         id="tspan6554">AutoConnectAux</tspan><tspan
-         sodipodi:role="line"
-         x="241.53334"
-         y="105.90268"
-         style="stroke-width:0.26458332"
-         id="tspan1087">::on(<tspan
-   style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;fill-opacity:1"
-   id="tspan4640">handler</tspan>)</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="160.9971"
-       y="137.82475"
-       id="text1881-8-26"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-1"
-         x="160.9971"
-         y="137.82475"
-         style="stroke-width:0.26458332">name</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="173.87938"
-       y="137.82475"
-       id="text1881-8-26-3"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-1-9"
-         x="173.87938"
-         y="137.82475"
-         style="stroke-width:0.26458332">value</tspan></text>
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680"
-       width="10.156241"
-       height="2.271791"
-       x="160.3961"
-       y="138.84807"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-0"
-       width="14.432554"
-       height="2.271791"
-       x="171.16446"
-       y="138.84807"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-6"
-       width="10.156241"
-       height="2.271791"
-       x="160.28645"
-       y="142.29257"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-0-6"
-       width="14.432554"
-       height="2.271791"
-       x="171.16446"
-       y="142.29257"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-6-4"
-       width="10.156241"
-       height="2.271791"
-       x="160.28645"
-       y="145.99748"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-0-6-4"
-       width="14.432554"
-       height="2.271791"
-       x="171.16446"
-       y="145.99748"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 159.1934,148.46406 1.36975,1.36975 h 24.82266 l 1.41987,-1.41987"
-       id="path4757"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="241.2636"
-       y="135.73485"
-       id="text1881-8-2-1"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-7-4"
-         x="241.2636"
-         y="135.73485"
-         style="stroke-width:0.26458332">Function</tspan><tspan
-         sodipodi:role="line"
-         x="241.2636"
-         y="139.7036"
-         style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;fill-opacity:1;stroke-width:0.26458332"
-         id="tspan9652"><tspan
-           style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start"
-           id="tspan9644">handler</tspan><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1"
-           id="tspan4780" /></tspan><tspan
-         sodipodi:role="line"
-         x="241.2636"
-         y="143.67235"
-         style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;fill-opacity:1;stroke-width:0.26458332"
-         id="tspan1150"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1"
-           id="tspan1152">(AutoConnectAux&amp;,</tspan></tspan><tspan
-         sodipodi:role="line"
-         x="241.2636"
-         y="147.6411"
-         style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;fill-opacity:1;stroke-width:0.26458332"
-         id="tspan1154"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1"
-           id="tspan1156"> PageArgument&amp;)</tspan></tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="210.52823"
-       y="102.73473"
-       id="text1881-8-1-7"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2-2"
-         x="210.52823"
-         y="102.73473"
-         style="stroke-width:0.26458332">REGISTER</tspan></text>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 195.56494,86.615896 V 185.54596"
-       id="path1883-6-0-7"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#0000ff;stroke-width:0.52916682;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-2-4)"
-       d="m 195.93639,136.73428 h 42.70969"
-       id="path1946-5-8-9"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="206.19867"
-       y="134.87068"
-       id="text1881-8-1-4-4"><tspan
-         sodipodi:role="line"
-         x="206.19867"
-         y="134.87068"
-         style="stroke-width:0.26458332"
-         id="tspan4053-5">INVOKE <tspan
-   style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;fill-opacity:1"
-   id="tspan6086">handler</tspan></tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="212.22472"
-       y="144.60533"
-       id="text1881-8-26-3-5"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-1-9-0"
-         x="212.22472"
-         y="144.60533"
-         style="stroke-width:0.26458332">value</tspan></text>
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-0-61"
-       width="14.432554"
-       height="2.271791"
-       x="209.5098"
-       y="145.99748"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect6127"
-       width="37.797615"
-       height="10.583333"
-       x="198.7722"
-       y="140.17085"
-       rx="0.10748193"
-       ry="1.069078" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:0.15927915;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       x="201.09819"
-       y="141.24283"
-       id="text1881-8-1-2-2"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2-39-5"
-         x="201.09819"
-         y="141.24283"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke:#ffffff;stroke-width:0.15927915;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">AutoConnectInput</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="184.38263"
-       y="156.75534"
-       id="text1881-8-26-3-9"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-1-9-1"
-         x="184.38263"
-         y="156.75534"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#cc0000;stroke-width:0.26458332">COPY</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="157.09714"
-       y="130.18697"
-       id="text1881-8-26-3-9-9"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-1-9-1-8"
-         x="157.09714"
-         y="130.18697"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#cc0000;stroke-width:0.26458332">CREATE</tspan></text>
-    <path
-       style="fill:none;stroke:#ff0000;stroke-width:0.52916676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-2-4-6-6)"
-       d="m 141.73901,128.87344 h 13.43877"
-       id="path1946-5-8-9-5-6"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#ff0000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6593)"
-       d="m 124.97478,133.76022 v 24.31099 h 79.01637 v -10.85323 l 4.38979,0.006"
-       id="path7867"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccccc" />
-    <path
-       style="opacity:0.98000004;fill:none;stroke:#7f7f00;stroke-width:0.52916682;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-2-6-6)"
-       d="M 239.46873,94.143461 H 114.14221"
-       id="path1946-5-8-3-9"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="210.52823"
-       y="91.895462"
-       id="text1881-8-1-7-2"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2-2-3"
-         x="210.52823"
-         y="91.895462"
-         style="stroke-width:0.26458332">REGISTER</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="241.12097"
-       y="91.289833"
-       id="text1881-8-2-15"><tspan
-         sodipodi:role="line"
-         x="241.12097"
-         y="91.289833"
-         style="stroke-width:0.26458332"
-         id="tspan6554-5">WebServer</tspan><tspan
-         sodipodi:role="line"
-         x="241.12097"
-         y="95.258583"
-         style="stroke-width:0.26458332"
-         id="tspan1147">::on(<tspan
-   style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808000;fill-opacity:1;stroke-width:0.26458332"
-   id="tspan4640-8">reqHandler</tspan>)</tspan></text>
-    <path
-       style="fill:none;stroke:#7f7f00;stroke-width:0.52916694;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-0)"
-       d="M 113.27178,173.04747 H 238.69805"
-       id="path1946-5-6"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="114.82241"
-       y="171.08884"
-       id="text1881-8-1-8"><tspan
-         sodipodi:role="line"
-         x="114.82241"
-         y="171.08884"
-         style="stroke-width:0.26458332"
-         id="tspan2510">INVOKE <tspan
-   style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#7f7f00;fill-opacity:1"
-   id="tspan1265">reqHandler</tspan></tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="241.2636"
-       y="171.99133"
-       id="text1881-8-2-1-3"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-7-4-9"
-         x="241.2636"
-         y="171.99133"
-         style="stroke-width:0.26458332">Function</tspan><tspan
-         sodipodi:role="line"
-         x="241.2636"
-         y="175.96008"
-         style="stroke-width:0.26458332"
-         id="tspan9646"><tspan
-           style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#7f7f00;fill-opacity:1;stroke-width:0.26458332"
-           id="tspan6559-1">reqHandler</tspan><tspan
-           id="tspan1141"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke-width:0.26458332">()</tspan></tspan></text>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 112.92475,86.615905 V 185.54596"
-       id="path1883-6"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.53467703px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="198.12886"
-       y="91.507591"
-       id="text1881-8-26-3-9-9-6"
-       transform="scale(0.70016009,1.4282448)"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-1-9-1-8-1"
-         x="198.12886"
-         y="91.507591"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.53467703px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#cc0000;stroke-width:0.26458332">}</tspan></text>
-    <image
-       y="173.93806"
-       x="76.439537"
-       id="image1260"
-       xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAAChCAIAAAANwWdbAAAAA3NCSVQICAjb4U/gAAAgAElEQVR4 nOx9eXgV1fn/mf3OzN3X7HtCEiDIvssqgsiiLBZrpXW3qLWtVltba1fbalu7WHfcQFAWEVCQNYGw hJBAQhKy77n7vs3cubP8/hi5BsilRKH6fZ7f+/DkGebOPXPuOZ/znvd83ve8B3I4bGBYAkND3pYk aVjFQBA0+FuJC1EcXnWSyXDrk0xgGB7yPgRBl1ceACBeox+AIIh4QeRqyMLzPLjQeoMvksvQ9ZHr LH99cCGSMLz6J2tndFilXFu5vGMkSQLgv7bU/1T+K0CHhNfXFxlPEATJyJb7PoFaSZKuAlJXK9e2 NFmGDaxkzfeVm/U6dcz/QJIMjGsjgiBAEJQAliRJoigORoB8/TUxkfj6NcfWN6mxwPVE1f8ApkNW /lq9VxRFGIZlbMnFytgarMAS2LpyNa9Q+cHQlO9cq/p/6zTWt01tXfl3XdvOuHq5VppmMDT/v8Ya XsnXVa5f/RO4ke2qwQoGDKVprlDHoe9eBs2vNkiSwfGaAesrVGhIG+X/lsYCl/XHtRr3MAwnUJUo GYbhBM6+zQYWAGDotfSVazOkfIVykl38H5LrNxXKBhYAIME4JAz5yyvwleX6NT4qCMKVX3np/WEi O7GouRyICW4GXGg+URRh+Noo0a+s0q9SAw0uf/AzgiCgKCrrG57nJUmCYRhF0cFMweCvJ7ByyX2Z rwIAIAgCBtENoiiq1epYLBaNRgmCiMfjkiQZDIZgMJjklw2PLhmu4krWztfdxrqc0Esg6RJuZsgR +T+Wrz9w5RnqEi3+XxXD1Uy4iTZkGEYURQzDUBSFICgejydH1Tcm1x1YCT4mwcoM1g0yNwMASHz6 bWDev/4EkQDWYLJgyPKvgL8hjWscxxmGAQBgGMbzPIIgGIaFw2GSJJPVZZhVH97jySQpsJKOrWG+ IMHEyJJQVImRnXBZyE9K0jVC1leVr282JUpILFAuR8/l5Sd78hIjHcOwUCgkz48MwygUCoIgvnFN f7mg19tkRlE00WSDV84Yhl3X934FGXI9MdzlUmLAgEGDSiY2k61Xkt2/nAWFICgWi0EQpFAoMAyL x+OCICTG6rdKrrvGShjv8n8Tc9/gSTDxxsTNry9fZxYDQ3X2VUqCJkjM/vKPukowXVljSZLEcRyK ohiG4TiuVCp5npet2OT1/IamwuutseRV5+BFkHwt37/EFyY/cl3rc2W5Jq1xieUELmisK5R/9cY7 SZIwDMfjcZ7nKYpCUZRhGIIgrlVUxbWS696L8pAarJ8QBEksv2VgDeZsrnd9riDJtMjXKeqiiJTh TIVfXEuwJEJAgr+4AECn01CUIhoN+/1eQYijKIyiME2TycJjvikZtsa6hO8B/631EeQiW0qSZG+g BEGIJAFBkAYRaRAEIcMd08niopKZHfwwsZuM50sm8AVNLElSgosCF6Z+mYhKDCcEQSKRiCRJsVhM pVKZTKZAIOB2eRUKhcFg8Pv9FKUEAJAkiSBIPB6nKIXTaTt2/MimTZsIgpg4cXJ6evoNY8aWlpZK ksCynN/vVygUBEF6PB4gwSazgePYIeuZbAwj0LXRNVBfX8/wvgEPHaB3hS8MeXe4yinZ88lUQjJg Cdd56k/WLYONenBBVUMQxDAMTdOCIMRiMRzHMQwTBflHwSiKKhQKCIIQBA0EAi0tLe3tLfsO7GKY kCRJKIqzLOv1+ktKSr57511z5swhCLKpqUkUQWpqajAYDIeiGIYpSHxIZZas4+BrFA/3VYA1JKqS I+zaAOsKGmvwA0POQYPlmwLWYHN+MA2Bomg8HpefkZd7Ai/5/X4UxbOysiiKCIeZyspjBw8e7O/v D4cDCCpEmZDBYEBRnCCIaIQZGBhIS8u45ZZbbrttBY7jdptTVm+CIMEwgGDpGwHW8I33C49/fUPk GsrXJ5+ut8j2e8KgTLiw/H6/JEkpKSkURdntdp/PZzJa8vPzKUoRDEbffPPtiooKu92RmppqMBgY JsxxzPe+t3b16tWSCKxWa0dH1+7du0+cqHrnnfc0Gt2ypcv0en1HR4dSqcRxBQRJcT52zVZ6w5Gv yLxfKxbxGj5/lUC/3uAbbunZ2dkejycajXIcB8Ow0WgkSdLv9//znxtOnz59/vz5sWPHlpWVcRzn 9XpVKs0zv/x9Xl4Oy7KBQEivN+bnjcjKyqEpzZkzZz7e/smIopEZGRkoimMYEY0yoigQCmRYlbpW rfM/0Fj/i+Hy7ddYsqJKUFyyFQjDsMvl0ul0Go2G53mWZV0u185Pdu/cudNmc5SVlS1btoxlWZ/P N2bMGJ7nURQpKR4piILDMSAIgigCBCaKRxTfddddbrf75MmT+/fvX7t2bUZGht/vj0ajKpVSkoQh u+B6c6pfS2OBr9GX11xjXeWT35TGQhBEuiBgEM+iUCiUSqXH46murq6pqenr6xMFkJ2d/Z3v3NnW 1haJRPx+v9vtdjqdfr9//PjxDBN3u52kgqYoKhwOe71+FMWLiopJktbpDKdP10ydOm3UqFGC4KUo iqKoKBP8RjTW11pbfqs0xLeqMpfLYPfO4BUGhmHHjx9/88039+3b5/F4eJ5Xq9VTpkxZtWoVBEH9 /f0sywIA7HZ7XV1dMBjEcSwcjsIwyrIcw8QgCPL5fAzDmM3mCRMmtLe3Hz582Ov14jiu0+nC4fA3 9XuTToXJ7w/vBaI4NA+UzG86eLU4eIJLproviXNKXAw2lsGgeC9wjfy1Cb5AkiQ5guMLsoDnI5GI TBNEIhGapkmS9Pl8SqUyEAioVCqSJOWPWJY9ffr0+vXr4/F4UVGRVqvNzc09efIkiqJ1dXW7dn3a 19eXlZW1bNmyjo7OnTt33nDDDQ6HIxaLm0xmr9drMBicTpfb7Zk6dXIoFKZpGkGQtLTUjRs3rFy5 AkVRgsAlSYAgWBC+JM8gCJLdi7IbO9GwieblL/B2l9xPhodEOZfef/zxHw35wbXyFX7lfYKXVODK NsHlU/Ml/NaXfrevVpvLJAHcwW8RRVFBEF6vl+M4HMdFUYzFYjzPC4LAcRxFUWq1Oh6Psyx7/Pjx Xbt21dXVjR49GkGQpqYmhUKRnp7ucrkCgeDevXsRBA2Hw8FgEEXR5uaWKVOmhEIhSZJaW1uLi4vN ZrMoijqdTq/XCYIYCoUCgUBtbW1TU5MkCXa7bdGihV6vJxqN4jgmSV/sGxscwzO45hdh6LIGvHLL J1MQ191X+NVkWDbckA/LTsmECzJBIA2XSb/CSxMeQACAKIpyydFwWKFQaDQaGIYZhoFhWKPRUBQl SZLL5aqqqqqpqYnFYjAMZ2RkZGdnz58/n2XZX//6193d3QCA5uZmBMaUSmU0Go1GozqdzmKxFBeX fPrppz6fj+M4AEBfX58oCh6PR6/Xq1Qqq9Xq9bqPHCk/efI4juMlpSPO1tW2d7RmZGRgOMIwkUSF pUHO7MEjULo4wmfIOLDhzmzf2C6dq6no1az1kjngksV7XYu6A3BhpCZc7AmRUSWbPjiOWywWCILs dvvZs2erq6ubmprC4TBFUdOnT1+8eHFfX195ebk8hwIAGhoa3G53KBiBIMjvD6akpKSlpWVkZAAA xWIxr9ebl5fX3t7+5ptvzJ49u6CgwOfz9fX1VFVVNTQ0NDQ0MGwkJzcrNzc7JcW8fv3rP/7xjxUK BbgYUpe0KjTUtsTBH/3XFksKrGHbWFd+zxDlDPMLF7/9KhVqMghePxZXzq0gCEJilpGxSxBENBpl WVZGVTgc3rlz5/bt24uKijiOi8fjCoVCkqS+vj6v12uz2f75z38SBFFUVKRWq7u7u1UqFUUqc3Jy br55kd/vHzly5AsvvLBy5aoXX3xx165dVVVVKIo0NTVFo1Gz2RgIBJxOp9vtloCgUqsefOjeO+64 Q61SdnZ1Ll22pKS0eNWqVVJESLTA4NZI2iAXa6wrG7hXkG+dxhrymSs8nExjJcJy5JsJK/saIixB SsnbJWRgsSxrNpsVCoXNZvvwww8/++wzr9ebm5t7++23jx07dvPmzVu2bFEoFLFYbP/+/WfOnFEq lQRB9PT0eDyesrIyhUJhtznnzJnzgx/84NixY3PmzO7o6BgzZsy7777b0tKCIEgsFjMYdE6nvaOj jWEYDEeKi4vHjx/7yCOPKAicF/hYnMUJbOHCBQMDfbKz6BKNdeUmhYbSWFcAYtJyOjrahvWF4e7S kZJ8IWmFkkRPJBs0l+iqy03+S5rmWgWXyG4ZAACKoom5TJKkjLS02tra8vLytrY2u93ucrlGjBix fPny8+fPP/zww263+w9/+ENLS4scVYzjOARBWq325MmTeXl5v//97ysqKirKj9I0/eMf/1QURZl8 7+zs4jiOIAiapuW1XigUMpkNqampZWWjli5dqtdrYQiOCxyGYACIvoDPbreeOXOmuLhUSWsE4csB AC4skAe35+Dhl1jdXGK8/9f+ukS+4Z3QyeSrTWGDHx4cnQIutKYgSTAMSxCAJPA1/wo8L0EAhREE Q3EcRzAUiJIgCD/58RMej6e3t1cQBI1GYzSYVUpNjI2fb2pZvux2giCCwWBxcQmCINXV1V6P3+tz z5gxY9WqVXfddVd+fv7mzZvnz5/f2NhYVVXV1tbW1dWFIAiCIBaLhWEYnU5rt1s9XtfEiROffvrp tLQ0HEcBAH/+8wsEQRiN+jVr1mAoqlaraZoWBOnw4cMLblqUaBzpss3TQ9jp0hA3v8mpMBkCRHF4 U89wox4uilYYTDFAkASAKAhg0DIQgiARSCIAMACX/GUiEQTHSJyAMVTiBV4UYAkAGI6Gwwazyety K2gKgSCP35diMgMEjkUZglRQhEIAEoKhZ+rrqo6f2L59R2nxyNkzbxwzJuLz+RobG7VaLcfxXq+/ vPxIZmYmDAterz8jIysUCuXnF547d27zpo9iHDNx4kSCIHAcf/rpp9e/9U5/f397e2dRUZHJZLJa rSNGFAeDQUmSnE5nQX72r371s5Likamp6RzHxRj+L3/5SyTM+Hy+cCTo8wQff/yxoN9HUdTo0rKm hvPhcBhBMJPJFAwGnU6nTqejKIpl2UQIdWIEIgjyRf6tBOwuUEUQSJp6BE4yI31LNdbXlyEbQoIA kIAEgAAAkC76m5qRHovFIpFI1BdCEIQkSRTHRFHESYXX66VpGiAwLAGj0RiPxwmMlEPO/R5vc1vr kcPlJ05VkThRXFys0+k6Ojp/+9vf7tmz5+zZOgiCDQbj3/72d4qivV4fy7JFRUUKBdnX1x+LcQaD Acfx5pamm2666a9//avP52tra4MAYjAYaFoFw7DX641Goz09PYIg+Hw+BAHT7lphsZhxAu3sbM/L K9i4cVNnR7dcmXA4fOZMndvtNRqNAIj+gE+r1W7atOnuu7/v9/uDwaDFYuE4TmbUotGo3CaDGZOE wXC50hruYg750Y8eG16PDVMpDldjDde4FodlVMoU4FA/wWq1QhBEkiSO4/Lwla0ojmFRGKEUZDgc ZqOMQa836PQoigb9AZfL9ebrb1SUl/u9PpPRyLExFMGK8gvb2ztOnDhRWVlps9kYhpk9e/b48eOr q6sJgrj77rtXrlxZUFCQn5+/f/9+r9crSeLEiRPee++9I0eOtLa2ejwekqSys7MDgWAkEvF6vXfd dZdWq+vu7kZR1GjUb926ee/nux984AGz2ez1eY4fO9bZ1WE06ZUqKr8gt6Li0I2zpqemWBg2AiCh p6fnrfVv33DD2KKiIvlHRaNRt9stk7dgEL0HLqaRv2itq+BIoSSASAqs4SI0+aohWZWujSQD1pAC AQCgoYElh//yPC/vqZIkCYZhAsXyc/MkUQz4fDSttJhMKIrardZ9+/bXVFfX1NS4HI7S0pGhQCA1 NVWn0bBR9siRo9Eo43Q6KYrq6uoaP358amoqwzCZmZkKhUKlUjmdzoGBgTlz5vT39wMg1dbWjLmh rKKiAsMwi8Wi0WhGFBXX1NT4/QGNRrN8+fK77rrrs8/2WK1WAADLRjUasrr6HMcFF9x0U4yLB0OB 995/F4IknufOnK0xmYyPPvpIIOgRRO7pp58yGA1eb6ClpbWkpEQURavVmpKSIht/DMMkiJJE2MVg yvcSucIqckhBHnvs0avvmCuVlESGHZVzXTUWABIAkDTEP7PRxEaZaDgCQxBJKCAAmEg0FAqhEByN RDLS0hUKRU9X9+eff/7WG2+Wlx/Ozszq7u6+ZeGiRx55pPLIUYfDPqKwyGxJqampdblcCoXCarUa jcYVK1Z88sknu3fvdrlc1dXV7e3t9913H8/zmzZtcrvdN9ww5o9//MOsWTcWFhW+9957Xq8XANDb 02cwGARBtNlsdrt94sSJy5Ytz8jIOH78+O//8Nz8+TeOGJHj8/lunDWTi8fGjR2XmZm5YcP7Pp9P q1Xv3rUTQEJ/f+9f//ri2bNnfD4frVR/9umejIyMG264wWw2Z2ZmhkIhq9UqL0gTqEqQyZcD67+s CpP0C9Te3jp0hyUxopPRDcmN9yRvTiLD5UuGG2qcrP7yxgd5x7psxuI4TmB4PBZjIlGKojZv3lxf X49hWGdn5+jRozUajc1mo2l6zJgxe/bscTqdo0aNGj16THNLW3l5hVqtNhgMa9euFQRh165d+/fv z8jIKCgoCIfDBEE0NzcXFBSsXbs2Pz9v9+6dp2tOPfTQQy+//HJXV1dKSoqSVttsNo1GJyvOP/zh D9Eoc+LEiTNnztBK/J//+IsEuGef/TWKoi/+5W8AwFycwzHc5/dpNJqqqqqNH7x//HjlkiVLfvaz JzEMP3HizJEjlSkpKYsWLSJJMhqN0jQNAOjs7ASDctokWjgBrKukG5KFMn9LfYVXL8Otf7KnZesq Ho/LG9h1Op1CoRB5YfvWbUCUfD5fOByeNmUqy7Iuh/NcXX1ubq7RaDx79mz5ocMajSYUCtmttmnT ZsyaNQvHCaVSOWfOnHg83tra+vjjj8vxn06nk+f57u5ui8Wi1Wrb2tpqa2scDlt1dTUMw/39/UuX Lj1x4oTBYFCpVIIg8Tzf2tra1tZG00oYhs1m8zvvvHXLovm3Llk4c+asV/7zGgCwKAGeFxkmdPp0 7fr165uamsaNu+GRdY8vXLSA4wQUQaZPnz5jxo0Mw9AUDQAQBEGtViMwkpj+Bk+Il3t4oKGyBFxN e37rVoXD1VjX8L3yFkiKosxmsyAIn3766YebNo/IL0gxW7q6uh588MGysrLnn3+eJEmFQiGKYmNj o8fjkb/r8Xi0Wm1VVZVeZ+zq6mpvbx8/frzFYsnJyTl58mQ8HpddyKmpqQ899FBqaurf//73QCAA QYAgsHHjxomiuHv3brPZvH379md/9ZxSqdTpDBiGjRkzZsuWLSUlpU8++WR5efmePZ+9+MLfly9f HmMFh8NVcaTy+PHjoVCoo6OjsrIyHo8XFhY+9dQvaJrau2e/SqVatXK1BGAAAE3RXp8XgiCT0QQA CEfCsh5KuCLkxQp08V66q3QXDilo0ilvmMx7ckAMr1rDrQ9IwtQnQo44jpPzHdA0LVM4AACKonie J0lSDvzVarU8z5sMRpZlHQ7HG6+9fvbs2Y6ODhSGx60aZzIYBUGw2+2CIJw4ccJkMkmSdODAgczM TL/fj+O4HDq8atWqiqOVu3Z+GgyH4/F4JBLZtm1bIBCAICg7O7uxsTEtLe2jjz7Ccfz9998fNWqU zWYjSQUMg4KCgnXr1un1ep7nCwoKaJoeOXKkJEFer7e1tTUYDM6YMbOxsTE9Pf2ll1765TM/nzxp RiAQ8Hq9d333+wqFQqmkBEGwDjgVCnzVyjVFhaW9vb3Llq40GAwAAF7gYBj+17/+ZTQav3vndwEA bIyVJMlgMLS3twMAjEYjx3EMw8jeT9lvfaFpoUv+DtEvg54cfIE8+ugjV9fjibcN7/HrbbyDi39w 4uvy+k5uKa1Wq1AoIpGI0+mUE5eJouhwOORAPLPZrNPpCIKorq7evXv3nj17bDZbKBSKRqMGvb61 pZWPxw0Gw6uvvvrGG2+gKJqbmwtBkNwZJEmSJPnkk09aLJb58+er1JrW9nYEQc1mc09Pz5w5c8aO HUsQxLRp0/x+f29vb1ZWVmFh4X/+85/KysoztbUzZ86EYchg1AcCgcrKypMnT3Z1dblcbp/PF4tx EARhGJaZmdnV1f3GG28wDLNw4cLDB8tNJovX6x+w2m5dvNRsMR85UkmSZGlp6YoVq0ePLstIz7ZY TBRJMQyPoTAvCM8//8f9+/erVCqdXmc0GXEMlwnSQCAQi8VkYlbW1jIlAYYCUzJgfUmiXowt5JFH 1g2rg4dLNwwXiV8NWJfbARRFyYxULBYLh8PxeJymaZPJhCCIbOtkZmZSFJWamorj+J49e7Zu3fqv f/1LEISysrI777yzqKiIZdlIODzQ3x8MBSEY7ujsSEtP1+l1doc9v6AAxTC1Rs0LfDgSnjV7lsPp TE1LEwSxq6sbw/Bf/epXubm5NpvtyJEjfX19zc3NTzzxxMmTJw8dOlRbW1tfX09RlMPhKC4eQVGk 2+MaGBjYu3evvGqrq6tnGKa/f0ClUslU+MCAdenSpcuXL9+1axeKYP39VrPZIvC83x9oaWlNS09d smTpk0/+bPny5Xm5BRoNLbcAhsFtbd0/ffLHO3d+smzZsjvuuEOpVFIUhSKoglAAAFiWjUQiMnvH 87zsjrwcQFeeCqGLn0lc/J+3saTLHkisbliWlXOzKJVKCIIYhgkEAhiGFRYWhkIhWW/t379/7969 ra2tbrc7PT192rRpKIqWlpYCAHiez8nJqa+vh1EkciaCYCjLspXHKqdOmfq9tXc77Y6fPPFTHMVg FGFZdvntt/32ud+wsbjL5XnggQd7enp27drlcrn+9Kc/8Tz/yCOPrF69Wu653t7e4uLitrY2pVJ5 4MCBe+75foyjHA7HqFGjfve731mt1s2bPorFYtnZ2RzHKRQKvV7f2dnFsqzJZFq8ePHRisru7m4M w+RwU6VS+cQTT9xzz/cHN4fV6lKpNEolHggECgoKRo0qXb16dUZGBgAARVCvz6tUKlEUtVgs0Wg0 FArJKQIhCJKXL3JJQ4ZqXaH9LxGoublpyA+uFd1wvW0s6eLF8OCpUE6mKIoix3GiKMphCDqNBsdx q9Xa2dn58ccfNzc3IwhiMpkcDkdBQcHy5cs3btwYjUZhGOY4DsMwhUIRi8fZaNTl8eAoumDhwgnj xr25fv3Pn3rq8Z/8ROT59MxMGIBgONzc1KTTGkaPHjN58hSaptete2D69NkAgNzc3JkzZwqCsG3b tlAoxPO8SqUSBAHDMLvdplLRi265ubq62mw2L1q06KWXXopzQnZ2ts3myMjIkCOuWDaWlpYGQZBC oejvHcAwLCXFLEliXn6Oy+VQKqk333zT4/EgCKLV6iUJSCKAYRCPA1EUAcLjGAoAkPkIGIIj0QhF URzHETjR29fb0dEhSRKGYTAMq9VqOV0guEwJJdNbMt0whI21bt0Ph9Ht4CuEsF9nYF32TMIvkVhR y74/jUaj1Wr7enuPHTv2wgsvHD58ePr06ffff7/sjhUEweVyaTQap9PZ2NjodrsxDGMYZuTo0S6P OxqNmlMsEydOGjP2hmAw1NreNn36jAOHDqalpXf1dHs8XgVFzpkzR63VxtgYz/P5+fkbNnwgB2bN nTuXoigIgubPn9/X19fW1pabm7t169YFCxaUlZXt3buns7Pj9OnTHo/H5/P19PQUFhSFw2GWjXm9 Xjm0QalU2u12AMD48eOXLlnS3t4Wj3NcnO3u7sQJuKbmtNlsnDRxAhePEYRCkqQ4zwMJicViMAwB SEQRRBAFiqQgCOLiHKkgZacyAiMIikQikUTuySu0fzIZ3LuDwXfdoxv+ZzTZJWaWvDeG5/mUlJTM zEyGYWpqampra8sPHWpubh43btyCBQtSU1OLi4vb29vr6+sBABqNpqKiIhqN5uXleTyeeDy+aPHi iZMndfR2owzmcLvqP6rPLy66fdnyls723/7+dwKQ7E6H1qDPy865beWKZbcueeqpn+///IDd7ggG g2q1WhCEm2++Wd4A+MEHHyxevHj69OkOh0MQBLWabGiwVVZW9vT0RCLBgsJCGYUTJ04M+EM2my0z M/vs2bMkSQqCkJaWnpubu27durKyshSz+Wxdze7dO41GfWdX++w5a0Mh/9M/f+I7d6zECdjnd3s8 3syMbBTDlBjB8yKCojGO8fv9RqMRgREURQEAUSZKkZQEJAzDTCaTvHAWRVHmb8GgefC/T4iX0afX 2Hi/wpuH9fTXMd4HiyiKZrM5PT2d5/na2trP9+05fuxET1cXiuC9vX2TJk7S6rQHDx7s7Ow8dOjQ wMCATqcLBoMZGRkWi+VIRWVJcelTTz09e85cAMGQBO3cuYvAiPnzb7JZB7Zu3X7o4AG3252Rlm4w GLIyM1mW/eXPn4EA1N3T8+muPRRJOhwOiqJ+/OPHjx8/vnv3LrVaff/997322qs33jgzHA6fOlXN cbzVat2xY4dWq7akmFUqFUVRCIL09fXFWA4AIElienra1KnTZs2atWbNGrfb7Xa73n33XafDeccd qw8dOujzebU69b333kPRirq6Mx2d7QBAmzdvrqiomDV7loJQ+P0BklSEoyGKpJS0kudFBEEhCBYl CcNwCMAMw0IQTBA4wzAsywpCPBIJkyR1oV2vaiqEkjyTdCpMBFFcIgCCAYDkf5IEJAnIGzCT/Usm QxaecLBfLtFoVJ7UZJeLJEmxWIxhGJKgRF6MsTFKQREERuC4giAwFDXotcGA/1jl0R0fb3/3nbdR BMrPy2tpadVpDPPm3uTz+urq6pgo6/V4QsEgjqGtba0FBYW4QuH2+PILi2bMvPHI0WO3Ll7i9Xhh CPH7AqUlpaerawb6+7s6e4oKC+fNnR8KhnRarcDz6Wnpb7+9ftu2bUwDztwAACAASURBVC6n26DV a9S61taWX/7ymZ07d5gtBhgBp2tOfveu72zZ8lFBYZ7H4+np6Q0EgqeqTqelpdI0mZaeiiCI2+32 eDyxWEwQ+DVrvoNh6KuvvWI0GhkmGomET52qqq4+RdNUU2Nz9anTkQij0apRFEYQFMfw0pGlGzd+ 8Prr79vtA/n5BWlp6RkZmQoFybIsTVECz0MARhE0xvJAglAEhgAUDrFKmoQhBEgAx7BQKMAwUY1a HeNickBKIn9JgqBPzAkX9dGg+4O7FWpsPJcMWEMjAkYSBV5yMSz5Cgy7bAnJ+QFls5ogCCDBEASh KMpxHBuLygvAcDhcX19/8OD+xsZGlUo1bdq0JUsWIwi2Zcu2utrG/NyCpqaGfms/iqIqNR0M+m0O 66RJkyZNmbZv3wEcx90uX2pq6po1301PT/98z6der7e5uZkkSUkSQ6GQx+P55JNPJEl46qmnAkFf YWEhBEFerxeG4XAo6vWECILIys7Acezmm28qKS3cs2fPP/7x92nTpk2YMEGvN4eCkbq6c1VVp2hK ZTab1RoyGPJDEGQ2m7u7u0eNGjV//vySkpJgMGi326uqqlpbW+PxOI7jcoYjnyeQn59/7ly92+PM zc1Ua5QZGemiyA9Y+3Q6nZJW33//g2PKbgiFIgiCoSiKojDP8zCMAgALvITjCASBUIhTqfAvdu9C wOm02x0DLBvt7OxMSc2AICQR93d5PNalmkwa4ia4gsZKznRflEvzmntakhUYCoXklTCO4zJHJUkS x3EIgrpcLjnmBMeI3t6+o0cqt27d8vLLL0ci0cLCIoWC1Gp1wWCws7O76mQ1jhG1Z84CCCYInGUZ r9+bm587enTZ88//SUGSjY1Nza0tAIL1BgNOELs/3X3y5EkgSSRJMgyj0+kEQSAIYuHChZs3b6qp qQFAysvLwzBMrVbb7fb2tg6zxaLRaLu6O30+78qVK15++V+9vb0LFtyk0WgKCgqsVjtBKNasuXPf vn00pUQxWJIEh8Ou1WoXLVoEAJg6dWppaenhw4e7u7u3bNkSi8UAAOFw2GQy8TzPMKySVqpUKhRF BZH3et2Vx06sWLF83bofBvzBs2frJAm67bbbcByHAExRNIIgECQ3KSSKEgRgFIUAABiGsCzPMIyC xAEAPB+3260kqdBq9fE4D13o4oSZlTjDZ4hQrWQE6RWmwqF7/rIMetdWYyUTWUXJW9djsRjLsnI8 AsfFMzMzDQZDb2/vhg0b3nvvvXA4HI0w2dk5Vquts7MLQ/HsrJzamrM+nx9F8YA/1NXZM2Xy1GA4 RCiIkpKStXevBTBEK5Wd3V1p6Rler3dEUTGtVlVWHu/v6zMZDRq1mud5s9ms1+ui0ajZbH733Xdv uWXRnDlzAJBcLpdMOEUikcWLb9248T2b3XHixPFoNNzQ0MAL/IwZ0ydOnJCXl7dv3wGPx9vY1JCT nadUKoOhIIZhfr+X42Imk+nZZ58NhUI4ju/YsaOqqqqjo0PekgoukL0+ny87KycSjrIsCyOAYSIM w46fMObnP3/abDY9/vjjEATBMHLo0KHOzq55c+d6vV6SpACQ18UogsDiF2cgAgAAisIKBR5lWJ6P KZVUNBpxu12RSBRBUNlw+iIjAQDyynRw2suL4PAFKC6zsX74w4eH1/HXWWMlk1AoJDN4BEEQBEGS pPILUdlstl//+te///3v+/r6pk2btm7doyqVmmFYBEH9/gCG4QBAzc0tBQWF48aNP3781OJbFy9Z uiTGc/6Av+ZMTcnIkoampvvuv8/hdtU3NJyurQlHola7LScnd9So0SLPowgCAJD3/cXj8ddff/0X v/jZhAnjMzIyP/98b0tLC0VRgiAgCPKzJ5/S63Uajf7MmVq1WmW32wsK8hcsuGnPnr3vvfd+enr6 P/7xT0EQPv74k6VLl27duq27u+v55/84Z+7s5cuXv/baaz6fb8uWLdFoVGbDzWZzPB5nGEbmvViW pWmlwAuRSIQg8JQUSygUYtnooUOH/vznvyxfvkwURZaNNTU1NTc3L1u2zGyyQBAQBInj4vLuNJ4X GJYVeMDzgt8foJUkhqGhUFBBEizLQBCIRhlJAhAEQ4MSWw4+i/pygZOEmyYF1tVrLPCV4DVcGysl JSUej4fDYRiGtVotQRBut7u9vf3ZZ39dXl5+4MABSZJuu+22qVOnms2WU6dOnTt3LiUlRaEgOY4L hyM0rcQwvLennySpF1988cOtWyZNmvjCC3/Jzc8zWUwrV6589PHH3nnnHavVlpWVlZ6RQdO0Xmfo 7enJTE+PsaychSEe5wiCMJlMhYUjqqqq3n///Z07P4lGoxkZGRiGeb3egD/Y3t7V1taemppaV1ev VqsyMtIJQjF37pyJEyfv2rW7q6srEmYEQTQYDIcPl5vNplOnqgwGfUdHx44dO7xeb2ZmZjgc1ul0 MAzL6UPkZO4sy9I0HQj4NRoNzwssy2g06lgs1tjQODDQP2PG9Hnz5h8+XO50OhctWlRdXc0wzE03 LWAYBse/OMgJhmEAIIWCwHEEwxGKJm02qyAINE2hCMLFOYvFHI/zgUBQ3tyUwJYMLOHiPSlfXgNo yAhm5OGHHxpWB4MLWXX/x0orHo8rlcq0tDSdTuf1eisrK7ds2bJ161YcJ+RzsAiCsFhSz59vrqqq crlcPC+4XG6BlyAAOxzOjIxMmlbOnz8/Kzd3RHGxTqfzej0wCmdmZnq9no2bN/p8PhiGi0YUUxTl dnskSWJiMZIkA16vJIowDPv9frkOHR0dMAxv3bqloaEBgoHf72dZVpKkSCRSfriira391Kkqn88n iiLDREVRKisbc+rUKafD3drSlp2dM2LEiLFjxxkMhry8vKNHj6IoUn+urqamxmw2FxQUCILAMIzJ ZJJnIllPeL3eeDxusVhIkuzvG9DrdTiOQxDIz88Ph0OSJHZ397jd7kmTJoZCoUmTJuE4EQqFZs26 Ua3WAADJfmVBEFAUgWEIAGC32xkm2th4bmCgP87HzCYTRVE8L1RWVqIYBsOIfPzTF+u7oeK0wAUY wRdPgl8a7/9XpkKCIPR6fTgc3rp16+9+97sdO3ZYLJbVq1dr1FqKooxGY3d3N44THo+np6cnJSWF 54VgMKjVagIBf3//wNKlS7Ozs7/73e/u27/v44+3l5WNjDLhHTu3oyhSU1PNi/GRI0snTpxktVuj UcZsthgMejlBtMBxTDQaCoWMRqPRaNBoNM3NzVardWCgPycnZ+q0KTabTWZTzWazJIlajVapVPX0 9Oh0OqfTEYvFOI5rb++gaTonJ+emm24aOXLkxo0fnD17dsmSJRzHtrSe93g8DMOUlJQIggDDsF6v d7vdCILIOWpwHNfr9TiOsywbj8dhCJGjEjguZjQa6+vr8vMLbHbro48+ShDESy/9G0XhtLQ0i8Wy YMECBIYl6cutXXJ0aHNz8yeffLx27d3pGamZWRnd3d1arUalVkmS1N/fL4hAPvlCNtgvAdblthQM DR1xmlRjJUIKE3e+MNWT7axKgjAMwxJLVpksiMfj8XhcPl5Brr0cfx0KhTAMk3cphUKhRGyQ0WhU KBQMw/ztb3975plnduzYEQwG58yZc9NNN917z73vvPNuNBqVM9+dP9/M8zxBEDk5OefPN8Ew9Mwz v6irO9vV1SkBMSc3+9y5eovZuO6HD7+5/vUVK5a/9dZrzc1NKAa9+MJfnnv2uaLioiMVR2fMmFlT e8blcoVDEZ6Lx5ioxWyGIMjhcEAQcLlccnSXKAo2m+0Pf/z9uHHjTCaTIAgdHR2iKEoSoGmKpimV SimKAEHQSCQaCoXvuefe4uKSDRs2btu2ff78uT6f9+jRI8uWLdu06YO1a9eOGjWqtrbWYDDAMBwM BuWTJmAYlsMN5P0d8Xic4zglTZvNplAoCACQ9762tbWbzeZDBw+Hw6GFCxc4HM6+vl4URRAE3rRp U2Xl8VmzZgEAIpEIjqMsyxw8eOClf/yts7Nn8eKF8+bNHT9+PE3Toii6XC4AgEark/PkMAzD8zw0 6OgQMGip+CVfBaDBNxMf/ReXztfXTPJhkOBCRKI8dAAAarX6Ah8oyB5Z2TCnabqvr4+m6aysLEmS AoFAZ2fniRMnPv74YxiG5YhhBEEMBkNHR8cDDz7Q1tYmLxg5jsvMzOR5fsyYMR0dbePGjZs2bcov f/mLP//5zxzHZmaml5WNvu++e37y08dDYU88Fjpdc6IgLzsvLzszKx1GpD//5Y93rV1bNrI0HA6S hIJSKn1uv0qlisFQX19fPB6nKEqmPBQKRV9fH46jHR0db7zxxoQJE8aNG+f3+x0Oh9PpxAk0GAzK VU1NTbXb7XKcU0FBwXPPPWcymSorK81m86xZs954441INGQ0Gj0eD0mSspLw+/3yQSayxpJza8mh B/KJHj6fT24l+dQTl8sFw7DL5dHpdEuXLO/u7q6trTUY9Cwb3bBhw4033piRntvXN5CWlqJUKgEQ ASTOnTe7uKRQr9dnZWXJ2xUVCsXnn3++d+/elStXabT6eDye6KmEIxW+cFZNsrBS6eIkIkk1VjJU DTceKxH8Kuu/hFqWgw40Go08XMCFw1EwDNPpdIWFhV6v99NPP926dWtFRYXP5xs7dmx6erpOp3O5 XKFQSKFQ9Pb2+ny+4uISm80Bw4goShAkpaRYvv/9tQtunq9QKGAEBIJ+CAKxWHTGjGmlI0ds//ij psazZouupKToyJGDRr12zZpVEBDff3+Dx+MJh8KZ6ZlvvvFmKBCmlUrbgFVJ0+1tbUqalmO5IAgi CEKlUg0MDGAYunjx4jlzZ5eWlk6dOnXhzQuXLl1qsVjKy8sZNmo2m6wDNpKkMAwLBkOCIE6ePHn0 6DKdTnf8+PH+/r6e3i6LxexwOBoaGux2++rVq3t6etra2uTMbDabTaPRSBe2ZIELZBIEQQoC4/l4 IOAXBNFkMtG0KiMj0+Nx8zz/5ptvFBUVzZ07p62tzWDQB4OB7OycdT98ND09g+NiOI4DIGEYStOU xWIy6PUsy8AwVF5++Fe/era9vX3KlKkEQaAoJneZjGP44lNLh5oKk6wKH3rowWTAGhpeV0zOMaQk apOYWyEIcrlccgSmPCBompYnRNmQ2r9//4svvlhZWclxXHZ29iOPPJKamtrQ0CB/2tPTE4/Hu7q6 gASnpWX09vbKgS5qtSoQCFSfrrr55ptfeeXfHR3t48ff0N3TYbUNlJSM2LP3MyBx48eXnW+qQ1Fw 53dWr737e8VFIxqbzu3dswdDkcb6hhnTpkcibCQchUQYgTEuFh8zarRerwsGg6mpqeFw6PDhw36/ f8KECZs3b1q79nvFxcUGg0GSJC7OqVXqESNGLFp089tvr9fp9Cq1sq9vIBKJyKsNSZLq6+v9ft/Y sWNisRihwDEMmT592rp1j2zevLmmpuYXv/jF+++/n52dHYvF0tLS5H1/cu/KprRsyzvsdgiCKIri +bjPF/T5fMuWLZswYWJjYxNJknfcsdrldn700XaPxzG6bORHH340YsRIiiJJkgRADIb8CgUBQRIX 5yLRyAcffPDWW291d3eXl1f4/f41a9bk5uYGgqFLoJzo3CFjAC/ZsPql8X4FjQUGzZqDvzrkk0nP ZrkQpX+JuUZRlFKpVKlUsk1KUZScsuyDDz7Yvn377t276+rqAAAajSY1NXXKlCl79+4tLy+XfYUc x6WlpRmNRqvVNnLkqHicf+yxx/R6/ZkztRzHjRxZKh9dBCOg+nQVSeI9PV3lFQdKSosWLpzvc1sh iG9taXrg/ntgWGxqbhw1srShvr67q0elUns9vmVLl+3e+ZnH5ZkwfgKB4T6fV6NVDwwMNDU1uVzO 22677YUXXnjqqZ+iKCZJgI0x8niIx+N+v1+pVKIoUltbe+pUNc/zJcUjYRiGILivd6CrsxuGofT0 9EgknJube8cdq8Ph0H/+8x+lUnXvvffu2rWL47gRI0Y0NTXpdLpIJCKriktMHABATnYWocBQFON5 3u8Pchy35NZlI0eW/vWvf6Vp6uTJE8dPHHvqqScMBn1zy/mFNy9SKrWxWFwQeBzHMByFIai9o63y 2JGXXvr7B5s2qjWqu+9e6/cH+vv7TSYTQRBy4I148aF/V4hxSLoTergaS0pSUDJgXbIBMgEyOU4D wzCtVpuSktLT07N+/frXX3+9p6cnKytr7ty5JEm63e78/Hwcx1955ZWGhoYpU6bINiaKol1dXTqd buqUabNnzwmFwmlpaevWPbx169YRxYWBgG/bti17PtudnpHy2Z5d37v7u9WnT06fPm3Z8sUL58/v 6m5e/9Zrvb3dY8eOTk2x/PGPf5gyeVJuTs5HH36YlpqhIBQLb77FYXMRhAJFMKvNxjBRm82qVqvz 8vLUatXtt98+ffp0gsAJAkNRBMMxm80WZaJqtRpFUQxDSAVpMOoOH67weQOSBPLy8h//0U/Gjh27 f/9+vc4wddrU9PQMs9n04588NnXq1AUL5v/qV79esGBBOBwuKioqLCysrq4GF6h2AEDCzJKNHhxH eT7mcrkEXjQajRCEOByOxoamjRs+KCwqiMW4vr6+zMz0hx56yOtznTt37sSJk/fe+yCOY9EoiyBQ R2f7/v1717/95j/+8fe6urNOZ/gnP3l05YoVO3bsPHz4qM02cPfddwuCKM8hg3OJXYFugMClk+NV AWsIM2uYGgsMUqSJNMYIgmi1WnmXVXV19ebNm1977bWenp6lS5fec889DQ0NNputrKxMkqSzZ8/K G4KVSqXJZDp16lR3d/eaNWvUavWhQ4cGBqyTJk3RarUMwzz88A/vuecHjz32aGlpyb79ezdsfPdo ZYXJZMRxtKR0xD33rh1dMjIU9Walp2zfutnl5KIR1+233UaSCpPJGOO448eO+zx+IEIDA/b2ti5J AH5/AMOwnNxsBUnQNN3Z2enz+e69996CghyOE2KxGMfFCRxXqVRKWikBCUEQGILCkTAEgZqaM0pa ZTAYw+GI2+W59dalH320xel0TJs29bPPPpsyZXJhYf68efPGjr1h165PGYaJx+OffPLJ9OnTnU6n zWbTarXQoA3Kg2xTSKWkRVHkuLjf76+qqnY4HIFAkCAIu91hNpsAkAAQWZaxWEwajWbnJ7tuvXV5 SkqK3e6oqDj86quv7Nq1MxwOiaKQlZX129/+csaMmeUV5TU1ZyZOHH/8+PGAPzRp8iTpQoa6BFwG d+4lZlZSgvS/aixw6VQoDRliNTSwJFgQxASuEBhFUBiBMQSBVSrViRMn/vWvf33wwQctLS1Wq9Vg MKxevXrChHFtba3NzedpWhkOh8+dOyenXYyxcafLccMNNxAkOWH8+OLS0jO1tS6Xs7BwhG1gICM9 /fTpqmDAg+NwRfmhrq5Wp9P20EP3iwLX29vl9bqMBh1JK06eqHTYrKNGjty//2i/rS8aCt+2YmXA Hzp9+kxVVXVckDwud2paelXVCRFIKRZzQWGew2HvHxjw+XyBgN9oNM6YMY3nBYvFiOMYjmOCKMhh 9bIa9gcCTU3nP/74k2AwCAA0MGA1mUzlhytompo4ccKJk8eKigqVSuqu790JgPS73/3m8OHDEyZM sqSm+r2B7u6uOCfk5uV43D4MQ/m4KAERgTEcxzCUgGAgiRDP8wP9Aw6H3efzIwgWj/NFRUUQDGia MhpNEAQYJqpS0WfPnp02bdrs2XMGBmxnzjSwTPz111976aWXqqqqR44sffTRH82bN//Bhx7Myspu ONdUc7q2vLxixoyZLMvW159buWpVYsWQ6P3B6bvBxXb6Jcb7lzbWAw/cLyWRIUOyeIGXySyej8fj HM/HIQhGUVR2+yMwJrvHSZKCISQaZZWUkqaUXIzTqDUUSSlpWqfRHz506Le/+V1rSysTjdAU5XK6 LGZzisXS09318Y7tHR3t4XBIpVJ5/QGvzxcIhhUk1d3Vfcedd5IU/eDDD//73//W6LQut2PRLYue efrp800NtWdO3X7bkhf/+qLHPVBSWvi9793x8r9fGju2bPr0qd/5zg/7eluUSnLevLn79nxusVjM lrSzZ2tJip48+cZJk6dbUrIzMnP6+m27Py3/ywt/WPWdFbcuvaX2bJU/6GzvaIUgKMZwBI6rVHR3 d1debrZapczNzYaABAEpxrIsw5CkAgJSbc3pN9586523N5ytb6BolVKtjrIMBENGs/GjrR+++Le/ bNu+NcqEly5besea1dWnT/X2940oKb7ttpWt7R0dHV2hcLiwqPjvf/9bQ1NzR2cnhuAwDKMwptFo +vuskigiEGodGGC5mF5vDIXDBEFSNK3WaAAAUTZC0XR7R6slxSyKktPlPF1Te/ToMZVa29zUtn// gaNHjxn0pmAw5PMFGhvPU6SKicZsNntvb9/48RMWLVqUk5Nz55131p+ri3P8yNLSUDCkIIgYy4qC IPB8akpKJByWRBFIEpC+sIcgAF1CYg2+QB588IH/rqUG3ZSAAMMQDH8ZrCMrsFgsFovFIADL0bR+ v1+SIIPBEAwEIQgyGAwYhjld9n379v31ry9u2rRp1apVeXk52dnZOTlZMIxUVZ0wGk0ZGek7Pvm4 pLSYIqnTp2uaW1o5jhcEwWxO0Wi1kiQWFBSMGj2yuLioo6Od49iOtpbVK29PSzGcqT01Zcr4T3dv Ky7OgyGhuDi/ID8PSPFwKJCRrtnxcaXT3mU2mm+6aYFWoy0qGjHmhgkPPvjw3Lk34QQVibI6rcHu cMCw8NxvnovH46NGldJKxdbtm3Nyc7zugIKgYxwj58f2+32jRo0qLh4BAJCAgGMESZKVlZV//OMf X3311abGJopSxXlBQSgkUQpHwgiCoCjMcTGdTlNYWHDs+NGa2tORSGjhwoU33jjTbLZs3PRRwB+C YPj119/49bPPulyempqa/v6B7MwshmEtZnNfbz8AwO8LsCxrMOpbWtoIQqHV6rxeL0VROTk5Rysr TCZTlIlYLBYcxziOI0kqEAj29vZJEmS3OgThi7zRY8bcQODEmDFjs7Ky9Hr9hAmT5s6dO2rU6KLC EWmp6SSlSE1NPXq0Uvbty1npY7EYRVEtLS0qlQq6TC7RXoMvkAceuH9IYF2CsEE2lgTDMIKggxKp f3E0A03TQIL8fj8AwGKxaDTaWIzJzEz3+dzhcHDHju1/+tPz27dv6+vrnTt3zs9+9iQEScePH9Pq 1LFYzOmyAwkEgj4JgLaODqvNMWC15ucV3H77CqVSeeRIhSgKCALl5Wc3NzeWFhdhOEop8LN11aeq jra21hUUZi+65abbbr91xyfbms7XDwz0LVt2qyDwPp9/ypQp//jHy6FgXKdV5ebkymk8dTqD2WTy +QLBgD8QDOu0WoqkTp44YXfY582bFwj66uvr29pbHQ43hpAwhFEkzfNxCILq6s6azeaJEyepVGqe 548dO/H883/6z39e6erqVipVKpWGpCgcwzEUFQVeEkUEhnEMVdHKysoj9/zgB1u3fNTV0fnwgw+O KStrb207UXXqtttvX7hoodliijKRcCj49tvreT7udDpwDM3Pz2ttbQ4GA6FwUKvTcPEYy7IoBkci 4fHjx928cMGcubPNZlNXVxfHcRAEqdVqt9sDAJSWlg7DSDTKBPyhlBQzimIQBM2YOXXkqNIlS26d N39uWdmoWbNmxeOxQCDAcZxSqQyFQs0t58eMGdPT3etyuUpLS+UE4D6fLyMjw2QyJXbvDJZLFvuD sXVVzPtg7QUNSj+cOEZEkiStVhsKhSCApKSkyMl9URTPzc09eGDv5/v2DAwM9Pb2Dlj7M7NScRwH EN/d3Xm2rvbAwX133XWXKPElJSX19fUujzPMRI1G85w5czLSs5xO58yZMwOBgMGg0+l03Z3tmzY4 UQQEfU6FAt+373N/wD1xzZKJE8dPmz4FRQgYtUycVLZx45aDhyrdHofP51ertGq1YeHNM71e38qV q0eMKE5LT/G6nQzD9vX1BUNRs9kMS8Dj9RQWFi5atOitt9+yWq1uj1M+2w3DSJ1W19LcpVQqI5GI Sk3TtOrTT/eMHTtWEKTW1ubGxvMej0uj0VGUAoIQ2QdCkgqZ7EUQhOc5lhWVKsrZ4Ozt7Z08eXJF RQUEQUajsaysbNrMGzd98OGBA4fkk3M6OzuzsrLC4bAccHbw4EHrwMATTzwhx/2lpqb29/dOmjLx 1ltv9fv95883ytm2Vq9evXXrVpfLRVGUfMKK3eYMBkOFBSM8Ho8o8rl52c8888wrr7xiNGrXrv2u TI/9+9//PH78eCwWmzx58qpVqwoKClJSUowG48yZM999912/30/TNARBqampbW1tsVjMYrFcAScJ uitxcbUaK3EBwZAoioIgyiHCAAB5WpQXbnIovnxiwpEjR3/zm+c2bnynsLAgNzcnNzeHpqlQKBgO h5RK5fr1b1VVVZnN5pKSEnnbk+yGU+v0oggW37rkwMGD9993v81mpRREX28vEw1SJIGhsNtlq6qq 6e9rGz26eMVti7u6m/0++8iRIyiKdNj79DpN+eF9MCyePHniR4/9lI/Hyw+X33vPvese/VF2RrYk igP9Pc3N50OhCI7jkAQDCPj9wWAgkJqWNnp0mdU6sGvnzp7env7+fgVBQABREMpImJVTMFjMKePH TYiEo6Fw6Fx946nqUw67y2gy6rSGaDTKRGM0TUUiUQiSZOsTRb/I5IZiiEaj6evrueWWW1pbW9va WjMyMo4dO/b5/v2nT9fMmDkTQRCXy3XLoluampr0ej2GYc2NTThBWMzmuro6OWrF7XbPmzf3Jz/9 0bZtW10u53333bto0aK33npz1qwb29s7wuGwgqBkAzcSYSAI1un0oVAQx2CzxcCwEYvF9MAD92vU ap/f++6775w5WxsOh6JRxmazdXd3p6WlpaamoSgWCoVqamrkhkDmFQAAIABJREFUAB6WZeVIQ5PJ lNjIerlyuuSm/HfYGgt84U7+MrYQghAIgtLS0jQajZJWu93uLVu27Ny5s6GhiWEiP//5Tx599IcV FRWtra0AALvdbrfbA4Gg7Lo3mUyvvfqGHG28csXq07U1jS2tap02Fovdfffder2+rq7u0KED3d3t 4VAQhkSDQTuypOi53/xy/LgxOoNh5Ypbjx0/PWFi4b333VNesZ+iqNKRJXPmzn71lf1ZWcF9n39G ENT48WMJgrT29Z46VYuisEZLqVQqmtbAMByNMIIgkKQyHo831NfnFxbOmDHjhRdeyCvIpWl6ypRJ 7W09n+85kpdbjOO4VquVJEmtVpeVlXV3d4dCYbMpRaVSS5LI87ySVvMEH40wECzBMIxhGIZhJEmS FBGNRmOxmFarlrNRAgDkHJAMw6SnpK5e9R0AIy6Xq7m5+djRyhUrVrzwwgtarfbGWbNaW1vVanUw GHzggQeMRuMjjzxyxx13vPTSS9NnTFu0aNHp6hr5GIFoNOpw2JhoDMeYaJQNBsMkSUIQ7HS6eF5k mGBFxaFDh/Y3NzenWEydXR0AADmyyGQyGfSmSCRy/vz57u7unJwcn88XCoVisdiGDRvGjh2bm5vb 3d3NsiyKXpruKuEZHMyjDnYXIvfff9+VsXWp6oLk84kQDMPkKCgUxRAEycjI8Hg8+/btf/XVVz/8 8MOOjg6FgjQaDY89ts5gMOzbt9/t9jidLofDEYlE3S5vZkYWTSst5hSDwZSamrZgwc2zZs2uPl3D i6I/4BP4OEkqKioOb9jw/vnGBghIWo0qLc0yY/rEkuKCBx96ABI5FEeAyG3YeMjt9sZigRtvnKXV 6giccDpd+fn6NWvuHD1qjNlsEnjp0KHygf4BFEVLS4vVSjonJwuSYCHORxnW6/UiEOrz+xQKMiMz Mysr+/XXX1OrVLt27kpJTbn77u+/9dY7TqebokkcI/x+v8/nV6lUdrs9JSVNkiSO42VPC8fFMQwz GAwQBHAcxVAEQxEURVAEZpmo0+FoOHcORdAYGxvoH3DYHWfPnLVYzIWFRaFwpK6+jmWZUaNGfrJj x7RpU1mWGRjot9usBQX537njjltuWdTV1UnTFEkq2ttb77nvB3a7NRDwb9u27cTJE2qVGseJ7Ozs xobz0WhUp9OjKMYwLIYSMISgGIKiotPlyc5Jrz9Xh+HoqFGjuro6X3755YyMDIVC4fP7Bgb6fT7/ pEmT5GSWBQUFLS0tH3/8MU3T8+bNkzcb/j/KvjM+jvL6emZntveq1a5Wq5VWvViyLdkqbnKRC7Zx AQzYgDEtOHRI+QPJP4GQhAQICS3GVBuMccHGvchWly3J6r1t773O7E57P2xwBHbyvu/zYX8zszuf dHTufc69z7k3ywDALXnVfzJq+/8Ihf+6BVKVdpjBYPxgBQuBIPjJJ5988MEHX399yOPxKBQKqVTK 4/FFIuHszMyZM6d7b/QLBKLu7h6/LyCRyO12h16fT5KA3x/cu/fndrtj4cLKvNxChULx5VdfyNKk Q4MDI6PDgwMDkVCguDD/Fy89v3LlcqVCGo0EbVbD9js3MbjMro6mlfWrzpw+jKDxoaHxtQ3rIAj2 +QIajebee3cWFhZ1dlwzGAwDgwMCvrC0tLSgMH92dsZpt9vs1tlZo06n02RmORwOFE3GY7FQOOzz emkwbdu2bQcOfPnC8y9y+RyhQMzjCY8fPwGCAE7gUomMJEkOhwdBMIZhdDqDyWSSJJVMJlJlWgog YJhGkjhBkIkEgqJIMplMdbrm5ubGYrHu7u6MjIzUSLCfP7X3ypWrLDanrb09Pz//ySefBAEwVZg/ efLkY48+unv37q7r12k0GpfLPX/+fF1d3YEDX5bNK75w4dx3350YHh7Ky8vfuGmj3e6sqakpLi5t a2uLRGIKhSJbp1+/fj2Xy79y5dLmzet7utrtDltT01UYptevXIEgqNfrOXDgMIfDYjJZCIJkqDW7 d+9OeSo/+eSTfr9fIpEYDIaKigqhUBgIBMRicSoUgreoVv9piti/BNJba3k3109xBpAgCEok0kgk wufzHQ7HP/7x3htvvHH16tWpyclFi6qLi4tTnXeJRJLJZJlM5mud3Uwmm8cTuN1eAKBx2PxsnX54 aCQlIebk6MtK52kzs65f75o1zAwO3cCwOJfD4XLZQh67oCDvk0/2NaxZk5uTZTHP/v1vHwX9dl22 ls2AWpqvVC2uKcif/8m+o+p0RcW8heWl87kcrlgonhyf6r7enUDQWDRaMa9ixfKlPq/n3NnToaAf pKj5FRWRSGxoaEij1sik0qnpWY/Hk6ZU0mg0LpudpdUOjw4jSFwkFFy+1Lh4cU1bWyuKouFwGABo iUSCx+PH43EGnYUlcQaDrlAoIpFwKBRSq9V+v4+icJxIOhwONBG32iw2m9VgML3w4nNvv/3Oc889 d+nSJbPZDMOw3+/PydFv3LSxfuUqAAQOHjzY2tqaoc6IxWJnzpxhMBgCPr+ysnLXzp0rV66UyWQm k2nVqlWzszNfHvg8EPAvWLDw97//fTAYmpiYqKpc9P33369e1TAwMBCLIQRBNF29+Ne//m1sbBzD ExgW37J1U2Fh4aVLl2KxuFarLSkuValU4XDw+vXrMzOzWq32H39/T6/Xf/rpp6nTKDdu9IpEwqmp KYlEUlxcTFFUKBRKGS3fVORTG7gU2ubqnTdx8m/Guk315nYrEo2wWCwIgsvnlb/11lu/+tWv2tva pVKpUCgsLS1l0JkTExMAAMAwbLc7EokEjpEQDY5EYg67w2F3LVxYVVtbu3HjpsuXGzkcjt3usFot u3bt2rt377Fjx2aNU3whEwRxkYA/v2Je5cIFxcWFy5bWQSDB4XJ4LGZnx5XJybDNOrpu/ZoMVTqP K0IRav78+XuffHr+/AU2q31wcMjlds3MzNDp8Pz581esWoUi8W+/PTw5OZ6bm5uXlysSilQqVRxJ DA8PUxTI5/Ndbi+O4ywmy2K15OfnQRBEgdRf//rXixcvnDp16kZvX2vL9cxMFYPBNBiMErEEhmGN JtPn9ctkMjSBxGIxuVzG43HjSBQASC6PNTExjqCIyWQKBkPRKJKTo/3tb39bkF94+fJlLpd7+vRZ tVqVGlFRWlb6wYcfRWMxNptdWFgIQzCTyVy9evWqVave/POf7733XhaTZTQaS0tLGxoahoaGrl69 4nQ7ly1btnr16rNnz7e1tVUvrnns0ccNBsOFC5d27dp14MDBQCDg8wU4HO66dWtfePH5ffve12Zl rlhWH4lGz549G4siVVVVCoWyvr5++fLlL7300po1a4aHR15//fV9+/a1tLRptZm5uXoEQTgcTjAY LC0tvVlXmFtfunk7t8lgrr7101D431EFAIBKrWKxWDab/W/v/u29997j8/nZ2TkLFizYvXt3cXFx ti4nEolcvnzZ7Xbn5xfw+QIQoEUiUYUiTafT3Xnn1sLCgrKyMhzHMSx58dIFkVBIUvh77/+Dosgs ndblsuTmqdesWfb73/0mEPBcvnRhemKscuF8pUJx8uRxIZ8HgkBTc08CDSuVsiydzmS0SiWagrwS iVg6MTbe398XDgc5HDaPy9ty9z1iAW9yfKytrRWgqLra2sWLF4lEwpMnT3K5vML8okg4HApFNBpN PIbYHQ4Gg+H3+QLBAAzDSoXi4IEDMETz+vyBQECv19rtNhAE09LSRCKxz+sPBIJymSKZTNLpMILE QqEggwlHIiGv193fewNBYhKRhMVkspgMHpeNY5jRYPC43e3tbaWlZS6XMxwKJZNJl8MdDIYwMsli s5YvX6ZUptFoYDAUOHjwQKZWEwz4BwcH6DB09uyZO+7YEI1G9Pqc1tbWa9e71RmqrVu3iUWS3bsf vnz58tdfH6LT6RCNbrFYhodHxGKR2+361a9/ZbaY7HZbU9Pl6enpqqpFsWj87JlzRUUl27Ztj0Si moxMr9fb2tL+6aefffTRR11dPWw2SyIRu1wuHo8XCAQ4HE4oFNLpdMXFxSm7nv8ErLmh8EfAupWr bhsEU4sgCYqiZmcNf/7zn2UyWW5u7vbtd23ZsmXRokUcDmfF8vpVq1aZzWabzabRZKJoYnbGoFQq Q6FQJBLes+fh2dnZ7du3pSnlXx74wmIxMpiwy+VksSEmC8ZwNEef8ac/vnrn5nVZGZp5pUW//c3r kbDfYbfdc++9VqOhZtlSFp1+8uS3CxcW19XVLl9Rj8STDoffYXdMTY2bLSaJVFhcXKhWqxYvrkwg EZIkBgcHIQi678HdaXJZ09Wr09MzfJ7A6/VpNFqJRDI6Ns5isdLS0imSHB4ZSUtLC4dC6gy1VCrx er3Hjl0WCBlPP7V39ZrV4VBoamoSQdBIJEqnMxUKOUmRsVhULpfDMORyOxIJZHZ22umyV1dXvfba azt33m+xmLu6+mMxRK1On5qakkqlTz/9tFKZzuFwDh06nJ2tAwBwfGJCJBHde999Q0NDjY2NLqfz l7/8pUKhOHz48P59H3/99dd9vb2XLl1av369VqtNtY+uaVjVeLlRla7q6ek5e/b88PAIi8VC0aTB ONve3qHRZGRkqKempul0ePnyZQgSS1Mozl+44HJ5env7enuHZDJpMBj8/PPPDxw8cPr06cOHv52Y mBCJRAwGnSCIlMVhLBbjcDgOhyP1pKamJtXFeltg3RwE+RPd4d+7wtsqC7cumA7BMPz5519YrdaC ggKZTPbggw8JBILUWKKAPygWi7Ozs2dmZlpb28LhMA0EjUYDnQ7PGmZeePG5JUvrdj1w3x//+LrN bkpTymx2p0jC3LPnAblCUjG/VKWSlBTr8nKyp6aG09MVVovheufk6IhpSW3ZkqV1Not51mDY9cB9 zz/3gjI9fXBweGpq2mazJzE0R6/NL8iZv6BMrVYEgh6JVERRJIPBSHVDVFdVeb1es9lSXFRaVVXd 29PDZLLzy8rGh0fC4bAmMysej9ssVjqD4fF47DabIk1eV1c3Mdn/0b4PN2/eNDjYX1BQ2N3d43D4 09IUFADE46hcriBJ0um0m0xGn88diYQ8Xl9xcUF+ft7evT9LJhMLFy44cOALLo+JIgk6nV5YWLR9 +3aLxVpTU3P4m29DobDH45FIJbocXXFxMZ1OLysr++rgQZ1Ol56eHo/HMzM0Bw8eDIfC4XBELBav WrUqGAwSBDEzOxsKhfv6+iEIzs8vxDDcZrNTFGWz2QIBf1aWdnh4iE6noyiSlaV1Op1r1669fr3b YDDZbA6AIn0+/7XO6yaT2Wy2BIMhgiBkMlnKkq6wKH/rti2rV69JS0vLz88Ph8Nms9nlcul0utzc 3NRJpNsC6/+Dsf4LwjSZmu7u7vfee18ul6Mo+txzzxUWFs3OzkIQJJFI7DZHOBzOzc11OBwdHZ0i kYgkCK1WGwz5CwpyL1w439Z+tfHKRb8/tP2ujY8+tlullr38yi/vvmdbSWnBu39/u6W1ncPG62rn 93Rdn5qaeuihXV98sZ8gAKfTmJurJ0lq4cKFTCZrZHhkbHQsFo3bbLbCojxdtmZeRakkTQSz4EjI Z7Ob7A5rZraOSCZNJvPs7KxOl52hy83K0KJoYqCv32w2iyUyVVpab28fi8VKU6qsVitFUgkExUmC zWbL5FKhUCiTS48cPbJhw9pQJKjPyentHfB4XYFAiMnksNkcEATMZlM8HhNLhBaLORaPs1hQWpp8 9eqVFy9enJqawnG8qqrqzJnLXC6bIAi9PtfhcDQ3t9x9zz1ul/vipYuZmZlWmw2niLq6uvvvvz8/ P//9996zWCwGg0Gv17e3tVEUxWQw33jjD/X19QRBTExMTE5O7v/kk7vuuufKlauzswan04kgCAzD s7OzwWAwKyvL6/Umk0kOl01RZFVVpVAoutJ4xWiwhIKRWDymUmUkEpjD4eLxeAwGE0WRtLQ0GIaN RnN5+bxHHtnT0NAglyt0Ol1WVpZer5+ZmQEAIBAIpDrhbgusn6RWNxEG34qq/05adrv9yJEjJEku XLjQ4/GUlJRMTk4KhUKPx0NRlEwmo9PpKIoKhUIYhh0OG5PBiMVDIEgBIN55rbegQPfIow/l5ekh GOgf6F6yrKqmdgGPxQmE6CwOCMFAe2vj2OgdxUV5QpEEhoDly6qwJLV+/R0ajWZgYAgEQafDDcMw ncliMBi5+XlLly/CMDQacwEAgKAxo9EolUknJ6Z9Lps0TbN0ad3U1HTX9R6ZVCmQKW6cv9h9vUsi Ec1MT9tttlgsVl5eHg6G8CTG5XIjkQiNRtNoNOFQSCIW37Pjvld++8rAYB8AkN8eOTw9M8nn8+kw zuWyaTTa0NAQl8u9++671q1f/eabf2rvaMNxordvZPdDdCyB5Ofm1FYv8rh92do0o9HF5TK8LvfG 9Rvk8jSAArhstlqZ/uiePSKJ5GdPPXm58WJ7R2tOTs7u3Q/iOJ6Zmcnj8RgQbcOGdT974on+gd4F CyvOnD3V3t6el1ug1+eJhBJtps5qtZqMFh6Px+GyMAzLy8tDEEQsFnK57FAoBADkG2+8zmCwYJDJ ZLKUyvRgMMjniWggDEOMOBJls9kUBaZkKpVKef/99+fl5U1MTOAYmapAl5aWbt26taWlZWhoqKOj o7Ky8r+ggvrx8QqKon4qkP5fQyFOYNeuXRsbG+VwuDqdbtGiRfE4khrrGA6HmQwWAAA0Gs1kMrW2 tgAgyWTSMBwlKYIg8HfffWvNmjUsNrOjo62/v29yYnRtw+rcXN3k5AiJJ3hcxtlT17EERqcRW7bc NTNtHB+famhYV1+/UiQSGw0GgiSj4TCdQccSCblC7vN4N27egGFoOOK3Wi08HjcSiQwMDOTn51vM Vq/Xl5mRwWJxW1paUATT6/MEfHFne2c8HgdByGq1EjhZv7K+fMHCUye/n5qa1GRovD4vRKNhyaTN YsvT58nTFHKpdPfDD/Xc6AmFIuFwzGJ2CgVCq9UWjcZkUtmWLXfed/+O+voVvX3d17t7SAJgsQGh kFtYUFBSVj5vXuWN3iEOR3ztWidJkB63c+nSWjpE7v/nR2w2q7iouK2t85Xf/OarQwf6+/sInOzr 7auvX1lXtyToC3S2t7e1tYUjoQcfeODdd98tLio9c/osjUZHUWz9+g1dXV1jY2NutzvVLzk5NSES iVasWDFv3rxz5876/f5U3ba0tNTr9SUTqSMqDAaDHomEA4GAXC6HYFpampLJZMAwHUUTxcUlGzdu isVikXA0ZVH+r01raWlvb6/NZuNyuRUVFf8lFM7VTlPXNPI/rGQyeXOSdupEG47jFEAwGXSSwHEs CdEAHEsAJMXn8vhcHkgBfC4vgcbjsQgNpFpbmvw+D0kkcALJ0Cj+9OfXL146azSbjhw7fuK77xkM dmFecfe1qePfHgu6PFcvnI8FPHvuvad2gSLoBbo6p1uu9lM4d2FFnUSoQONJm8Xqcbk4bIbP60KR MItJs9uM8ytKKQx3WN1SUXpv9/Chg0cYEEfAldAohk6b09PV57R5QAp85qlnI6Foa3Nbe1Nz343+ BIoDFHTvjp27du3icbgf/v3dyYkRLodhsxp5XCabyaAIEkOxqfEpCqHWrVqPRAmTwdrRdk2nzWIz ISQeTVPK6XSQL+I8tGfXrHHmnXffFkskufk5AhGLoIDvTpzUZKm7ewaeee5lnBI9++zrJCAQi5Th YPTjD9++cOZwfo68KFez4+5taXLlvTt2frr/MzaD3dt145Vf/QZDiOeeeuGbrw/vuOeep5/6+ZlT 36tUyrq62sbGq9u23lteVh30I7/85a8/+/wTu8MK0iiSwi1W086dO8+cOfP+e+87nc4TJ75//fU3 xscnhUKxyWQBQZCkkkksaneYItEATqA4gTJZkN/vt1qtkUjMaDQjSKKosMzvCwMUIxiMRqNxkiRT TffhcLi6ulqv1/f29kIQxGAwGAxGqrzzk97lFMhSD1MFeHguUd1GDv3x9pCiKDabvWBBRWNj4+jo CIfDmZgcy1BnpvLKVCZIkuSZM2fOnj0LAEBOTs7De3YVFuYbjebf/+51u9NVUlxavai6unqxUMCb mhg/evjEnXc07Lr3PqfDDOBYWWHJxvUVhUXlXI4Qx8DLl1r0+qxEMqHX63Ecj0RD2iyN0+k0GmbS lerM3FwsGj1//gKDQefz+dPT00ePHicIIjMzq2xh1YXzjVeuXLn//p0ckcjlctlsDh6XLxQKd+/e DUEQl8v9/PNPe3p60lVKrVbL4/FycnIsZqvX62dw6DQQtFnsZqNFlZG2atWKYyeuPvjA5ieeeDIa QZ599vnJKUMyST3x5AatVvPJJx9jWOKhPbtlafJnnnqOwwVgCDj45Wf79h8Jhgm5VN117UZuThYa c7/6ys9YNNRhHdq4vjazuApA6O++85fM7Dws8aRSkcaA2Uw6S8gX//bV//3Tn19/7bXXXn31f4pL Crt7rp86dUaVrqHDnBs9wziOpcYEC4XC6enpbdu21dbW1tbW8ni8XQ/s8nq9Tqdz586dgUBg//79 TCYzGo2yGPQkhsoVslTvCUFgwWBQo1EbDCaFQiGVyFMGBTQazel0SSVykkqmTm+nTubhOB6NRn+C of8S2W7GRGjPnodv+8LNo2Q3RdUUyUWj0bQ0xfj4hNlsTgkeufo8jSYDAMCUfWVfX9+nn36anZ39 0ksvPf7Y4+Oj4wP9A99+e9zl8vzlL29zuYJsnT4Wi+fn5XPYrHNnTre1tt2xfn0kHCYJsmpxnVSa nqHR2O12CiBoNEAmkwIARRB4ZmYmhiVzsnO5HF4ikYQgOEujSZ2OcjgcqW1/VlZWLBbx+33z5lfA IMDhcLMLi9Bw+OSJUxkZmurqxTt37kwk0LPnTp89e3pmZjJDoy4oyC8tLbnjjg2JBArT6V1dPU6n S6VSW602l8s9f0F55aIFfX1tv/v9a1KpTCAU8nmCCxcbRSKBNkuXKpWmpytrl9Sx2eyrzZc9rjCe ANhMfM2adXab9fe/e9VoGt2wofreHStogPuTjz/53f/+LCdb47LaeFIZiy+ZmZo+efrkQ7t3Hzly zGF31tfXh0Ihg8HAZDLMFmPF/HKCINauXWc0Wm709Ekl8kgkghEoRREulysnJ+e9996bmpo6ceLE xx9/HI/HYRgOBoMej2f79u1ffPGFUCgMh8NcDgfHiUAgSAOhcDhaU1OrVqufffbZ7u4up9MRCofC kVB+fl5hUUE0EsXwBIYlxWKRUCiEIAhF0aGhobGxMZFIVF9ff9t6zNy0fW6a9VNg3bxItcTcwlhk WlqaTCadmJjs6+uDIOjGjRsQBPN4vEQiGYlELly4gGHYmjVrli5d2tvbe+3a9dmZ2bNnz7ndPjqd 9dvf/r7xctOOu+8tLi4iCYDH47a1tUilkiVLlshlUrPFkkhg4TASRxAQBCAYqqyc7/G6GAzYYjE7 nU6JRAzRYAiCmUxWIoFNTk5lZmo1+hyQJDqvtQeDwfr65SiKQhBUWFSk1mbJpeJoMIjjeE62fv36 9bFY9MSJ42fPnbHbbSgaq6gov3PLRp1OC4AklsQwLNnX1xcKhYVCYSgUoQBKpVJhOFa2sAIEyf6B oY13bBaJxckEdv7Cebc72Nvb19XVuWfPwxAEnTl3NhqNLl265PzZs1wWgKLRY0e/m5gY12iULCZW W12Up5esbKjUqemLqsqPfvuN1eJg0XlCjmTz9h2PPfHYkqXL/f7AxPjkmjUNLS3NsVg0kUDK5pVU LapsampCUfR/fv3yB+9/xGZzcRyLxEI0GrB06dITJ07weLwdO3ak+EYsFjMYjMHBQYvF0tbW5vV6 zWazVCpF4mhWlpZGg3k8fn19/a9//Ws+n49h2OrVq51OZ6qLKRyOqFRKjUZDEBidDqU8OFMmyoOD gwaDITc3d8GCBbeiCrilCH0TW9DDD+++LbBuC0+KIimKTCaxlPeGQqFwuVxt7R3Hvztqt9t5PG5Z 2Tw2m33mzBmHw+Fyea5f75qanEomcV12rtFgUaarotEom8PRajLC4Wg4GOy9ceOFF56PRyMOu1Mu k8djiEAgFvD5UomYy2bRQGBkeAgCQRzHAn5/aXGpcdYY8PkJnMzS6DwuT1FJGRoLp6en+3xekiQr KsolElFWlpbLZkVDAZ5Exubz0Wh0fGLi4sWLX375hclkVKbLK+bPKysrXrq0LicnWyaX8XnckdGh y5cvkySZUqcQBKXRoGgsanPYeHzmvPJ5f3vnb1gi+cWBA8eOfefxeDWZGR6PPxoNazIzli5dokpP 375lW0FB3pFvD3kcYTQGhELx55//eUF+zprVS6qqCsQ80u+clInYIICRJEUQDLlMw+UpwqFoa1v7 oupqNpvT3NIyPDwyODi4ZcvWO+/cGI2GZmdnAgFfc1NraVkZDDM6OzswDKNBFJ0O0+n0Z595lsPh NDc3wzAcCoUAABgYGBAKhU6ns6urKyWIczgcGgja7Y5QKCKVSv76179KJJJEItHX1/ftt9/Mzs5w uZzMTA2KonQ6lJGRwWDASqUyNXKBJMne3t5jx47FYrFt27alpaXdlq6AWyrTqYv/C7BuHooFQZAk SYoE3G5XZmZmTk5Od3f31autXC67qmrhtm3bnvr501NTU5cvN05PT5vN5rGxMZPJDACAMi0dgmAk nvD5fYlkcu3atQe+/Gr1mgaJRBCNRWOx6NT0lCYjAydwtVodjcaFQgGDQQ+FgjKZZGx8hMtlI2ic oiiBQMBgMPp6+3y+gNPhZjBY8TgCUqQ8TQYAVIZGLZNJ+Hy+VCoRSMVBv49OZ0yOjXS2tX5z+Jve G72JZIJGAx9+ePf8+eUFBXmlpaVpStm582fPnTszMjrc0d6xYMH8XQ/sYrHYHR0dqVkpoVCoalEl BZIlZeWDAwMf79s/OTWdclUYG50Rizl8Pr+5qenJvXuO7xr8AAAgAElEQVQrKipsdturr77idroz lOlCkcDn97e3d77//t/VmnSv0xAOOFh0QMjnEgmMwxbFY5TR5Nm3/6DTHbjnvh2XrzRduHARBGhW m/3ne/fW1694/4O/t7S21C2pueuu7U6Xs7Hx6t69TzU3t4rFIhoEqlTpExMTA4MDFotlcnLy8qVL MrncbrenRpggCJJKj9LT0x955JEHdj3E5fKuXbtmsVgdDuc777w9Pj4eCASGh4fS0tKYTCYEg8FA 0GI1eTwuiiJBkJYydGhpaWlsbEQQpLKysqGhAfhxXnVrC81tGOu2ClZKECN/GHEO/uCey+cLMBwj SSoYDNntlkcffaS2tlYqlRw+/E1T09VEIuH1+kwmUyKBqVWaYCiQQBOBgA8EwYwMjdVmZbGY3534 bs2a1RqNWiwRl5UWN16+qFGnQxAYjka4bDaGYT6fhyQJACTdbnd+fh4E0Xw+n0Ag4PF4dJiOogkc I3w+v0ymcDqdBRVlNIpkclhCAZ/JZMJsFgBCaCx65UrjyRMn29raE4mkVptVW1tbW1tTU1NNkEku l+V02g8f/ubcubMAQKnVqocffigYDIAAKBZJcBwPBoIQDMXj8VmDAYbBnJxsgqTOnjsTCgTZLPai xYuFQt74uJHDZQSDcQGfffbcuffff99ms2/dsk2nK9Coc7pvDJAUVDavIlurPXf6VGdLy7KV9UGP 12F1K9O017pGx8ZNaJLWNzDy1t/+1nn9mlKpSiSS0Whs9epVLBarfuUyuVz6xh9fFwoFixcvCgSC 7W0ddruDx+NDMOT2uFQqFYqiVqvV7/dHotFEIuF0OFLzUUAQbGhoSM2ifvl/Xt73z335eYUOu5Mk iampKYoCEgl0cnLS5XKiKIrhCRiGABBIJhOTk5Mul8titTQ1Nbe2tk5NTen1+j179tTX189NiuYi 6bYJ1r+S9927H/pPjJXSHW6+n7qNx+PBYIjL5YklotbWFrVabbfbr127NjExQaPRwpHQ5ORkRoYm Hkdi0TiLyeaw6BCNxuPzcCJpNpm8Pm96ehqLTV9SVzMw2Hvwqy9zcrIsZqM2S8Nis0RiIUgB4XBo Xnnp1NRUIoGw2eyMDHUgEOjq6po3b15Odm5vby8IwG63u7CgeHp62m41ZeuyaAAIMRg0GJoYGe7r 6f7nvn/29PRYrTaJRPr444/pdDq/z69WZ4TDIR6fe+NGz5Ejh51OxwsvPL92bUNzc1NOTjYIgnab Y3p6emhwKBKJ8rhckiLZHBaNBkWikc1bth858q3D7nv33beqF1e//MorH374rtcTVaYLm5taLGZL ZVXl559/7vMF337r72vWrp81WjzeQG9v35LaukQ8evzbwwtKS1RKlUgkPXX6/NvvfNx1Y7h/aKh3 cBrBUQimRSMxLocPAMDo6OjKlfVmi8lomg0G/TAMmUym6uralatWuV2+4ZEhhVJOo9FSajuXy/X7 /SwWKxqN0hkMFEU9bvef33yTzWa//PLLAADk5uXOzhhQJNHc3OwP+KRSaV6evrq6uqSkSCqVxpFo WpqCy+W63S4mkx4KBXGcsNvtRqMlM1Ozdu3aZcuW5ebm0un0lILwEzzdRNVtsQXftAC8NXlP7QRv duGkViQS0+m0wWAwGo2uWrVqamrK63W7XK5QKKTV6rxeb2r0j0ajQeKJlHBqt1vlLHooFARBksGk Pb53z2uvvVZeUfyLF1+QyyR7f/ZYU2tTxfxSNoMO0EAURcUiUQJBsUSSIkgmnTE9OaXVZNqttquN Vx544uc0APS4PVKxhEGnx+Pxa51dPp8Hx/HCwoL2jmar1ZyqWpaXlzc80TB//sJQKMRicWZnjCwW a2Zm+ps3DxYU5K1Zs0YqlRYU5ofD4R333jM2Oh4KRQYGhoYGR9VqTTAQBQAgXanyBYImkwmnyPkm 4+nvTxUWFm7dfpff6wFIYtnypceOXoiGIzQazWq1gxQQ8AV23LPjSlNL541rS+qXGsymicnpiSkT j85asGDJN1+frFlccvDAp41XvZk64MN//qF/3HDi9OU/vfnR737350sXm7hcPgiCFqulra1NKOKy 2WyRSCSXyzds2PjlFwdnZw++8Yc3fT6fw2V3uVyFhYX5+fl2u10kEpEk6XQ6CwsLV69e/Zc339Rq tYcPH965c6fNZtu8efPUxDSPx4vFIxRF6XS6qqoqFEVramrXrVt3/Luj339/EoZhACBTriowTMvK 0tXWLJk/f37KryUWi1EUlapJpJCUuvjJ7VyQpRb00EMP3ooq4Mcnm+dmbTwePxqN4ThmNBm6u7uU SkVLaxNB4jhG8HhcDoerSlfH44jPG2SzOTiWhGgknQ5xeBwSIEUigS/gTWLJVatXfP7pp/MXVCxZ Ustk0a9fvyYSCcUSKUyDkFiUIgk+X8Bms8xmi91uU6lVSqVSp9N9//33cqGwpqa2tbWVyWBlZ2f7 /H6QIi02a29vn9VqjcWiOI6np6teeOF5tVrNZDIxDHc4HHy+wGqxXbly5cqVK089/ZRMJuPx+KWl JQRB+gP+zz//vK2tvb+/LxqN1tTUqVSql178xY0bN5wuF4qiLDYniWOjo6MN6ze4Xc7WlqYVK1ec OnVq6ZK6y1fOgwAQDiU5XHosFs/JyZmZneYI2IeOfPXIo3s62tsFIsHIUO/WTesNkyOzE0MfvP99 KBj/cN9Tv3v917p5eTn69If2PJSdVcgXiA8dOsblcPg8gVQqu3r1Sltb28ZNG5YuXerz+/bt2ycS SePxOIom589fcObsmfLycpvNlvpnlkgk27Zt27x586ZNmxgMRiAY3L9///vvv3/9+vVjx455vd68 XD1B4BAEkySeSKCLF1eVlpZYrdbNd24cHBy8ePGC3x+BICo/P7+0tHThwoVbtmzTarMYDEbqSB/w wyTRm31XPwmCc4E1d8G3RdVPUvi5D1ksViKRkMlkTpdgdHRULpdCEERRhEwuIQjC5wsEAxGBQMJk UhwOD40jySQOwzCGJQkCZ7FYFEX19/c/ufeJrKxMBkxraro6PTk1PTWhVCqrqhazOBwikYyGQ8FA mMfnBgIBLpddWFg4PT1dVFKycePG2dlZrVYXi8VqqvOmpiZsNguHwwEoOEOdiaAxrVaj1+fAdBoE 0VWqDBiGm5paLl68WFJcptfry8rKlixZkq5U+/1+nU49ODjc1NTk9bpDoRCHw1m9enVOTq5IJBno H1JkqvgCtt/vVWdkGUwmJoOdiCMRn+/FF59ft24dRREjY+NikdRpC+cXZpKkG0WTw4Pjb7zxxkMP P/D0M09iQLjj2sVl9fO/+uxbpxnY9/E7QcdsSZ7yg/efWHPHCkDKTXpsYZtBrEyDYQwAkkuW1ixc WGo0WjzeOB1mAgBQUVGxft0d/9z3QXNLY3p6+l/+8pd/frT/4sUrf/rTnyLh8OzsbMqD5K677uJy udXV1WNjY5s2bTp8+HB1dXV7W9uePXtgGF68eHFeXh5AUjQagGGY309NTk6ePvN9XV3d2NiYyWxo bW2lKKqwUF9bW1tWVpaS1NVqdcAfikajKfuklO35TUXzZrCbm2/dRMjcb6EHH3zgP+VYt1sghhE4 TnC5XBaLcf78eY/XCYKU1xv2eiMMOi09XYVhhFAojsfQaDRGh+kASeA4RpEkCQKRSFSukMficZFY ODQ0eOHipcGBfgzHKZJyuTz5eQUgCbBg2O/3x2LxgvwCBpNhNBpFIpFen4PE4xkZGZ0dnaOjIyqV Kisra3xizO3yJJIYkkhIpVKn08lgMlaurJ9XNq+5pVmtzrhw4WJjY6Pd5qyoqFi0aLHT6d6w4Y6x sYlkEpuZmf3mm2/9AT8EQUVFxTt33s9gMGpXrPK6HCiK4ihqNpsCwUA4Es7R5VIUwGAwnE5nxfyK jo6O/fuPEnhkxjCboVZMTFk4bDqHw8vIULvc7vt33jc03nvy5PHxseGX/+elLz49VFGqWFxR8PzT D991/+aceTkAEfYbhnjpglDA4Q04EDzB4aZzWTI6g37o0HfpSmUkEmOxWKFQ8Je/fGndurVCofCd tz+cmZneuHETQMHNzS0ms9nn8yII4nI66+vrEQSxWq2PPPLIO++8c/DgwYsXL1ZWVn7++efhcNjn 85WVlcWiESaLbjTOQhANJ5I2m83j8TCZzIGBAYIgcnP1CxYs0Ov1QqEQAACSpGxWR8qZNzVDNFXb SQ2cmptR3WSmm7XCm6hK3f4oFN66K7xlAQwGE0VRDEsymDCCIE1NV+l0aPnyusJCvdFkJAgKw4jU ccNkgqDDdIAiWSx2EsM4XH4ykZTJFf6Af2Bg0GKz2+w2LlfAZnKYdDYST2gydYUFBck4woShmemZ BJpYVLWQx+X4vJ5Mjebc2bPnz56ZmZ6mw/R1axt6e25Mjo87XR6BQMRgsiEITiYxGg3icLgCgWB4 aPjcuQtVlVVut6e4uCQzU+v1+plM5tDgyNdfHzYYjKOjowRBxmLxhoZ1DWtXq9UZ8TjCY7OOHz9u MBiPHj0SjyMLF86HIBhBMAwjURThcDiFhfmqdOWBr74LhZAsnfLue+522m10GMZwMhQMowjK5fK+ //6EVCzcsf3uq5cv7r7/jru2rG1YvjBLn0YGTGDMFfeajYZRhVSQxFAun8NhSzBCwGSIC4oK9u// mCQAmE6XSmUerzvlINfb26fVZsikaRMTU19++ZXL5f7q64P63Byz2ezzerk83quvvnr9+vWDBw9+ 9tlngUAgNT9WKpWmkoexsZE33/wjCAInT56w2aw8HhdBEILAMzIy1OqM/Pz84uISiUSCYXiqKAdB EJbEU7adJEmmBmSmnMzmHqa49fMnST0AAP+RsW4LLAAAWSw2RVEgCCBILC0t7cqVSzAMtbW17tix 4/TpM4ODExRJhkIRkUjCZnNxDKMIUiQUebw+GGawORySIhE0SZAkDaKJRRKYRscJSsAXRiIxk8Gs UWUqpRICxxKJ5OTkeDQWzc3N5fP4Ho+rt7dXp8vKy8svKSnu7+83mYwwHdr1wIPnzl0WCMQupyeR SESikaGhIZvVxuPx0tNVJSXFBoOhsLAwGo0fPXoUiSe6u2/IZIq8vAKxSDIxPkGn05csWbKgptZq MlgslkuXLo2Ojur1ORs23FFbW1NTXdva0ubxBPgCUSwWDYb8IAiUl5c3t16orVtw7NhxiUSapc06 cuR4LI7w+QIIgqwW67tv/+Pe7Ts+eO+Dwwe/3/vYDgiPYXG3Kk8FBqyGiQEGhGdkpNMgyG6zAyCM E6wwQh8YmVKla2SytEOHjkslkmXLl5WUlPT19cbj8WAoyGAwWls7+voGltQtffbZZ5tbmnS6LIfD QQEAgiDj4+MtLS0qlUqj0cjl8tQ+cWBgIDMz0+VyDQ4OUCTe09NlMMwSBE4QeG5u3tq1a++44w6T ySQUClNma6nBqiAAEQSZCrIpTQCGYTabnZpT9JM94M3Pud0NP2KsFLBuTbPmGsbPBRYSTzLozEQy kUwm6HRwenoqGAz88qVf0kBaHIn19d5QKtWRSIwkQBwnGHQWCAAQCEdjMQCkMVmsSDTGZHHEIkky iYlEEiyB83nCSCiOIFg4HKsoL89MV7ocdoVCzmAwbtzoNZkMIAjQaEB2drZMJh0dHXG5nBaLecuW rVwuR5uVbbU6aRDD4/GKRCIEiSWTSYVC9rMnnwiHwxiG19evPHPm7Nkz50VC8cyMwev1pymUW+7c ptfnDg+PPPH44x6P59tDX1++fLmjox2CoK1bt9bU1BSVlyeROI1GAwHw3LnLMqlCJpdGomE2m52f nx8I+YPBwOZNm6ORyIr6VadPnzFbPCSJh8OxSDDisvrViizD1OzuXVtPHD2Um5WWIeVwkgGvbRoG kiIeF2YwgoEoRGMLBAo2Lw2jeFdbrs/Ommprln7//Sk2i5tMYlardXx8LBDw02igy+WKx1Blmvr3 v/9DdnaOMl0Ri0X7+/uHh4f9fn8wGKyvr5dKpSKRCIZhFovl9XpjsZjFYkEQZGZmOhj0zsxOSSTi ioryqkWV9fX1OI51dXWrVCoIgkAAikZjJEHF4wgMMyiKTI2WxXE8hSo6nZ5qdUm5X9+avN82c/8R Y/2XUDjnByRB4kwW3e12yeUygiQwDBscHLRaLEuW1uXn5/3zow8dDjuXw5VK5QkE5XA5dIgZiyNC oQhmQDiBoYk4kwn5vB4um0PieMDv16jUQb9fk5EeCfgNUxNrV69isdg2u8PldmVkaiAY6u/r6x/o czgcV640VlZWZmVl1S2pEYkEFElNz0yXzauYmp5iMeA1a9fgiQSaRBkQvHbjxogvOD0z23z1Sue1 a2KhoHJR5Ya1DS63B4kkQ6FY1YIFWbqsyfHxM+dOh4P+NWvXcFmspcuWFRcURmJRLIY43e7jR47P zBo5HBGdyYzHYyiKJBKoIl2xYcOG55771cqVSzXarObm1ht9A06ngyQptTojFIpZTW42g7X/s48r 6xZ99sHbYgEUjzgVYrZUwhOpFPFQCEGTIMxK4IDXFxHLNBjIlaVrT544ZTCYx0YnrVb7zMxMKBRM JpNbtm1ZtXrNlStXERQNBIOLFi+6eOkCgka7uq61t3cwGDCPx6fRALlcoddnZ2XpqqsXdXZe8/u9 Pp/f7/fK5QqSxOLxaF5ebsOadcq0dK/XF4vFgsGwRqPBcYIkSRaTTVEUk8nGMJzNZjOZrJsjd1Il yJRfMofDoW5pFp27K7xNKHzggV0p9NzsxEo1wMwlt5s/AEASSUTQZITFZmFYkg6z0tNUrc2tfT09 L7/ya5hG+v2u3ht9NBCn0cB0hdLp8vA5Uo8/wOGxYTplMI7zuIy0NEkw4BHweDiCABhBEclfvvhM SX42joaudw3MKymUShWxeFyr1UVjMZfbRafTI7FYcUnR+js2pKWnCUT82ZmpUCiYliY7evTbvr7e 3bsfbFhTn5Gh4nE5jZcb49G4Ol39zlt/u9bZ6bQ77rnn7hXLlt6z4678fP3oyOjwwFRd7bKgP3Cj p9swM/XEE49mZWqKiwvK55USBC4WikdHxr795ojJaPG6fAyYW1BY6vH44/GYIl3J4bFdLueCBRUZ mcpnnn323LnzHZ2d27ffQ6PBw6OTQqEYxymKJG0O8/at69Gwc2joutU0zuPRQYjMyc2m8XgWs9Xu 9du9PqkyPSs/nyBhnCYEQA4aT/7m1dcdzhBJ4tos7YY7Nm7Zsl2RrnK6XDOGGZJGsLiM5s4mq83I ZbOSCdTr8RIExmGxhUIen8c3GKbpMH3duoa21rbOzmtyqSQWiyvksu3bt+Xm5vG4Ao/Hl/JqAwAa BMEIgjDoLDqdAQAABEEkSTAYdAiigSAA/7BS3oupEtbNPeDcnP3WHGtuNIQeeGAXcLv1k43lvz4B IhoP8gR8iAYl0CSeJEVCcQJBOzq6hQJGTfUinU576tRxHCeTiWQ0GpGI5SQI0+lwHAnhBCISs9Bk xGW3QjQq5PezWSwRl4clkTs3bdhwxxqHzTAy3BONYYVFpQAIGoxGt9MJ06G8/LwtW++srKyEIDAS CZMkgcRjn3yyf3p6eu3ahjUNDQBAAhQpk0mTWNLn8ZpM5gvnL6Snpy9bumTZ8qW1NdVxJMrlMMdG R4qLSnq6h691dre3t+myMhUKqTYzgyASXo+7bF5p1/Wu7u6eq1eaem/0SyXybVvvWb9+Y0Zmtslk pgASAAGCwJJJJDs7u7xi3t///kEgEIjFEIICfvGLX39/8nQkEk8NrkkmERiikljk0vlTIIDl52er 1SoGi8Hn8hGM4ApkeYVlIn0RQEEQXXjuctdXX5/84ouDTjcKw8Bf//JmXd1yioTuvX+X0+lcvmIl mkBGR0aTZBKCwFWr6kmciMfiQqGAyWSaLSYEQURiYTKZnJmZvnTp0uTkhFQqpgCyvLzs3vt2IAji sLti0TiKJgicBAEaDYRAkAYCtFRoS6lTwA+TmFJrLnR+gqFbGeu2W8WfAmtu7JsrOvw7LAJUEksw 6AwCo0gCACiIzeYo0+QnT57w+pw77rtbKBR+f+rU2JhDr9dwufxIJIImEgCAJ9AghkWwZDQQQHU6 +cMPP5iZqent7WUzmRAEYBi6dfsmsZB/6NCh4VFLQX62VptJgwAIAqLREEHga9auGR8dYTDg4eGh 8+fPeT3e6urFDz740OzsbGVNncfl9no9TU1NX3311axhlg7TU8OxHnv8kenpSZ/PU79h/WBvz4UL F06ePA0CDBiiS2XiBx/cpVIrZ2anKqsqJybGvjl0OByOuFwuJpOz+6E9fL7Q7faxORyj0eLxuGkg EAr51CpVIOgfGhoqLS2ZmpwcGTUzGZBhxrj1zu0sNrv5ajNJUAKhOBqNmc3GhQsqCCJB4MkEgsSR eCSCFMyrZLP4Yn0xLFHN9o6dPtX41rv7//cPxw3maQBglJUWm4yOBQsXqVVZoyMTJrOt8XJje1uH 0Wg0GQ1IHCkuKo5GoosWLlKrVCqVyuPxWCyW1BF+p9Pp9/tjsVheXt6SJUuKioq0Wi2KoteuXaMo 4OaQphQPpf72Kbf9m7LnXHvYmxC5iTPgdrs/YI7KcPPi38n7zVD4EyH01kWSJABQMB2ORmMETsEw k8PmhEIhmVTsclt7bvSWlxeXlZXW1dV98MGnfl8Aw2LhcBiGAArEIhFPJJqUKRiPP37fK6+8vG3L 5oULK8+dOW232WVySX9/97x5JYuWL+nt6Z6aNMlkouzsLILA47FwOBzyej3KtLTPPt1vs1qTGFZQ ULBw/sLqmmqCIEGQZjTMtrS0XL165eKlS/F4PCsrKx6PB0MBBoMOw7Tly5faHbaOlqbDh78xmmY1 Gq3HFczJ1kdj4cKivIKC/M7O9qbmqxiG9fb2cTjcZcuWV1Uurlu+0uP0TExMTc8YPF6v1WbR52Yz GXSX0+nze/p6e7q6u8fGxvk8ZjQcFwjFoVC0YU3D0SNHIZjOZgtoED0ei5TPK9VpMyYnJz0+T2lp eSgcz9MXcTLzbOOmj/627823//ndd0M3+gNCKVi1eMWDux7W6wtnZo19vcN333VfMBhpbGxKJjB/ wD86Oibk8VksptPhKC4q6enuemTPnurq6jNnzoyPTwsEvFgsxmQya2trly1bVlhYGI/H/X7/5OTk 2NiYWq0GABCG4dTUj5sDAQAAuBns5kIN/LEudfOruZD679j6N2Pt2rXzPzHWXLr6gbRIigRQJMGg c5JJnMlk+4N+GKarNeqrzZeDocAdG9alq1RHvv3C7Yrx+TAEgxBMuVwBngB4+dWnP/3kw3XrVgEU iSJRPo9HkXhraweTRUMScQgGV9evKCwo/PTTr6LRQFFRIUwHI6Ewh8OORMITE+PLli4FQbC6ujq/ oGB4cDhDndHR0WkyG5uam5uariJIvLKycu/evXuefHJ5XU1tbW08HhOLhdPT0ydPnhgbG73//vto NHB2xpSmUHu9AT6fc72r8+KlcxRFstnM+fMr7r//fgaDkUBxg8G0oGaphC8cGRmx2eyKNKWAz49E wlPTkza7xeV0Tk3OwjB437337Xnk0ePHjsMQTAOhygVV0UgsFIklEkQCw6PxCAwBjzyyh05nGGZN NIhRW7fq+Mnz40PT7/7js8++7A7FKZ6As3bj2vIFdUWlC0RC2dffHN28efup0+exBAGCNH12bigY 5vO42Tqdy+lA0URWZlYCRQM+v8E429nZOTg4iGEJHMdlMtnu3buLioqMRuPw8PDY2FgsFhMIBCmI MBms1NClVLZ0k3vmMtZPQuFtgXUrvH6CqrkZ1H9jrLkdpHN2iACKJJgMDpvNDQQCBE7SaCBO4JoM VeOVi13d4/fu2CQS8eUyaVvbJY8HwzFCJGZ8+NFb+z/5cNnSaq/P9enH+955+6+Nly43NKypqCi/ 3tXh8/swLOl0OoqKiquWLLlw9uTwiFWp5Ofm6gGSRBAkEgkbjabFVYu2bN82NTmJ4zgSRy5cuHDk yFGz2Wx3WdNVyqee+vkDT/wsPTMzEQqANJpYIioszD/41UGjyfjcc8/Mm1daVVVVWlrS1zvo90WG hoazc7QkSa5fv5bJZNx99909N27U1tYxmax4DG1ubpUKxAaDsb9vUJ+Tk0gkLlw6PzIyFA6HrjQO hMK+BQvKli6pC0ciGrWGy+FevNRtNFjlMtGLL764pHbZoW+PUSANpAizxbJq1cpkErtwqbG5pS+K oPv2nz19vtviCAjEbL5IVrV4pTIjZ936TSwWL1ObvWzpiv37P6eBsNViXbJkWX9/f2Vlpd/npYEg i83we704lgz6/RKpeGZ22mazURSl1WobGhoqKyvj8XhTU1PKbiTVuJYiJBiGKfLfCKB+GGc0l67+ HxnrVpa6lajmguxHjAXMURzmAmvuAikYokEEAQAAGI/HeXwuiiIwHUpXK9vb2/k8+qrVK+UyyTff fC0V03/x0s/37fto/sL5FvPMoW8O/vOD9z/ed3p6OiAUEHufe5HFZAz0DoyOjEVjeDyWEIiEq5av 1GZmHDlywu93ZGfrGHTYbrelfKcsZkt2lq61tb29vWN8dGxmZnr79rtIkoAZ0MaNdxQU5BMo4nFY Y7GYTCZjSsR//N3/jowM19XVrl69Esdxn883NjrOZLKdDm9hYb7X6+Xx2E/u/VlHRztFkXp9bgJN NDe3hUIRu805O2s0GswkCdhs9qtNjYbZ6YDPz2SzQqEIEgc4XGD37oeZDHY0Gl+xfNXli+foEJWm UMoVihu9fa3t10QSsVKpcLmcbe2t7R2d07NOkAYMjxkLy/LVmZrC0vLcwgqcYmn1JSw2f3FNbWfn Na/PN2swwBDdbnd43R4AoCLhEIfD+vnen+F4srHxoljAN5sMAj7XZDZwuNyysrLq6mo6ne52uwOB wODgIAAAHA4n5U+ZsolPzWcAAdoP/nj/YqbUphQ9FrAAACAASURBVO9fvHILY829vS1obstYt6Zf P3L0o35c2LldZAT5fEEgEEDRqDI9HUEQAAQxAvd4vXyeUJ+r+ctbn/ziFy+lqzXffP2lQi5LV6tc Hs8nn350/PjxyXFrOAQU5LEefvjh7dvvBpKJ0ZFRr9drsaByBUyD6G2tnR6vd0HlQoWC7nZHo9Gw XpcdjUYRBIlEIiiGvPXWOxRFDQ0N7P3Z44sWVWpLiwbaWvd9+sG6deui0WhPT09+foEqI4PAkj7D jNfrXrZsydTUBEVRR44cMRhMPB4vFIo888yL4XDs0KGvCQJ///33f/GrXxw/etTj8Z07d4EkARaT w+MJ+Hz+6Mi4zxdIJpN2u53JZJaUFuv0Oclk4/S0x2Bw2WyO+RULvX7/xMREWlpanJfo6OjouNaF UaBQxPMHPTBdlpObbTYa+AIOzKLhILh8RX1RSYlclv7Wu+9laXMr5i/uGxzLysp455130lWK4eHh TZs2ZWZogkH/1MSo2WLIytT23Li2YnmNTC5OxGMQSMgkYofDqc/PWV6/AoIgi8VisVhQFFWpVFwu l8vl0mi0VAUmGAySJJk6qs7lcOYCC/hBLp8rgN+6bo1gNy/mIunWt/7Ni/fff99P0qnbRsYfXqMl UAwEaDAMxeNxGgSgiQQAUARAcDgcCKL13hhKVwoXL14klwm5XMZnn+5/6KE935+6brOEZRLgvb// 4R///GTRomoCTf7xtTee+vnLwyMGkZDGYvEogGayOIuKSspK83g85qlT7R6PYXHVIoIgfV4/HaZj ScxkMpaWlj7zzNP1K5aLVOl4KGgyGUkAr6yrO/Xddxs2bTIZDYe/+ebIkSONjZddLieDwYRhOB5H m5qanU73Pffs2PPwIyMj4xwON5FIPPbY493d3TPT00NDw4ODQ0KhKJnAR0ZGMAwfGxufmZkdGjHZ nb78PO19u+7HCcJhdzz26GPHvruQTAD9/dc2b9ly8MDXQ0MjSpV6cGjY6QqGIzGSwjXaTJ6Q7/W5 PV43nUWPReMQBP3+tT+UzqvQ5eSdOXdxVcP6rdvvvth4tbWpJYrEknjMYp5Rpiny8/ROm22g/0Y0 Eo7FwpFIMBYL9XZ3dV3viEVDTCb0f9r77jA5ijP9qs7dk2c255W0u9IqryKKZCSCBOgAEQwWTtg4 nAXHGRsHsA8bm3Bg4DC2SQITJSNEEtJqtYqskLQKm3OcndnZyTM909Ohfn/0bqt3ghBY+O65333P PvtUV1f39HS9836hvqqaO3f2BcuWTJ8xw+f39/b2ulwuhBDLsgAAiqLUHAR1NEa11hFCJEmSJAUn NrbQuEodrtHjDJvYsUfTkklclaQ9k+wzLfQFxlcSlfHbbrsVpYxAJx1qOIMIQgUDCAGEEJAVhBQg y0AGAJotFghBa+uJQwf3T5tacmh//Z1f/9qWVw+GwmDpksLH/vCrxx99fO7succPH3nh+b/88Ls/ 2LWrqaTYdMftN5eWTekfGuHjoiTDjz56/57NP5Bl4ciROqczmJNly8stoGl6YGDA6/EVFhZs3Lix unrG4ED/1jdf+/Of/7x169s//+UDBpbheb6guPjpp5567bXXJUkMh0ObN9+DYbjb7ens7L7ppo0/ +P4Ps7Nyo9G40WgxGAzxeLylpWVwcKivty87KycUDCcE8dSpUwBgbW1tbrebphijgRASAk7BaZXT ZlbPVgC4YNlyIRHq6en0jInDw31Gi6W5ub21rcPr8Tuy7VWV0zxebzAcco4MFxTkT6uY8vJLL4+O eVqa2z/ZtfuFl17ZuWv3voOHjh09/sZbb3c0nV64bEXd3l1DAx0H9teVlBZPKSupr9/b1t4SDPog VEpLC0VJ4KNBjmNqauauXr0iLy83EPQ3Nbd4fT5120STycRxHIRQ3fBRM9LVXlfLBEGqh5qosKAo SqtRYaGeUlfDSsKQpjQ10StNjcM0zEAI8dtuu/VzUXWmBgEVWAggBSgKkhUkKwAhALw+f1FREUUS +/Y1Hj60+8039iZEtHxZ4RNP/Oqhh34zY/a8ltPNf3nur/f++GeHD5wwcOTmH3/zkd/9/prrr79w 9UX/fv9veT5hMFsikeiCmhkXrl7h9fp2724U4oHKyiqDwTQy4oIAMxgMs2bPys3N6e/r3rLllbq6 BgCEy9dchmM4huFWs2VwcODo0c+mTZt27733XrBseWlJ6ZVXXrVv334co5YvX8FxRklUWlvbGxoa 9u7dG4lESJL0eDzBYCgSiba2tvF8bGhoiOO46urqBQtqEqLQ1z8aE2Msx9599w8SorSnbm9Pf388 FjdbOZfb09za1t3tzivMM5st8YRI4IQ/ECgpL7barBuuv+6hBx+srd0tCPHc/NyxgNfl9vztb6/Z sxwmk1FICAjH+jtbrXbT12+/6YW/PHfjDRsuv+ziN17/mywlbDbzwIBzeNhZUVG+cEFNfkEuTmCj HldzS1N7ewdOkJIsAwBU6Gi0oU5knQAToYKMJEkcJ/DJoiJPNfCTRI88DY6ZAqd6k1+v5dQ2RCoz ockB0kmqEEAAAIaAAhQAFAAUBQL1BhaLjSDoyqqZRUXWoaHAymUlP//pPfMWzLPaHMePH3t36/vv b39/sCecl8Pcdc93lq+4YP6Fq1qONHh83tnzFn3ve7c//9dXBEEQRPCn55+/+porLr744v984oWh oZGxMR9BMAzDAQX6fL6jR4/OmTNzxowZWVmO2bPLli1fmpdbYLGY+/v7R0dHb7nl1oqKCp7nF666 0NnZbTCYCIKSRHlgYGjE6enq6tm58xOfN2CxWLKzcgFU/L4gw7BHjx71+YKRCEAIFBSw99xzz7vv vstx7I033tDW3h7ixYOfNuzctdsXCHx2rNE1OhqKxiVJiscTJEPPnlvt9ftDgaCsgBHX2LJlS//9 p/8WDIcPHjy4devW+fNrysunfPzJToCw119/LScnLy87a8wfqKwsI3Bqz8cfP/Lbh6YUWnOzHPvq 9nR2tCWEGMfSjY0nOA5ee+31+fn53lHP6dNNPM8TNEUTZH5RIcMa1ZROAIC6bBUxsYWzpo/Gu3Yc LKReFapA0QCRymTa5fr6JI9P/x+b2DpaBckZUKqqMJNRlcpYuAIRQgqQFCjLQFaQghBQIBaO8D6v z2Tg2ltbA2PeZ5753QVLF4qJ2K23f+2xx/5Su6sJg4lf/+r+Jx5/YuVFF+UX5j74k/t+/esHA6HA hZdcUj1n9se7aodHRq1WdmRocNnSmilTpvb2dLU199vt5uLikmgkFuOjkiQGAr7pMypyppTiUmLN 2stvuukGg92BkzRHMa1tLQCAsrKy0tKyaCDg9wUKi0vqavcePXrcM+obGhrZW7ff7w+Yzdbu7h4c J/r7+5ubW5ubmkNB4frrryYIaXjEr8jSsmVLsrLsDod97tw5nV1dwy43azQdOnT4WOPxSCTm9vhE Edkd2fkFRcFQmOeFkZHR3NxcgqIjkfCmb2za9cknZaVlN950E8tydXX1Dz740ODA0JjHQ1PU4kUL MQziEAFFSsTDQoKPRYJjo04Dy/T29JxuOp1lt08pL7NZzcuWLnOPeoLB4OCgMxLlzRYrzbKiKMsK UueRqrsVsyyrhT01JGkBKrVMUbSm7DQ+0+CSajNpmjQJc2hiEFq7UDvUg0c7hd966y3nyFgAAIAg pmAIIQXICpAUoMhAkSECCIMQI3Aiy27Pz8vZW7u/qiL/ootWKEri5798PCGAF1747fMvvji7asaY e+zNV19Zf80tjcebeQHNmjN1+cqVkCCOHm9sbu7GoBSPApYR16+7vqCg8M3Xtw4NDc6ft8BisfBR HsOAyz0CMVQzc8bUqeVZ2baWlpbvfOuu3q7uRYsWz5o5iySpcDgUj8ddI6Oz5tW0Nbe+9NIWjjMS OC3ERVlGLGsMBkM+n7+9vaPxVLc/yN+8cUNJSVFuTu7sWXNOnWoIRUB72/FfPfgLRZEbG4/3Dw2e bHbm5meNjLgCIT4QDEd5qbSsxGKxt7a1c0ZzLC4Ul5be/5OfXXnNVWNe/5aXX950551+f+D55/5y 4MDh2t17JEn2en2FBUUMzToc9iyb9Y7bbyvKz+vp6pCluMvpozDFbDIhRSkoKCgrK6+qqjIYDMeP NY75fAlBoijKbLVSFCvLiKJYuy1LlmQcxzSUwInkYD1o9JYTRZ4BltZAb4nrmQybGPZJpTGNkJK0 oQaepJpJXmGSmZUad4AAYgggoChAUoCsAFkGioIgApiRMyMZDfT1lpeWNB6tazz+6bXrrrTbLbPn Vf7gh3euXLGyt63zlRdf+un992/7+z5FARtvXv29u+/45ne+OeQcPvTpkdffeCueEA0GBkiS3zd0 ycWXzZ1bU1+3p73TZbcap06dGovFBEFQkBSJhqoqpzrKi2s/+uD++3/KcsaxMV8g4DeZjNnZ2Waz xWQyFxYXv/X6G6+//kY4FKmqrDYazRASAGAD/YP9ff0ez1jf0JjDSnM0uXzFilAofOrUqUsuubi9 vZXAE6KYoGjyyJFPjxxp6B8cGvMLYT7EcVxefj5NMxRNESTd0tK2bMUKnKQffezx+37ykxdffHnP 3rprrlnf2tZ2+OCnfIwvLiotLyuvmFph4AzOIaeYELOy7EI8Nup22axWz6izsfGod9QtxiUgJ269 +ZbKikqW5ULByJGGz1pa2mw2B0HQPB9LiApB0ADgECMQwEPhqM1mJkhc4wlVnak5n/oIu2ZjETiZ 1sZKQpueydIaWPqJgHrjXW9XqafUB5vEWOdkvAM4QVdIAYqiQIAAQtiYe7QwPx8gRRYFlqVPnmyx 2SxLLlhaWloqS8rPf/bzn9z3m5ONx1wj4pq185/848O33nbbrAU1r//tzb+++PLvH9nCR+MYQAxF mIz40GC8oDBr7px5cZ4/dvRQIBgoLy01m01u9wgCqLOzLSs7a+682c7hQZfbYzLaeF50uUZHnK5T p5pHnO7WlvYPdnzY1toZDEbLyqa2d3RGo/GBwcHTp5v7+vtsNuPCRTXTq8qamjrCvGS3GjfdeWd+ QWHV9OrcvPwdH9YiCHr6+j1jgc+OD2CEYs2ySQogCcrrD8RiQjAYCfgDjqysddde/9RTT9UsWNja 2p6Xny9LSkNDQ1trm5SIsRQ9fXqVKCa6Ortysh0cZ4jxkTGPOy8vO+Dz9XZ1+H3eQMAX8PlnzZp+ z+Z7JUnef+hQd3fP8NAIAtBotEiSDCAGAGaxWmmaCYXCAOJZdofFbE4kYgAgfGJRIZqmGYZRc6c0 410DFkEQ6oY0qY6hFppPAhbQBSD0omZSpRrvSFEghLh+OziEkKKkB1YSxZ0pY0CSZQXKCgIykpEC kIKAAjFFMXKGSDgEFBkBVFo29dPPjjW3dM2cMX/H9u03XvevTad7WQpcedWlTz/7yC233ZpfXLp3 36H7/u3+p5/e1tE2Mm9O0b/f8wOPc8Dv80KcC4UTox73huuvKysv+dtrL7tdfF6OcdrU8jHPmN/n JSk6GA4tWrAgv7hgcMg1MuTLdhRFI8LggBsn2IaGY5GIkEggCElBUlxubyye6O7tGRwe7Op13/H1 GwwczMk2LVoyv3bPPlkGguC/8eabGc6444OPunoHQ9G42xMI8aIvGOPMpmAkwZrMCoCSJAuiZHPY f/bAA5KsxOLxyy+/oq6u7oKly6677rpDBw59/NHHrhEXiQGjgSktzh/o6+loa7nlphu9Y66RoUGf 1y2LiXAwSOCQJimaYkqKi2tqFpSVTv2ktq65pSMc5iUJEQSFk5QKCkUBNE3jGAYAYmmGpkmIFIAh DIMURbMMp24ujGMEhBiEmIEzkgRFECRBkBRJUxRNEhSOEwzDkJNlXEVSVJIbqHYxwzAadWnKSnUR 9JbZOB4AICDAAABonGcgQBgAeJKNlUkmqUUw4QIgqN4NIAQQCAb8HMtCCGVJoWmW40y1e/bv3Lnz wJ6DNjO469s3PfTQL+/4xjcxDNv+3vu/+OWDzzyzpb3DPW9O4eYf3/Wfjz02b87s6ukVL7+0Pcwn ZAQC/kBJSd6atZfFo+F99ceEuLeqsgoiQNGs0WTs7Oq02K2LV6yaXlHx5/96CYNUfn6R3ZGlKKCw sKS4qKyvdzAc5fv7B/t6+48c7YhEAzgBJVm6et1lnZ3NBAkXLloIoOgc7vOH4h2dXUPDI60dPbV1 9cPuMZPVjgApiMhsyZIVMOodwzCM5biHH374d7/7vcvl6u8baGpqWrlyVSAQ2Lp1W2Njo4KU0tIS p3OkpLjI63ZmZ9kTgrB+3TU//MH36/bUnmg8DgHw+SKSKGQ5HEuXLr344otLiku7u3t276kjcFJU EDizhwxDkhRBjFvo4wxEYASBkyRBkqo9TqmBBmwiXqWqQr1pleTTpZpN6voUqSoP1w1U6wv4xLLb +lMQAAyom2KOH47/V22sLwasFMNLrVE/WFEUhmFisZjBYNi/f384HHvgp9/4xtc33njDTQxj+mDH xz/7yS9fevHd/gHvuquX/Phf77z/J5vnzp31WcPh1pa2JYuXHzq0j4/HKQaPRqWBvpZVK5bPnFF1 YN9HQwPBioqyosKicCRC0UwgFBDE2IJ5cxKJRE/nQDQcVQCy2+1+ny8Y9A8MDYx63Af27ycpijMw a9dcWDN/7t76E6IInMPdv//df0Act9kcZmvWO1vrEAB8jG/r6G5p7TKbLQBiLMdZrbZYPO7zeQma gki+dt218+bOE+JCnBf4KH/ZpZe2NDe/9eYbJ080EhheVlLisNvMRqPdZj954hjLEGWlpRBCp9MZ iUROnDjhdDq9Xt/06dNqaubPmzcPAHD8+PEjR47wPF9cUhIIBDGcoCiKYRiVXbCJcEDauJSKKr2d pKXE6M0m7cJUF0+FkQpNDZ16eEHdsKBWwNItV6QBK6kefGlgJTmPAACDwcDzvBoCVpeEC4VCohB8 c8sLlRXTjn52fPPmHz/97Dsul++CJRUPPPCv37vrrvyC/EMHDr326qsPPPDHisqCxYsXFZWUvPDK VgQkm4WM8eGC3Oxlyy4IBgJHGk4CIFZXzx4edkUioezsrEg45BwebG5qkQW5srLKZDBF+PDYmCce j3925Mjpln6AwG233kQRhD8YyMvL84wOIhAfHIwuWz6/qLh427b3W1o7onyQpCivPxJPiCzLTa+e JSlyNMZHo7FoPFY2pfzWW2/u7+vPynIsXrx00aLFIyMjbrf7tddea2xsjMdiOEHk5uWUlpa4XaMk hZtMpnA4YOCY/r7enJyc7u7uAwcOBIPB3NzcSy+9ZMaMGQih/v7+/v7+cDgMABAEwecPmExmimYY hlF1E5hILdEHPPXGeJIKIwhCnWaTip4k0KSSWWr4QAPWWUSPHgxCCFBaYH3OtnKpkgRnTXieZxgm kUh4vV517eSFCxceO3J0sN9XXpK/+5M9DZ/2LlmUde99916+9irAmj7bte9vr7+95eUdCACzGWQ5 rIHQ8PKV88wmEAyBREzEIGg4cviqK9ds2rSJ48y/fvDpqsoWAsd9kRjHMQSOd7S1Q4hDmfJ4vHw0 DjHU29055HSGQoqZA/E48Pu9Doejt7d3yZIla9eufeaZV00m8IdHn5wxs7p+736E4SajFSPpvAJr PCFH+XjvwKAsyxE+rijSHx77w9KlS599+plgMFhfv//GG255+OGHCYLYs2ePpi/y8nKsVnMkEnry qSfefvvNnTt35eXl9XV3hEPx0dExhuGKi4tXrVqlKIq6CWAikUgkEjiOsyyD47goilhCMBqNCMP1 Pap6fBr3YLqAZ5JJBCHUYId0m93ruYeYGKJJ5SSNKbRDfTmpkOkwk3xhYKXiTP0MURStVqtaAAAo ijJt2rTsbOtPf/rAlpf+tGnTN+74+m05OfYx7+iuDz5+7rnnW053ev3AaALXXrv24Ycf4mPhweG+ bX/focjAwAGrhVq1atnaKy6DEOI4OWvWLAWAw4cbVq5YneVwiKJgs9piiejwwKDZ6BjoHx4ecSKE srOzb7rhBrPV+sijfyIgOHG88a7vffdb3/qW0+2qr693OIi4INGMccf79RSDWS2WUFjgjCaS5jq6 23CC4hS0fPnyy664vLOzXd3W+tLLL7v5xpuvvuqqb3/72+Xl5VlZWXfffbfH42loaPB43GpX7dmz +7HHHovFojwfMhmN4XAsL9fBMMwdd9xRVVVVX19/8OBBt9udlZWlErl6laq/DNCIY5QCx9+khh4V W/hEhAkAoCkvjYI0wKn1ScDSGmQCViYvL9VvywS18wwsOLHTYdJDEAShLq5stVoDgYAoig6HY+PG f9ny/F8+O7p/yaJlsgR3fbz7hRdeaGo+IUqAY8GDD3792muvNhhMkhJ58skn6+oOt7WPGizYpVdc ftXVay66aDVQpLq6uj276w4eaLCY8L5+V82CWG5uTpQPhsPhsTFXb2/vqOt0KApKikzLly/nOK6l pemKtVddcuGCAweOBQIBdZG7J//4TCQSKS4q7enr50z2Cy+Z2tzcLEhSXmFJIiG53N6i4vKrrrrq 5Ve3TJky5brrrvvVr34xMDxQPbu6sfFYNMADgOVm55UUF3d2doZDoYKCPIfNPjbqViR5aLA/y2H/ 5jc2KYocj/EMSS5aNP/adev7+voaGxvfeOONwcHB/Pz83NxcWZYNBoP621P3zRJFEeKYgaMhHE+N 0rv9qiOWylgAwolBwHHAJek1PYb0Oi4JWHpJ8vVSIZUJXhAAkGH59i/DWKl6EACgznKMRqPZ2dnq DnehUCgvryAmgLfeemfUHdize+/72z+I8gCH4L5/37T+2jVTpk/r72nftm3Lc8+/6nQCSQEbb7z8 1jvumLtgnsVurdv9yZNPPXG04ZQsgXAY0ASQZRCNiRBiAGFNp1tc7iGaJkvLCtvbh/uHwtO93pqa mu6+3qKiovXr1x89eqxvwL99+47hEbfT6czPzz99urlm0SJHfsmy5au6ewbHnMMjzpbKqhnf/8G/ LlqyZPv27Xm5+XV7981fMK9ielVPT9fv//C7/u7+4T6n0WAURdHj8Vx33XWBgK+1tXXmzBkdHW3d Pb0FBdllZWWffXakvLz04osvnF5V5XF5mpqaWlpaKIryer3FxcUcx4XDYYIg1Kl12u+QoiiCpCDE 1Y7WOh4AoObopWUsBSFicthdc+gyqTw9LaUCS48/lclSuzstBj4HJB9++D5KETDZ6VPnG6r1k7cZ V7QBSBzHJUlSzQh1xiOO4yQEp48ee+dvf5MVgABgKPDwb767fNmyKSVTW1o6TjW1vvDillPNTpMF XHjx4u/c9Y3p1bPM5rxdtXtfe/21vfV7xsYATQKGASQkACIpkiFJ+t/u3fz0M08EgqOrVy41Go0F +SV/+stffH6EY+DFF/5YXV29b9+BopLiO++8U1JAVlZWeXn53vrPGBY89eSTV6y9snvQ/cZb26LR 2Nvbtn7jzm86HA5FAWvXrt2xYwdB4c8//6ev3X7zkWNHDx06kBDjUiwBJFBcVFpcXGy32xctWnT7 7bfddtttPt9YNBodHBoCANhspqKigsWLF1ut1pbmZuegEwPJbjzUpQVPUlUYRlEMws4kBKvGuOYb plFtE96cBhr1UJupnAQUfPKsG40UCF0+lh4oWn2S6PnsDHoAwCeM9yRJf5ek4Z1zEW2OkTopWwWf qKDSsnKapSLRxK9+edcdX9sIUcLv8z3xxBOvvPz2qA9IANx2y1V3ff+uqZXlgaB3/4HDjz72X27P mMsVTEjAYARGI4UBQkpAIY5kIIejwR/ec19BruVrt93hHh0KhEP5hXDBwoWtra0eT2Tnrk+8/sDL W14xWWzlUyuOn+y8ZN78I0eO3HHHxl21u0+cOr189aUkxYTD0d7+gZ0ff/Loo4+3tLRhGDZ9+nRJ kU83nhrs7X388ccXLqyprJrmsFpjsXjDgSPqyvihUOC99951uYZ8vjGe50dcwzab+Zprrl6+fHlb W8v+/fv9fj8GodlgTgUWNjGImwosHMcBPp4FpSlE9X9a1aaZ8BpY9fHMVLNJqzy7XjvvkmYT6S93 I1EUtZeobpMsiqIkJ0w2IrvQMt3quGnjnfaCKU///uH/+uOTobBsMoPNmzes/5fry6dU9vQ7//T8 S/X7Pj14qCEcFhEGcBwYzcBgMOA4KcSleEKy2XOCwXBCFmmaCvPRzu6uG2+49q2331i5avX0WXM2 bfq+yUh8dqyxqa2zo6dXlrpvvPHGYISnWeOaq9fPnTs/HEv89cUtBrMjEE0wBq5u9+7ny8s3bdr0 zDPPTJ1aUVtb+9e//tVkMkytrOQ4qqy0VBDjoy4XxzDlpSXdXT1Bf2DmrBlDg/1dna3FxcU52Y75 8+bY7Xaz2fTBjvdPnTrFsmxxYUksFoMKwDKknWgMdAYKKpaoNDaTykCp91GP9XyTRGDnEjL4J+Ds zMJrqaGpLyTa5fqHQwhZHfZZc2Y3Hj3V1d2PIQInGFkBt9++/voN18yYOV0C6IMPP3719XeOHm+O x4GCcKvdpEAFQgQwIMlQBoBgDCaGADgdFwI0w8qJWCicaO1oD0XCP//FL3Z88Ik/ECktyxVEKSoI ogJCYaWqury7f2jzvff9x3/89v6f/uydd7blFuRvvu8nOEHt+2jb5WuvLCgu3rJly4YNN5Ak+eyz z7IsjZAci/PxofCMWTOCPv9Nt9x4+ODB1tbWhBh3OCySJJ06dUJRlIqKig0bNgSDwUAgMDQ05PWO xeNxzSqPx+NmzqgBQvsPdXNg9FEDACFCMK3NlOTNnQGo7p5ABywwma70Wg+kU4WawBQ7/bwIfsst N4N0q64l4SNtgFRfDyYcRs32AgAAiEWCsZycwq1//9jnG1i3/vKS0uzLr7hozZorrJasbX//6Pd/ ePrtdz7s7B4KhuWYqNAcIcoIAAxCTIG4Cw4hHwAAFwJJREFUpABZwRRAIEC6RjwKwAxGk8VmpkhE Ubh71FlYVPzwI4/6A6FgKNw34BOlmKSA3z7y8EMP/frThiOcybJ7z96W1jYFwYsvubSiYvo7W7d9 61vfunDVqsGBwdMnT+6tqystKV61YqWB5TyjbkWWKZIoLi6kCGLFimWJuLDjvXdJnBwbG+N5kSDg DTf8y+rVqwVBOHToEM/zfX19oVDYYrGYzWZRFEVRMhgMGMIxiGMYru51gGHjZYIg1f8EPv6H4wRO kBBCgjoTCNWQRGRIX0nlJE1dam30QASTrfu0vJWEv7RASVuvj7ynAVZaxvqiwFLbq46PtjAuhmEy QiVlpRwHP3h/9zVXX8QxNIHhBw8e+tY3v/vOu/W9fSMxIU7QHGNgCQbLzs3DMJpmOIpmcYIAEBcR EBKKIMiFxeUmo0lICLIs8Xw4HAn6A6MYjtcfaCEZjKaZSy69cOWq1Xv3H/rRj34ciydIimpqbu3o 6BoeGX3kkd+fONlkMpkdjqxLL73kqaeeCgYDo6OenJxsjuM+PdxQVFxgNVtCwWBBYX4o6BsYGKit 3UURpNc7hmHQarVUz6yqWTDfkWU/cuSz2tpakiQ9nrGcnJy8vDy1MwwGA4YR0VCEZVi9IaXBJTUV mCRJnMC1wRoNVYQu+wVPDZenC4Fq2lBPk0mGl140zAEdY52dur4osCZt0qRH0nnhRoghDEf9Qz0V VZUAgmeefaG6ctrJY0cPHjwmJgDHAovd7A1GYkLcyNihRMViEAJaEkUZyQgigOM0Q9M0AQA+MDhs NBrzc3La20/Prp4qJsKe0cFINPq9u7/2pz9v+frXbi2bOoXjjGaL5ee//KXFbJsxY8aevfUGozkm Kuuv3dDW2bOrds+SpYuXLVvGGRie5yumVc2ZNZdhGJZmIIRWswXHMPeIKxINmEwml9M7NDCQbXdM mzaF4zifzzc8PNR08gRBUAaWNhkM2fYsRVHi0ThCiKRISZBwjCgsLEzEhbSqkKZpmGq84xiEEBI6 E2oCgpkCnrKi4BOmvd4hADoAabcCOppIklT6OL+C33zzxvSYyMBY4ynuCJ3507WBEw3Ui5GiRPlw Xk4ORLC0rPSVl7cdP3qsq2sEYsBgpqK8TLMUzRqMFgfDGkKhGI6TFEkqCpJkCSkyhuEIAUVGopCw 26wEDv3+MRwCv9fjdPoeffzhN958e9M3v/fu9vdmzZkTicYDwZA/ECwvnVI1YzpJMT/60Y9MVmvd 7tr8wqLnnnsOx/EjRxqkRMztchkNLIZhpSUlHMusu2bdRx9+eODgPofDHgr4kCKbTYYbNvxLbl5u WVlpf//A2Jinv3+QZblQKGwwGFjWQBBEMBjCMAwANfZN4ziBYRjDsAgoGI7jhMo8BE7gOIFjOE4z tFomSJIg1VMEjuMETRG6DDs1vqWmHujpSk9L+vZaG6Rbv0qv+JIS9PTKLm1BpbLUv7T14OyqMC2w UiNbKlwwBCAAEAEMQIAQBiDU1UAEAEJAQUBBSFGQjGiSikUFmmKnlE/bvn2HIAGGpRiDSVJwnCQV QBEELSlKNMKTJMHQBFIkpEgQKQQGSAzDMQgVBUMyUOQch8052FdWWmJgudranQ57zns7PrI6cgxG 67vbd/CxuM8XUCCsqprBxwWCJBcvWeL1jvX09W3d+nZhYb6CZIbCs+xWr3uEpemSoqJoJCRLCUVO DA704hgI+L2RSGRmddX37747Jyen8XjjyROnwqFIjBdwjFBkZDSYSIIiCRKDGIlTGMQInCAJEscw AscJHFeQglOkakQRapoLRZIURZAkThAERRIUiROE6jfixHgzTB2oUTFEEBBCBSFSrddBRO0CNacv yZYCE2sx6AkJ6ZKJM2m6pMrx/k33h0MsA+DSwiczsNKKSkjj6EEAKQhMlLX/aiVSEEAIAkDgRDAQ wnECABiNRp1OJ8uZojGBYjgEcYjhAOKypEiSBJCCQShLkiQmkKKQBEGRFJLkSCgYCPihIkEkX3zR hf/xm19Ho9GDBw/vrdtXUFBscWS/+NLLLGcY7B9YcsGy73z7rr+/+y5BEBs2bNi7d++2bdtONR6f O2/uzJnVFou5vKzEzBkCfl+M5+MxHiGltaW5qek0y9BZDvvUqVO+9927VqxYsW3btu3bt6suCIFT qhl+xuLGCQI/M1lPn9mC4ThBkVhK1u8ZW4kk1cvG2+hsqSRRY6R6fXoWGxyk0E9SfSo5ZQSWxhTJ AEoPrEy69MsAC6D0Uy1So/YAAAzD/H6/0Wjkeb6wsLCpqUnlZ4Zh4MRIvraGoP77y7KcSCTUuCuB 40ajsbCwkOO4/v7+9957jyCIkZERr8/X1NxCkiQGIUXTBo4TE4ncnBySIN55++1XX3klkUgYDIYp 5eW5OTlLlyxpbW7ubG+PhEMYho2OejAMms1ms9k8f/78NWvWxOPxo0ePHjhwwOl0UhSlbo0MwKRR PL1ZTaYIQRIkTWkttdwp7cLU1OEkI12rUYGlt7E0VajhJsk3TAXTuei+NMBK2/WZjPo0AXkAAMhQ /aUk6TvAiawHHMcZhuF53m63FxYWiqJoNps1mwDogjEYhqnDZCRJiqLo8/l8fr+iKFarVZKkzs7O vr6+QCBgsVgikYjL5bJarXfddZe6VRqEsLe3t6Ojw2AwqONORpPJMzoqy7LL5RIEYfny5TabLRKJ BAIBt3tMVkBWVtb69euvv/56juOeffbZ9vb2gYGBQCBQUVGRlZU1NjamJtBNIp4J0fKlVADpD1Nr 0s4OTb1nEoBSQwyZQgapSEpVfElMdr4EZZB/NG1GE5gu60ElHpqm1QCEJEkLFizo7e1VxxOJidn+ SW9QvZYgCHU7F4qi1DbqKv6Dg4Msy27cuDE7OzuvIH/d9RteeOnFSCSC43h+fj7Lsm1tbRzH4Ti+ cuXK+vp6m80Wj8d37tzp8/mEGB8KhSiKys7OXrVqlclkOnbsmMvlkiTJaDS6XC4AgNFoDAQCOI4X FBSowwkwQ6wIpvPyMIKAKUyjvhC9SaQ10FOOJiBDZgFIwUcSpJLawwnPMW39+er6tHLegAXSMZb6 rUiSDIVC6sa+c+fOPXDgQGdnJ8dxDMNoMFJ1oiRJPM+LoqhmohoMBpZlNXXJ83wikcjOzi4vL1e3 aTy9pelUSytN0xzHKYpit9t9Pl92drbVaqUoyul0QgjV3d4Zhqmrq5s2pfyyyy657tprT58+ffDg wUAggGGY2WxWV59OJBIOh4NhmNHRUYIg1JxYkkhjLKtfKglYOI4DDOIUCdLNPEYT+VUasAjdrJi0 wNLqoU7TpYYPQDqc6TtFX/jSdJURiBnqzyewNEmCF8uyfr/fbDYDAAiCmDNnTmdnpyAIqp2hBuvV 3c8FQVCzclU9gmGYan6pX8xqtYbD4VAo1NPTU1VVVVNTU1hctOO9d8ORiNloGBlxJ+KxgoKCbIed 49gP398himJpcdHAwEAwFOLy86aUlebn5c2ZM6ehoaG+vl6WZbPZHI/HfT5fcXFxIBBQDcFYLGa1 WnEcl2WZZVkMnhlawVLiUkkA0oCVqtdkWVZ1nwaIpDBBkrIDOsDpgSWKYlpUZQLQVx2vyiRfiSrU 1yOEWJZVlYsoim63u7Ky0m63e71eLQlCkiRFUQRB4OPxaVOmFBcXFxUVybKsZohHo1H1harRHZIk Y7FYb29vQUHB0NDQmjVrWlpba2trzWZjKBQaHR2dP3++KIqRSMRms8ViMVEU165dI4piTk6OmEi8 9dZb/glWGxwctFqtRqMRAIBhGMdx2MQEOhXNBEHogYXr/H/9IPEkYJHJwNITnp6xcF1KcSpjaW81 ybTS9g3UGqSWk7ogrSo8P72eWeB7772bNFwDJvL5Uy0yCACQFXUC2OS1SceXlkzN04pEIgaDQZKk SCRC07TJZPL5fF1dXd3d3adOnYIQhqNRI8eZzWa/319dXb1o0aKcnJy+vr5YLGa32/v6+lpaWsLh sNFopGlalmW3211RUVFaWjo8PGwwGQmaqKiqPHz4cGdnp+oTmM1mhmFkWR4dHa2srFy/fj3HcbW1 tc3NzUbOQMDxXkpigkyMQuAU1NlYGmNR1Jl1p84ADsdIhgYpQNHag5TAEsMwaXsdSxl1UQWbPFtG K+AT07OSBEuXR5URDQDgajAy9VQGLCIgp30eIi2qzv1R9B+sZyztUNVl6q8zGo0KgkDT9KxZs+x2 e3t7u8/vt5rNKpmVlpbOmTMHw7BAIIAQUqdmWK3WysrKrq6uUCjE87wkSeOJlIqSlZVlNJuaWpso hlbNMjXRgOd5v9+/YsWKdevWEQRRV1fX2dnJsmxubq4sSlBBMN0aBNjEtOAkYOFY+iwDIl32AVBT 9tKptrSS2m1nJ5XUyn++jsskaPIwYLIq/AedBThhsGsgo2laXRiToqhEIhGPx2madjgcNE1XVlaq m5vJspydnV1dXe1wOARBCAaDsixTFBWJRDiOKy8v9/v9Xq/XYrHEYrFgMNh48mQikdi8efPNt95S UFwwNjZmMBgMLOf3BxNxYfbs2Zdcckkikejp6lYXU7RbbRiGiUICQkiRZFrGymRc41j6vKikfKlx FYZBiONpgZUWYeAcIJXU7CyV50WQGug+9/YgTcoC0OdjpS18IYGTnVj10GQyhUIhFU8mk4nn+Xg8 7nK5WJadPXv28PDwwNCQgWWNRqPJZFLDoQAALToqCALDMLm5ucdPnIAQSpKUm5sriqLf79+xY0dd /d7CvHz3mEf1KGfNql6zZg1CqL+/v6OjI5FIEARhs9koihIEQfU0oazoe1pvLJ8xlXTAwuCkhVky MdYZYBHpgYVnSBE+O7BSAXSO3PZPliQ2Aamq8EszlsZVmmjciE3klKqTyCORiN/vRwgVFhba7faB oSE1Ch+NRgsKCvx+v8FgUHHAMIwoirFYLCcnx8CyJEkmEglVSyKEent7na4Ri8VUVFS4bt06q9Xa 3t7e1dXpdDoBABgG8/PzGIaJRqPBYADDMIPBwDCMEI1pT6hhC+gW0tTOjh8CHKbzCvHJMcwzqpAg 0tpY2Dmsn64vnAvgwFeAqi/NWFp3n42xvpykZSye5yGENK1uMpOAEKph6HA4XFJSMmPGjNOnT0ej UW0EA0KoLimmRlDVpeskSYrFYnl5ebm5uX6/f3B4GADA83xuXvaixYuz83Ioitq/f/+pU6dyc3Nz cnJCoVBRUdHIyIjH42FZ1mKxqJEwIRbTQ0ff5dpICzbZawMow6SGdDnpZwGWBpckSXqB4JwZK+3Z /y7RGEt7mH+G8Y5NTB1We5cgCJWKRFGcPXv2sWPHOrq61OCn1+tlGEZRFIPBgBBS14AQRfHEiRME QfT19ckIAQBKi4sLCgqMRuOUqWWyovT19JwIBFiWnV5ZmUgkkCwDRenp6jIYDNkOhyRJSJa1G2aa zaINsCTVIAXCFJWHTUTeU413hEGgrWo30UZPMEmietNnB1Damq8IVZkY63M/KEkbEjD19D/wWDDF eCdJUg29qMs4xWIxdQnNnJycwcHBqVOn1tTUdHR1DQwMcBzHcZzNZgsGgyzLQgi9Xq/dbhdF8VRT 0wVLlnR3d4fDYbvdvnr1arvdfvLkyeHhYQzHcQKLxwSSJCmSBiBBU0wERgryC2NxHiBotRoJnEyI giIjA2fEdM68nrH0ycFAHxmfYKwkGysJZBqwZKCLS01cqH8/2tnx13VuADp7m7P1yDn33dklE90g kCYnFCFEAFmZdNlEYdLExUkZfBBgUDPI9MykNdfenQYvdUAGTnSqapvLshyNRmfNmmX56CMVcCdP nvT6PIsXL0YIjY2NlZQWjYyM1NfX4xg43NBw5drLr7jiCghhW1tbX3+PyWxQg6WyBK1mG4CKIiGa pEVBMhvNoiARGAEBLosykiCGYeMJ5hOqMElVaXGpJKZhWCZtvcp8ICkuhQBL0/r3ABAAsgJ1xrva G1BR3zPCcQzp238eM2FfMC6l9u8XuCTjyE0GYCGItMfThxvGb6RdNVGY9AFJbc7+ZDpLS8/5STWq IR8OhwsKCq666qqdO3eeamqiSTISDTmdTpZlTSZTPB4/duxYXJBmVlfdfffd8Xh8ZGRkaGhIHXIm CEIURZKgwVl9db2VkwlYAACSJME5bNunv1Wq6N+biqozSEITOANnCgCDSaj6KiQTVr5SOc+D0GDy 4BRCCJtYLVMjObVG9f4wDFMUZd68eQRB7N+/3+PxDA8P+/1+QRCEhFxYkHv11VfPnDnTZrN1dHTE YrF4PA4htNlsAADVc1Qj4/oH0D9PKiDwlB369AyUWo9PTPfLBLhkYGUwrlMfEsI0qPrq4PVPlvM/ VphUTgWWNtRjMplIkhwdHUUILVu2rKKiYv/+/bt27w6F+SyH9eJFi6qqqrKzs2Ox2PHjxwVBwHFc XUdKEATVDM/Ozo6EeZDZJz9HYAEAMqlIPZJSAZcEsqRn+EIFMBmC/6CH/t8u55mxUt1OzR/UG2QI IY7jRFFUl3sgCMLv97Msu3DhwtlzZnZ0dBiNxsrKSkmSXC4XjuN2u52iqGg0Go/H1dkBmhNHZFiD QDtMUoWpwPoSgNO+VyqwUIb8p/SQmlCJ/zhjZbaBztWGOb9ynhkLTvYKwQRj4RMbVqsIU30ok8kU i8UkScrOzna73fF4vKioKBanampqSJLkeV5NZWFZ1uPxBINBNbKl7h6jpgpCCFXbCKSDlCaYzvvL pNoyAU4FblpVmPQpqqhOTBLK9W8pUyGp8v8YK1mSEIZNLBGunVJTIdQ1VVQ+UDP1cBwXBMFoNIbD YVEUaZq22+2KokSjUUmSHA4HmsixUXmLpmmWZZES0z4X6PpG6/gkxkpVbUngS6rXbgIne4Wp8FVl fAr4WUNTkwCU+ewXkv8uxsr0tOdfFSYdam8cTH53+fn5nZ2dVqtVHUwURdFms3k8HiExHhzXkv60 xHBBECRJwjDMarViGKYOSLOMIekbJnV5qqkEPs/709dr8/KS7pP6KSAFTP80VP0PFPjuW2+BdGF3 7ZenVSb9JpIuUaOgGiHprXX1bmhyjpe6omRqe0lOAJ2Nr4mWR5r86Ur6ntB3vJ5jMtlGHMeBDEAB 6egnk22XepUqWLr4E4IA6OJY5yKZkKfV618RnJgnmCppnwdM7vdz+dxM9/mqvEK1kGR16dvojXpV XYLxWYlYKqurnZ0GVQilRq5VwTIM+uIps9FBCsnpD/XP8LkFkKED/tfw0LnL+Y9jqaKPZqmSZGxh ujCEFtwCAMhKeiaDOidcj7xMjJVkXOtNLpgiadsnoSGtmjuLCktlsv+v5HwyllZGk5MJoW6oFdPt QgZ1trzWOBOTaXdOLmQYDcvETJmYLJOXl/QLyVSAOpJOrQSZEAb/W0IBAHz1cbKvBFhJZQ0iGlBA yqpJZx6IIFKZLAl8euDCDDo+E1DSyllapur3s1NX6kv4301amQB6/oGVSldqIUkVqmU9LU00w1Mt d6BzDpK/D0oPrCTGygQjTeVlUpFJX+Rzqev/GEuVr3b6VyrItEM9M+ntLQDHdV+SjaV5YUk8B0H6 2Sn45M2xP5ectIfXAAcmK3HtKyQVkirPQl3/K+UrZyyQzuPVv2ikW6wB6WLx+hgEmDDeVdEDjiAm LZd65kO/FLBAyjQsSZIy4S/pC56dyVLfxvmVTDf9nwbe5FWTtdehuWn6U1r3p4q+y/XXalfBCcWn HcLJo4ra5+pvmHTnVFWoASupg/VuXSZG0Z4E6FRn0ln1mdWn0oZrUoM32vNkmt+nmpjq11d/S+qh rIhqamXS86uZt0ntcYiBlAX+tfunrYcYlhZ0SSMEWiHTfbAMy8pgkFCnkWITWbXq4f8DHjWUEUiZ w2oAAAAASUVORK5CYII= "
-       preserveAspectRatio="none"
-       height="17.401585"
-       width="21.616873"
-       style="stroke-width:2.44793344" />
-    <g
-       id="g1016">
-      <rect
-         ry="0.6681723"
-         rx="0.6754306"
-         y="80.024918"
-         x="241.73944"
-         height="5.1971722"
-         width="30.427082"
-         id="rect976"
-         style="opacity:0.98000004;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text1881-8-0"
-         y="83.806374"
-         x="250.95723"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke-width:0.26458332"
-           y="83.806374"
-           x="250.95723"
-           id="tspan1879-0-8"
-           sodipodi:role="line">Sketch</tspan></text>
-    </g>
-    <g
-       id="g1021">
-      <rect
-         ry="0.6681723"
-         rx="0.6754306"
-         y="80.024918"
-         x="198.23846"
-         height="5.1971722"
-         width="38.846073"
-         id="rect976-4"
-         style="opacity:0.98000004;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text1881-8-0-9"
-         y="83.773048"
-         x="202.8407"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke-width:0.26458332"
-           y="83.773048"
-           x="202.8407"
-           id="tspan1879-0-8-9"
-           sodipodi:role="line">AutoConnectAux</tspan></text>
-    </g>
-    <g
-       id="g1053">
-      <rect
-         ry="0.6681723"
-         rx="0.6754306"
-         y="80.024918"
-         x="152.92036"
-         height="5.1971722"
-         width="38.846073"
-         id="rect976-4-1"
-         style="opacity:0.98000004;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text1881-8-0-9-6"
-         y="83.773048"
-         x="160.96425"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke-width:0.26458332"
-           y="83.773048"
-           x="160.96425"
-           id="tspan1879-0-8-9-7"
-           sodipodi:role="line">AutoConnect</tspan></text>
-    </g>
-    <g
-       id="g1108">
-      <rect
-         ry="0.6681723"
-         rx="0.6754306"
-         y="79.441742"
-         x="113.52975"
-         height="6.3635254"
-         width="35.61591"
-         id="rect976-4-1-7"
-         style="opacity:0.98000004;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.13229164;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text1881-8-0-9-6-7"
-         y="82.258522"
-         x="114.9646"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222199px;line-height:2.3812499px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222199px;line-height:2.3812499px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke-width:0.26458332"
-           y="82.258522"
-           x="114.9646"
-           id="tspan1879-0-8-9-7-5"
-           sodipodi:role="line">ESP8266WebServer</tspan><tspan
-           id="tspan1082"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222199px;line-height:2.3812499px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke-width:0.26458332"
-           y="84.639771"
-           x="114.9646"
-           sodipodi:role="line">WebServer w/ESP32</tspan></text>
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="88.294197"
-       y="99.252266"
-       id="text1881-0"><tspan
-         sodipodi:role="line"
-         x="88.294197"
-         y="99.252266"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan1938">POST /{URL}</tspan><tspan
-         sodipodi:role="line"
-         x="88.294197"
-         y="103.22102"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan1942">Input=Value</tspan><tspan
-         sodipodi:role="line"
-         x="88.294197"
-         y="107.18977"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan1944">...</tspan></text>
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/mkdocs/images/ac_upload_flow.svg b/lib/AutoConnect-master/mkdocs/images/ac_upload_flow.svg
deleted file mode 100644
index e2b7fd33f3b764e8373656ecf6f458cbcdc44ff5..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/images/ac_upload_flow.svg
+++ /dev/null
@@ -1,973 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="832.03271"
-   height="436.492"
-   viewBox="0 0 220.14199 115.4885"
-   version="1.1"
-   id="svg1212"
-   inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
-   sodipodi:docname="ac_upload_flow.svg"
-   inkscape:export-filename="C:\Users\masaki-owaki\Documents\Arduino\libraries\AutoConnect\mkdocs\images\ac_param_flow.png"
-   inkscape:export-xdpi="115.2"
-   inkscape:export-ydpi="115.2">
-  <defs
-     id="defs1206">
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker3715"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3713"
-         style="fill:#7f7f00;fill-opacity:1;fill-rule:evenodd;stroke:#7f7f00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:isstock="true"
-       style="overflow:visible"
-       id="marker6593"
-       refX="0"
-       refY="0"
-       orient="auto"
-       inkscape:stockid="Arrow2Mend"
-       inkscape:collect="always">
-      <path
-         transform="scale(-0.6)"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         id="path6591"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path1975"
-         style="fill:#ff7f00;fill-opacity:1;fill-rule:evenodd;stroke:#ff7f00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Send"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Send"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path1981"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="matrix(-0.3,0,0,-0.3,0.69,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2"
-         style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-2"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-6"
-         style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-2-6"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-6-8"
-         style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-2-4"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-6-0"
-         style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-2-4-6-6"
-       style="overflow:visible"
-       inkscape:isstock="true"
-       inkscape:collect="always">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-6-0-2-9"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#ff0000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-2-6-6"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-6-8-8"
-         style="fill:#7f7f00;fill-opacity:1;fill-rule:evenodd;stroke:#7f7f00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-0"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-9"
-         style="fill:#7f7f00;fill-opacity:1;fill-rule:evenodd;stroke:#7f7f00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker3715-8"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3713-3"
-         style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend-9-2-6-6-6"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path1975-2-6-8-8-4"
-         style="fill:#7f7f00;fill-opacity:1;fill-rule:evenodd;stroke:#7f7f00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker3715-4"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3713-37"
-         style="fill:#7f7f00;fill-opacity:1;fill-rule:evenodd;stroke:#7f7f00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4"
-     inkscape:cx="576.50905"
-     inkscape:cy="263.28958"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:snap-global="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1001"
-     inkscape:window-x="2551"
-     inkscape:window-y="-9"
-     inkscape:window-maximized="1"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     units="px" />
-  <metadata
-     id="metadata1209">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="レイヤー 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-54.981799,-75.851144)">
-    <path
-       style="fill:none;stroke:#0000ff;stroke-width:0.52916652;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.52916662, 0.52916662;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker3715-8)"
-       d="m 149.8027,96.729094 -43.59026,0.08012 0.0673,28.186016 h 5.45207"
-       id="path3703-7"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-    <path
-       style="fill:none;stroke:#7f7f00;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.52916664, 0.52916664;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker3715)"
-       d="m 111.8047,106.78303 h -11.34039 v 66.35563 h 11.35111"
-       id="path3703"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-    <path
-       style="opacity:0.98000004;fill:none;stroke:#0000ff;stroke-width:0.52916676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-2-6)"
-       d="m 195.19023,96.750973 h -43.8169"
-       id="path1946-5-8-3"
-       inkscape:connector-curvature="0" />
-    <rect
-       style="opacity:0.98000004;vector-effect:none;fill:none;fill-opacity:1;stroke:#2f2f2f;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect1215"
-       width="182.27782"
-       height="112.94661"
-       x="92.779808"
-       y="75.91729"
-       rx="1.0996704"
-       ry="1.069078" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect6127-8"
-       width="37.797615"
-       height="19.074368"
-       x="153.76596"
-       y="132.42233"
-       rx="0.10748193"
-       ry="1.069078" />
-    <g
-       id="g1430">
-      <text
-         id="text949-6"
-         y="105.29527"
-         x="58.145821"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-           y="105.29527"
-           x="58.145821"
-           id="tspan947-1"
-           sodipodi:role="line">Upload</tspan></text>
-      <rect
-         ry="0.67643666"
-         rx="0.63003838"
-         y="102.61222"
-         x="69.819984"
-         height="3.4612906"
-         width="12.960772"
-         id="rect971"
-         style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.24287613;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-    </g>
-    <g
-       id="g1153"
-       transform="matrix(0.05237375,0,0,0.04755636,54.981799,95.989516)"
-       style="stroke-width:1.17960072">
-      <g
-         id="g1097"
-         style="stroke-width:1.17960072">
-        <path
-           id="path1095"
-           d="M 578.766,51.487 V 50.592 H 575.77 35.93 32.934 v 0.895 C 15.272,52.701 2.095,66.753 0,83.808 v 3.002 355.724 c 0,6.898 1.795,12.712 4.791,17.949 6.893,12.137 17.068,18.269 31.14,18.269 h 197.012 v 49.695 h -37.425 c -9.281,0 -16.467,7.218 -16.467,16.48 0,9.262 7.186,16.479 16.467,16.479 h 220.666 c 9.281,0 16.768,-7.218 16.768,-16.479 0,-9.263 -7.486,-16.48 -16.768,-16.48 H 378.759 V 478.752 H 575.77 c 14.078,0 24.343,-6.132 31.14,-18.269 3.085,-5.493 5.091,-11.37 5.091,-17.949 V 86.811 83.809 C 609.905,66.753 595.833,52.701 578.766,51.487 Z m 0,35.324 v 355.724 c 0,2.108 -0.895,3.002 -2.996,3.002 H 35.93 c -2.095,0 -2.996,-0.894 -2.996,-3.002 V 86.811 83.809 h 545.831 v 3.002 z"
-           inkscape:connector-curvature="0"
-           style="stroke-width:1.17960072" />
-      </g>
-      <g
-         id="g1099"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1101"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1103"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1105"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1107"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1109"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1111"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1113"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1115"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1117"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1119"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1121"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1123"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1125"
-         style="stroke-width:1.17960072" />
-      <g
-         id="g1127"
-         style="stroke-width:1.17960072" />
-    </g>
-    <g
-       id="g1877"
-       transform="translate(-61.780506,-30.859554)">
-      <rect
-         ry="0.67219514"
-         rx="0.75240886"
-         y="140.51062"
-         x="125.32892"
-         height="4.2002602"
-         width="14.163605"
-         id="rect977"
-         style="opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text975"
-         y="143.79285"
-         x="126.04444"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#f4f4f4;fill-opacity:1;stroke-width:0.26458332"
-           y="143.79285"
-           x="126.04444"
-           id="tspan973"
-           sodipodi:role="line">Submit</tspan></text>
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="60.579521"
-       y="96.507751"
-       id="text1881"><tspan
-         sodipodi:role="line"
-         id="tspan1879"
-         x="60.579521"
-         y="96.507751"
-         style="stroke-width:0.26458332">Web Browser</tspan></text>
-    <path
-       style="fill:none;stroke:#ff7f00;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
-       d="M 78.820918,111.56564 H 111.72815"
-       id="path1946"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="73.161201"
-       y="105.38773"
-       id="text949-6-9"><tspan
-         sodipodi:role="line"
-         id="tspan947-1-9"
-         x="73.161201"
-         y="105.38773"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">File</tspan></text>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 150.17922,86.615905 V 185.54596"
-       id="path1883-6-0"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#0000ff;stroke-width:0.52916676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9)"
-       d="m 113.29213,124.97559 h 35.68103"
-       id="path1946-5"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="115.26271"
-       y="129.96916"
-       id="text1881-0-8"><tspan
-         sodipodi:role="line"
-         x="115.26271"
-         y="129.96916"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan1944-9">HTTPUploadStatus {</tspan><tspan
-         sodipodi:role="line"
-         x="115.26271"
-         y="133.93791"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3723">  String filename;</tspan><tspan
-         sodipodi:role="line"
-         x="115.26271"
-         y="137.90666"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3725">  String name;</tspan><tspan
-         sodipodi:role="line"
-         x="115.26271"
-         y="141.87541"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3721">}</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="115.43201"
-       y="118.76357"
-       id="text1881-8-1"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2"
-         x="115.43201"
-         y="118.76357"
-         style="stroke-width:0.26458332">RequestHandler</tspan><tspan
-         sodipodi:role="line"
-         x="115.43201"
-         y="122.73232"
-         style="stroke-width:0.26458332"
-         id="tspan2508">::upload()</tspan></text>
-    <path
-       style="fill:none;stroke:#0000ff;stroke-width:0.52916682;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-2)"
-       d="m 150.54404,125.13896 h 43.78867"
-       id="path1946-5-8"
-       inkscape:connector-curvature="0" />
-    <path
-       style="opacity:0.98000004;fill:none;stroke:#7f7f00;stroke-width:0.52916688;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-2-6-6-6)"
-       d="M 239.54653,96.719781 H 196.76871"
-       id="path1946-5-8-3-9-3"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 239.85912,87.752339 V 185.54596"
-       id="path1883-6-0-9"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:0.15451667;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       x="156.55374"
-       y="133.4962"
-       id="text1881-8-1-2"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2-39"
-         x="156.55374"
-         y="133.4962"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke:#ffffff;stroke-width:0.15451667;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">HTTPUploadStatus</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="160.9971"
-       y="137.82475"
-       id="text1881-8-26"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-1"
-         x="160.9971"
-         y="137.82475"
-         style="stroke-width:0.26458332">name</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="173.87938"
-       y="137.82475"
-       id="text1881-8-26-3"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-1-9"
-         x="173.87938"
-         y="137.82475"
-         style="stroke-width:0.26458332">value</tspan></text>
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680"
-       width="10.156241"
-       height="2.271791"
-       x="160.3961"
-       y="138.84807"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-0"
-       width="14.432554"
-       height="2.271791"
-       x="171.16446"
-       y="138.84807"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-6"
-       width="10.156241"
-       height="2.271791"
-       x="160.28645"
-       y="142.29257"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-0-6"
-       width="14.432554"
-       height="2.271791"
-       x="171.16446"
-       y="142.29257"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-6-4"
-       width="10.156241"
-       height="2.271791"
-       x="160.28645"
-       y="145.99748"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-0-6-4"
-       width="14.432554"
-       height="2.271791"
-       x="171.16446"
-       y="145.99748"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 159.1934,148.46406 1.36975,1.36975 h 24.82266 l 1.41987,-1.41987"
-       id="path4757"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="164.17282"
-       y="100.55426"
-       id="text1881-8-1-7"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2-2"
-         x="164.17282"
-         y="100.55426"
-         style="stroke-width:0.26458332">REGISTER</tspan></text>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 195.56495,87.284079 V 185.54597"
-       id="path1883-6-0-7"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="152.71837"
-       y="90.008881"
-       id="text1881-8-2"><tspan
-         sodipodi:role="line"
-         x="152.71837"
-         y="90.008881"
-         style="stroke-width:0.26458332"
-         id="tspan6554">AutoConnectAux</tspan><tspan
-         sodipodi:role="line"
-         x="152.71837"
-         y="93.977631"
-         style="stroke-width:0.26458332"
-         id="tspan1087">::onUpload(<tspan
-   style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;fill-opacity:1"
-   id="tspan4640">uplooadHandler</tspan>)</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="152.73938"
-       y="122.58165"
-       id="text1881-8-1-4-4"><tspan
-         sodipodi:role="line"
-         x="152.73938"
-         y="122.58165"
-         style="stroke-width:0.26458332"
-         id="tspan4053-5">INVOKE <tspan
-   style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;fill-opacity:1"
-   id="tspan6086">uploadHandler</tspan></tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="212.22472"
-       y="144.60533"
-       id="text1881-8-26-3-5"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-1-9-0"
-         x="212.22472"
-         y="144.60533"
-         style="stroke-width:0.26458332">value</tspan></text>
-    <rect
-       style="opacity:1;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect4680-0-61"
-       width="14.432554"
-       height="2.271791"
-       x="209.5098"
-       y="145.99748"
-       rx="0.32010251"
-       ry="0.36037335" />
-    <rect
-       style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#0000ff;stroke-width:0.26458332;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect6127"
-       width="37.797615"
-       height="10.583333"
-       x="198.7722"
-       y="140.17085"
-       rx="0.10748193"
-       ry="1.069078" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:0.15927915;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       x="202.15651"
-       y="141.24283"
-       id="text1881-8-1-2-2"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2-39-5"
-         x="202.15651"
-         y="141.24283"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke:#ffffff;stroke-width:0.15927915;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">AutoConnectFile</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="184.38263"
-       y="156.75534"
-       id="text1881-8-26-3-9"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-1-9-1"
-         x="184.38263"
-         y="156.75534"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#cc0000;stroke-width:0.26458332">COPY</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="157.09714"
-       y="130.18697"
-       id="text1881-8-26-3-9-9"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-1-9-1-8"
-         x="157.09714"
-         y="130.18697"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#cc0000;stroke-width:0.26458332">COPY</tspan></text>
-    <path
-       style="fill:none;stroke:#ff0000;stroke-width:0.52916676;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-2-4-6-6)"
-       d="m 147.75257,128.87129 h 7.76309"
-       id="path1946-5-8-9-5-6"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#ff0000;stroke-width:0.5291667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6593)"
-       d="m 124.97478,139.40629 0,18.66492 h 79.01637 v -10.85323 l 4.38979,0.006"
-       id="path7867"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccccc" />
-    <path
-       style="opacity:0.98000004;fill:none;stroke:#7f7f00;stroke-width:0.52916682;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-2-6-6)"
-       d="M 239.46873,106.8435 H 114.14221"
-       id="path1946-5-8-3-9"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="210.52823"
-       y="105.12463"
-       id="text1881-8-1-7-2"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2-2-3"
-         x="210.52823"
-         y="105.12463"
-         style="stroke-width:0.26458332">REGISTER</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="241.12097"
-       y="103.98985"
-       id="text1881-8-2-15"><tspan
-         sodipodi:role="line"
-         x="241.12097"
-         y="103.98985"
-         style="stroke-width:0.26458332"
-         id="tspan6554-5">WebServer</tspan><tspan
-         sodipodi:role="line"
-         x="241.12097"
-         y="107.9586"
-         style="stroke-width:0.26458332"
-         id="tspan1147">::on(<tspan
-   style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808000;fill-opacity:1;stroke-width:0.26458332"
-   id="tspan4640-8">reqHandler</tspan>)</tspan></text>
-    <path
-       style="fill:none;stroke:#7f7f00;stroke-width:0.52916694;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Mend-9-0)"
-       d="M 113.27178,173.04747 H 238.69805"
-       id="path1946-5-6"
-       inkscape:connector-curvature="0" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="114.82241"
-       y="171.08884"
-       id="text1881-8-1-8"><tspan
-         sodipodi:role="line"
-         x="114.82241"
-         y="171.08884"
-         style="stroke-width:0.26458332"
-         id="tspan2510">INVOKE <tspan
-   style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#7f7f00;fill-opacity:1"
-   id="tspan1265">reqHandler</tspan></tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="241.2636"
-       y="171.99133"
-       id="text1881-8-2-1-3"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-7-4-9"
-         x="241.2636"
-         y="171.99133"
-         style="stroke-width:0.26458332">Function</tspan><tspan
-         sodipodi:role="line"
-         x="241.2636"
-         y="175.96008"
-         style="stroke-width:0.26458332"
-         id="tspan9646"><tspan
-           style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#7f7f00;fill-opacity:1;stroke-width:0.26458332"
-           id="tspan6559-1">reqHandler</tspan><tspan
-           id="tspan1141"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke-width:0.26458332">()</tspan></tspan></text>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.79374999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 112.92475,86.615905 V 185.54596"
-       id="path1883-6"
-       inkscape:connector-curvature="0" />
-    <image
-       y="173.93806"
-       x="76.439537"
-       id="image1260"
-       xlink:href="data:image/png;base64,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 w2oAAAAASUVORK5CYII= "
-       preserveAspectRatio="none"
-       height="17.401585"
-       width="21.616873"
-       style="stroke-width:2.44793344" />
-    <g
-       id="g1016">
-      <rect
-         ry="0.6681723"
-         rx="0.6754306"
-         y="80.024918"
-         x="241.73944"
-         height="5.1971722"
-         width="30.427082"
-         id="rect976"
-         style="opacity:0.98000004;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text1881-8-0"
-         y="83.806374"
-         x="250.95723"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke-width:0.26458332"
-           y="83.806374"
-           x="250.95723"
-           id="tspan1879-0-8"
-           sodipodi:role="line">Sketch</tspan></text>
-    </g>
-    <g
-       id="g1021"
-       transform="translate(0,31.750013)">
-      <rect
-         ry="0.6681723"
-         rx="0.6754306"
-         y="80.024918"
-         x="198.23846"
-         height="5.1971722"
-         width="38.846073"
-         id="rect976-4"
-         style="opacity:0.98000004;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text1881-8-0-9"
-         y="83.773048"
-         x="202.8407"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke-width:0.26458332"
-           y="83.773048"
-           x="202.8407"
-           id="tspan1879-0-8-9"
-           sodipodi:role="line">Built-in uploader</tspan></text>
-    </g>
-    <g
-       id="g1053">
-      <rect
-         ry="0.6681723"
-         rx="0.6754306"
-         y="80.024918"
-         x="152.92036"
-         height="5.1971722"
-         width="38.846073"
-         id="rect976-4-1"
-         style="opacity:0.98000004;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text1881-8-0-9-6"
-         y="83.773048"
-         x="160.96425"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke-width:0.26458332"
-           y="83.773048"
-           x="160.96425"
-           id="tspan1879-0-8-9-7"
-           sodipodi:role="line">AutoConnect</tspan></text>
-    </g>
-    <g
-       id="g1108">
-      <rect
-         ry="0.6681723"
-         rx="0.6754306"
-         y="79.441742"
-         x="113.52975"
-         height="6.3635254"
-         width="35.61591"
-         id="rect976-4-1-7"
-         style="opacity:0.98000004;vector-effect:none;fill:#404040;fill-opacity:1;stroke:none;stroke-width:0.13229164;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text1881-8-0-9-6-7"
-         y="82.258522"
-         x="114.9646"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222199px;line-height:2.3812499px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222199px;line-height:2.3812499px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke-width:0.26458332"
-           y="82.258522"
-           x="114.9646"
-           id="tspan1879-0-8-9-7-5"
-           sodipodi:role="line">ESP8266WebServer</tspan><tspan
-           id="tspan1082"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:2.82222199px;line-height:2.3812499px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#e7e7e7;fill-opacity:1;stroke-width:0.26458332"
-           y="84.639771"
-           x="114.9646"
-           sodipodi:role="line">WebServer w/ESP32</tspan></text>
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="88.294197"
-       y="99.252266"
-       id="text1881-0"><tspan
-         sodipodi:role="line"
-         x="88.294197"
-         y="99.252266"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan1938">POST /{URL}</tspan><tspan
-         sodipodi:role="line"
-         x="88.294197"
-         y="103.22102"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499971px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan1944">Upload=File</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="212.28619"
-       y="94.823273"
-       id="text1881-8-1-7-2-6"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2-2-3-6"
-         x="212.28619"
-         y="94.823273"
-         style="stroke-width:0.26458332">CREATE</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="241.11345"
-       y="97.694588"
-       id="text1881-8-2-15-2"><tspan
-         sodipodi:role="line"
-         x="241.11345"
-         y="97.694588"
-         style="stroke-width:0.26458332"
-         id="tspan1147-8"><tspan
-           style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808000;fill-opacity:1;stroke-width:0.26458332"
-           id="tspan4640-8-5">AutoConnectFile</tspan></tspan></text>
-    <path
-       inkscape:connector-curvature="0"
-       style="fill:currentColor;stroke-width:0.26458332"
-       d="m 210.07132,123.60631 h 1.5001 c 0.24939,0 0.45003,0.20064 0.45003,0.45004 v 3.15019 h 1.64448 c 0.33376,0 0.50065,0.40315 0.26439,0.63942 l -2.85206,2.85392 c -0.14063,0.14064 -0.37127,0.14064 -0.5119,0 l -2.85581,-2.85392 c -0.23626,-0.23627 -0.0694,-0.63942 0.26439,-0.63942 h 1.64636 v -3.15019 c 0,-0.2494 0.20063,-0.45004 0.45002,-0.45004 z m 5.55035,7.05045 v 2.10012 c 0,0.2494 -0.20064,0.45003 -0.45003,0.45003 h -8.70054 c -0.24939,0 -0.45003,-0.20063 -0.45003,-0.45003 v -2.10012 c 0,-0.2494 0.20064,-0.45003 0.45003,-0.45003 h 2.75079 l 0.91882,0.9188 c 0.37689,0.3769 0.98443,0.3769 1.36133,0 l 0.9188,-0.9188 h 2.7508 c 0.24939,0 0.45003,0.20063 0.45003,0.45003 z m -2.32514,1.6501 c 0,-0.20627 -0.16876,-0.37502 -0.37503,-0.37502 -0.20626,0 -0.37502,0.16875 -0.37502,0.37502 0,0.20626 0.16876,0.37502 0.37502,0.37502 0.20627,0 0.37503,-0.16876 0.37503,-0.37502 z m 1.20007,0 c 0,-0.20627 -0.16876,-0.37502 -0.37503,-0.37502 -0.20625,0 -0.37502,0.16875 -0.37502,0.37502 0,0.20626 0.16877,0.37502 0.37502,0.37502 0.20627,0 0.37503,-0.16876 0.37503,-0.37502 z"
-       id="path2" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="198.27641"
-       y="126.34801"
-       id="text1881-8-1-7-2-6-0"><tspan
-         sodipodi:role="line"
-         id="tspan1879-0-2-2-3-6-1"
-         x="198.27641"
-         y="126.34801"
-         style="stroke-width:0.26458332">SAVE</tspan></text>
-    <path
-       style="fill:none;stroke:#7f7f00;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.52916662, 0.52916662;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker3715-4)"
-       d="m 224.37855,147.05779 h 24.81634 v 19.96616"
-       id="path3703-5"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/mkdocs/images/acbutton.png b/lib/AutoConnect-master/mkdocs/images/acbutton.png
deleted file mode 100644
index ded8efc4360d4373269d3f7e23dfc265488faa08..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/acbutton.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/accheckbox.png b/lib/AutoConnect-master/mkdocs/images/accheckbox.png
deleted file mode 100644
index 10c410a086b5f11ab6836616cd4e5060ece2eae9..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/accheckbox.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/acelement.png b/lib/AutoConnect-master/mkdocs/images/acelement.png
deleted file mode 100644
index 77849fc39dd87a8f01a1e1628c189e7e7853c25f..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/acelement.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/acfile.png b/lib/AutoConnect-master/mkdocs/images/acfile.png
deleted file mode 100644
index 40fbb3b8636e48a49daf50c0f58e4e152d178b69..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/acfile.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/acinput.png b/lib/AutoConnect-master/mkdocs/images/acinput.png
deleted file mode 100644
index 58eeeb7e5a06febddebf21f009535aa38acb42d1..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/acinput.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/acow.png b/lib/AutoConnect-master/mkdocs/images/acow.png
deleted file mode 100644
index 7a239d9fdba380eaff19b6ff8e9f5f1b15b1f383..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/acow.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/acradio.png b/lib/AutoConnect-master/mkdocs/images/acradio.png
deleted file mode 100644
index ea8fb0a3149a4628584022f1b876746710a9a943..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/acradio.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/acselect.png b/lib/AutoConnect-master/mkdocs/images/acselect.png
deleted file mode 100644
index 97dc406d7dc7ddb2c1759f051b2bce6bc9dd9265..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/acselect.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/acsubmit.png b/lib/AutoConnect-master/mkdocs/images/acsubmit.png
deleted file mode 100644
index bec987d78da875e0cd79621bfcee49b32cf7a008..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/acsubmit.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/actext.png b/lib/AutoConnect-master/mkdocs/images/actext.png
deleted file mode 100644
index 76323727e02970603b639410d41c1a7cfc4e5564..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/actext.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/arduino-logo.svg b/lib/AutoConnect-master/mkdocs/images/arduino-logo.svg
deleted file mode 100644
index 067d7a96ac63ec7b9eeaebb116ac79cc77439eaa..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/images/arduino-logo.svg
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg:svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   id="svg8"
-   version="1.1"
-   viewBox="0 0 190.78812 90.019508"
-   height="90.019508mm"
-   width="190.78812mm">
-  <svg:defs
-     id="defs2" />
-  <svg:metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </svg:metadata>
-  <svg:g
-     transform="translate(-10.346796,-89.855804)"
-     id="layer1">
-    <svg:g
-       transform="matrix(0.26458333,0,0,0.26458333,10.755441,89.855804)"
-       id="g4"
-       style="fill:none;stroke:#ffffff;stroke-width:60;stroke-opacity:1">
-      <svg:path
-         style="stroke:#ffffff;stroke-opacity:1"
-         id="path6"
-         d="m 174,30 a 145.54455,140 0 0 0 0,280 C 364,320 344,30 544,30 a 145.54455,140 0 0 1 0,280 C 354,320 374,30 174,30" />
-    </svg:g>
-    <svg:g
-       style="font-size:167px;font-family:sans-serif;text-anchor:middle;fill:#00979c;stroke:#ffffff;stroke-width:20;stroke-opacity:1"
-       transform="matrix(0.26458333,0,0,0.26458333,10.755441,92.501637)"
-       id="g8"
-       font-size="167">
-      <svg:g
-         style="stroke:#ffffff;stroke-opacity:1"
-         id="text10">
-        <svg:path
-           style="stroke:#ffffff;stroke-opacity:1"
-           id="path3075"
-           d="M 528.06885,194.67432 V 161.89404 H 495.5332 v -13.69922 h 32.53565 v -32.53564 h 13.8623 v 32.53564 h 32.53565 v 13.69922 h -32.53565 v 32.78028 z" />
-      </svg:g>
-      <svg:text
-         style="stroke:#ffffff;stroke-opacity:1"
-         id="text12"
-         dy="0"
-         y="218"
-         x="181">
-        <ndash />
-      </svg:text>
-    </svg:g>
-    <svg:g
-       transform="matrix(0.26458333,0,0,0.26458333,10.755441,89.855804)"
-       id="g14"
-       font-size="40"
-       style="font-size:40px;font-family:Arial;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-opacity:1">
-      <svg:g
-         style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
-         id="text16">
-        <svg:path
-           style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
-           id="path3072"
-           d="M 681.55078,29.285156 V 15.730469 h -5.15625 v -2.363281 h 13.00781 v 2.363281 h -5.19531 v 13.554687 z m 9.62891,0 V 13.367188 h 3.90625 l 4.02343,12.714843 3.88672,-12.714843 h 3.82813 v 15.917968 h -2.42188 V 15.925781 l -4.10156,13.359375 h -2.40234 l -4.27735,-13.554687 v 13.554687 z" />
-      </svg:g>
-    </svg:g>
-    <svg:g
-       style="font-size:167px;font-family:sans-serif;text-anchor:middle;fill:#00979c;stroke:#ffffff;stroke-width:20;stroke-opacity:1"
-       transform="matrix(0.26458333,0,0,0.26458333,-86.027691,89.995434)"
-       id="g8-1"
-       font-size="167">
-      <svg:g
-         id="text10-7"
-         style="font-size:197.21893311px;stroke:#ffffff;stroke-width:23.61903381;stroke-opacity:1"
-         transform="scale(1.5645974,0.63914206)">
-        <svg:path
-           id="path3078"
-           style="font-size:197.21893311px;stroke:#ffffff;stroke-width:23.61903381;stroke-opacity:1"
-           d="m 321.41756,266.30877 v -17.43 h 53.25297 v 17.43 z" />
-      </svg:g>
-      <svg:g
-         style="stroke:#ffffff;stroke-opacity:1"
-         id="text12-4" />
-    </svg:g>
-  </svg:g>
-</svg:svg>




diff --git a/lib/AutoConnect-master/mkdocs/images/arrow_down.png b/lib/AutoConnect-master/mkdocs/images/arrow_down.png
deleted file mode 100644
index c6d30a56ed7713f5f8cfb26200137b456b6ac417..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/arrow_down.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/arrow_right.png b/lib/AutoConnect-master/mkdocs/images/arrow_right.png
deleted file mode 100644
index 8b7189e170ca302ff12a8e8419f6639c2911a006..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/arrow_right.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/arrow_right.svg b/lib/AutoConnect-master/mkdocs/images/arrow_right.svg
deleted file mode 100644
index c1ed92698041928737bcdf8b8e3f11e0ec79bf19..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/images/arrow_right.svg
+++ /dev/null
@@ -1,76 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="210mm"
-   height="297mm"
-   viewBox="0 0 210 297"
-   version="1.1"
-   id="svg8"
-   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
-   sodipodi:docname="arrow_right.svg">
-  <defs
-     id="defs2" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.35"
-     inkscape:cx="581.66557"
-     inkscape:cy="622.10349"
-     inkscape:document-units="mm"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1440"
-     inkscape:window-height="810"
-     inkscape:window-x="1554"
-     inkscape:window-y="196"
-     inkscape:window-maximized="0" />
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="レイヤー 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <g
-       style="opacity:1;fill:#8b8b8b;fill-opacity:1"
-       id="g842"
-       transform="matrix(0.26458333,0,0,0.26458333,22.461236,73.823972)">
-      <g
-         id="g830"
-         style="fill:#8b8b8b;fill-opacity:1">
-        <path
-           id="path828"
-           style="fill:#8b8b8b;fill-opacity:1"
-           d="M 499.436,225.905 295.858,24.536 C 279.235,8.098 252.43,8.231 235.992,24.864 219.554,41.477 219.698,68.282 236.321,84.72 L 366.677,213.678 H 42.329 C 18.956,213.679 0,232.624 0,255.997 0,279.38 18.956,298.325 42.329,298.325 H 366.676 L 236.321,427.273 c -16.623,16.438 -16.767,43.254 -0.329,59.867 16.438,16.622 43.243,16.766 59.866,0.328 L 499.436,286.1 C 507.48,278.137 512,267.308 512,255.998 c 0,-11.313 -4.521,-22.132 -12.564,-30.093 z"
-           class="st0"
-           inkscape:connector-curvature="0" />
-      </g>
-    </g>
-  </g>
-  <style
-     id="style826"
-     type="text/css">
-	.st0{fill:#4B4B4B;}
-</style>
-</svg>




diff --git a/lib/AutoConnect-master/mkdocs/images/aux_fsbrowser.gif b/lib/AutoConnect-master/mkdocs/images/aux_fsbrowser.gif
deleted file mode 100644
index c8b4c64c97c58cad716fcc1edf9392fb83a9107a..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/aux_fsbrowser.gif and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/aux_json.png b/lib/AutoConnect-master/mkdocs/images/aux_json.png
deleted file mode 100644
index 8828c54fec8ce42ee21e5c78400650672b04d671..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/aux_json.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/aux_menu.gif b/lib/AutoConnect-master/mkdocs/images/aux_menu.gif
deleted file mode 100644
index 7e8de5f8f308af67fb1242855554b036d5a69c89..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/aux_menu.gif and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/aux_ov.gif b/lib/AutoConnect-master/mkdocs/images/aux_ov.gif
deleted file mode 100644
index e7377a0293984f46b98a174531c98e93239dadfc..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/aux_ov.gif and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/aux_pattern.gif b/lib/AutoConnect-master/mkdocs/images/aux_pattern.gif
deleted file mode 100644
index b32660eff07ff4bba523bfa1165a538bef7f84ea..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/aux_pattern.gif and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/beforeafter.png b/lib/AutoConnect-master/mkdocs/images/beforeafter.png
deleted file mode 100644
index f0bede9e590f3528c60ce18ef9c768f67405e7e4..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/beforeafter.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/begin.png b/lib/AutoConnect-master/mkdocs/images/begin.png
deleted file mode 100644
index 39b11d5581288d948acbba9eb58b23565f59538e..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/begin.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/config_ssid.png b/lib/AutoConnect-master/mkdocs/images/config_ssid.png
deleted file mode 100644
index 2d33a9f17b95e74aa7803c9595c6fff7789a2590..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/config_ssid.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/confignew.png b/lib/AutoConnect-master/mkdocs/images/confignew.png
deleted file mode 100644
index 4d3744e369dca1d0a7c286a965aa47b2ffe6ec40..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/confignew.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/cp.gif b/lib/AutoConnect-master/mkdocs/images/cp.gif
deleted file mode 100644
index dc5ba9e679a8de0fcdb13ccbfa8298c6c83546f6..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/cp.gif and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/declare.png b/lib/AutoConnect-master/mkdocs/images/declare.png
deleted file mode 100644
index 81ed111287f62ec7285e4867b6875cf33bf8f936..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/declare.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/espshaker.gif b/lib/AutoConnect-master/mkdocs/images/espshaker.gif
deleted file mode 100644
index f2be8e591349e2a5bb65e3519a9c3cf708194977..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/espshaker.gif and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/established.png b/lib/AutoConnect-master/mkdocs/images/established.png
deleted file mode 100644
index baeec2e88c52fe1d8698bc4c3e4054c8a612a267..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/established.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/fsbmenu.png b/lib/AutoConnect-master/mkdocs/images/fsbmenu.png
deleted file mode 100644
index 94bc6f544dadf8b5e7e76b67f370520dd76b100b..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/fsbmenu.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/fsbmenu_expand.png b/lib/AutoConnect-master/mkdocs/images/fsbmenu_expand.png
deleted file mode 100644
index 4609c0c60737dcb0f08b1cf58958d5e2e48c4c95..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/fsbmenu_expand.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/fsbrowser_ba.svg b/lib/AutoConnect-master/mkdocs/images/fsbrowser_ba.svg
deleted file mode 100644
index 55dc93c0b0425ab4dbd34047350046fcd29e34ea..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/images/fsbrowser_ba.svg
+++ /dev/null
@@ -1,1406 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="1274.7577"
-   height="890.88202"
-   viewBox="0 0 337.27964 235.71254"
-   version="1.1"
-   id="svg8"
-   inkscape:version="0.92.1 r15371"
-   sodipodi:docname="fsbrowser_ba.svg">
-  <defs
-     id="defs2">
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="marker5127"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5125"
-         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
-         style="fill-rule:evenodd;stroke:#3b7686;stroke-width:1pt;stroke-opacity:0.7372549;fill:#3b7686;fill-opacity:0.7372549"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       style="overflow:visible"
-       id="DistanceStart"
-       refX="0.0"
-       refY="0.0"
-       orient="auto"
-       inkscape:stockid="DistanceStart"
-       inkscape:isstock="true">
-      <g
-         id="g2300"
-         style="stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1">
-        <path
-           style="fill:#000000;stroke:#000000;stroke-width:1.15;stroke-linecap:square;stroke-opacity:1;fill-opacity:1"
-           d="M 0,0 L 2,0"
-           id="path2306" />
-        <path
-           style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-opacity:1;fill-opacity:1"
-           d="M 0,0 L 13,4 L 9,0 13,-4 L 0,0 z "
-           id="path2302" />
-        <path
-           style="fill:#000000;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-opacity:1;fill-opacity:1"
-           d="M 0,-4 L 0,40"
-           id="path2304" />
-      </g>
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Sstart"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="marker5118"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5116"
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         transform="scale(0.3) translate(-2.3,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Send"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="marker5114"
-       style="overflow:visible;"
-       inkscape:isstock="true">
-      <path
-         id="path5112"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
-         transform="scale(0.2) rotate(180) translate(6,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Sstart"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Sstart"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path4812"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
-         transform="scale(0.2) translate(6,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Sstart"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="marker5108"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5106"
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         transform="scale(0.3) translate(-2.3,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="marker5102"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path5100"
-         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
-         style="fill-rule:evenodd;stroke:#786827;stroke-width:1pt;stroke-opacity:0.45098039;fill:#786827;fill-opacity:0.45098039"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutS"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="TriangleOutS"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path4948"
-         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
-         style="fill-rule:evenodd;stroke:#786827;stroke-width:1pt;stroke-opacity:0.45098039;fill:#786827;fill-opacity:0.45098039"
-         transform="scale(0.2)" />
-    </marker>
-    <marker
-       inkscape:stockid="ExperimentalArrow"
-       orient="auto-start-reverse"
-       refY="3.0"
-       refX="5.0"
-       id="ExperimentalArrow"
-       inkscape:isstock="true">
-      <path
-         id="path5053"
-         d="m 10,3 -10,3 0,-6 z"
-         style="fill:context-stroke;stroke:#786827;stroke-opacity:0.45098039" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleInS"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="TriangleInS"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path4939"
-         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
-         style="fill-rule:evenodd;stroke:#786827;stroke-width:1pt;stroke-opacity:0.45098039;fill:#786827;fill-opacity:0.45098039"
-         transform="scale(-0.2)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="marker5092"
-       style="overflow:visible;"
-       inkscape:isstock="true">
-      <path
-         id="path5090"
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#786827;stroke-opacity:0.45098039;fill:#786827;fill-opacity:0.45098039"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         transform="scale(0.6) rotate(180) translate(0,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Sstart"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow2Sstart"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path4830"
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#786827;stroke-opacity:0.45098039;fill:#786827;fill-opacity:0.45098039"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         transform="scale(0.3) translate(-2.3,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mend"
-       style="overflow:visible;"
-       inkscape:isstock="true">
-      <path
-         id="path4809"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#786827;stroke-width:1pt;stroke-opacity:0.45098039;fill:#786827;fill-opacity:0.45098039"
-         transform="scale(0.4) rotate(180) translate(10,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Send"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Send"
-       style="overflow:visible;"
-       inkscape:isstock="true">
-      <path
-         id="path4815"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#786827;stroke-width:1pt;stroke-opacity:0.45098039;fill:#786827;fill-opacity:0.45098039"
-         transform="scale(0.2) rotate(180) translate(6,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="TriangleOutM"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="TriangleOutM"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path4945"
-         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
-         style="fill-rule:evenodd;stroke:#786827;stroke-width:1pt;stroke-opacity:0.45098039;fill:#786827;fill-opacity:0.45098039"
-         transform="scale(0.4)" />
-    </marker>
-    <marker
-       inkscape:stockid="EmptyTriangleOutM"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="EmptyTriangleOutM"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path4963"
-         d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
-         style="fill-rule:evenodd;fill:#786827;stroke:#786827;stroke-width:1pt;stroke-opacity:0.45098039;fill-opacity:0.45098039"
-         transform="scale(0.4) translate(-4.5,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Mstart"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Mstart"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path4806"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#c8ab37;stroke-width:1pt;stroke-opacity:0.45098039;fill:#c8ab37;fill-opacity:0.45098039"
-         transform="scale(0.4) translate(10,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="marker5076"
-       style="overflow:visible;"
-       inkscape:isstock="true">
-      <path
-         id="path5074"
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#c8ab37;stroke-opacity:0.45098039;fill:#c8ab37;fill-opacity:0.45098039"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         transform="scale(0.6) rotate(180) translate(0,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="marker5072"
-       style="overflow:visible;"
-       inkscape:isstock="true">
-      <path
-         id="path5070"
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#c8ab37;stroke-opacity:0.45098039;fill:#c8ab37;fill-opacity:0.45098039"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         transform="scale(0.6) rotate(180) translate(0,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="marker5068"
-       style="overflow:visible;"
-       inkscape:isstock="true">
-      <path
-         id="path5066"
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#c8ab37;stroke-opacity:0.45098039;fill:#c8ab37;fill-opacity:0.45098039"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         transform="scale(0.6) rotate(180) translate(0,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Lend"
-       style="overflow:visible;"
-       inkscape:isstock="true">
-      <path
-         id="path4803"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#c8ab37;stroke-width:1pt;stroke-opacity:0.45098039;fill:#c8ab37;fill-opacity:0.45098039"
-         transform="scale(0.8) rotate(180) translate(12.5,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow2Mend"
-       style="overflow:visible;"
-       inkscape:isstock="true">
-      <path
-         id="path4827"
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#c8ab37;stroke-opacity:0.45098039;fill:#c8ab37;fill-opacity:0.45098039"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         transform="scale(0.6) rotate(180) translate(0,0)" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4142136"
-     inkscape:cx="823.12142"
-     inkscape:cy="217.4658"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer2"
-     showgrid="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1001"
-     inkscape:window-x="2551"
-     inkscape:window-y="-9"
-     inkscape:window-maximized="1"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     inkscape:snap-global="false"
-     units="px" />
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="grid"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-3.0458242,-83.924968)"
-     sodipodi:insensitive="true">
-    <path
-       inkscape:connector-curvature="0"
-       d="M 4.0222719,90.747667 V 317.376 M 9.3139389,90.747667 V 317.376 M 14.605605,90.747667 V 317.376 M 19.897272,90.747667 V 317.376 M 25.188939,90.747667 V 317.376 M 30.480605,90.747667 V 317.376 M 35.772272,90.747667 V 317.376 M 41.063939,90.747667 V 317.376 M 46.355605,90.747667 V 317.376 M 51.647272,90.747667 V 317.376 M 56.938939,90.747667 V 317.376 M 62.230605,90.747667 V 317.376 M 67.522275,90.747667 V 317.376 M 72.813939,90.747667 V 317.376 M 78.105608,90.747667 V 317.376 M 83.397275,90.747667 V 317.376 M 88.688939,90.747667 V 317.376 M 93.980606,90.747667 V 317.376 M 99.272276,90.747667 V 317.376 M 104.56393,90.747667 V 317.376 M 109.85559,90.747667 V 317.376 M 115.14726,90.747667 V 317.376 M 120.43893,90.747667 V 317.376 M 125.73059,90.747667 V 317.376 M 131.02227,90.747667 V 317.376 M 136.31394,90.747667 V 317.376 M 141.6056,90.747667 V 317.376 M 146.89727,90.747667 V 317.376 M 152.18894,90.747667 V 317.376 M 157.4806,90.747667 V 317.376 M 162.77227,90.747667 V 317.376 M 4.0222719,90.747667 H 167.79056 M 4.0222719,96.039327 H 167.79056 M 4.0222719,101.331 H 167.79056 M 4.0222719,106.62267 H 167.79056 M 4.0222719,111.91433 H 167.79056 M 4.0222719,117.206 H 167.79056 M 4.0222719,122.49767 H 167.79056 M 4.0222719,127.78933 H 167.79056 M 4.0222719,133.081 H 167.79056 M 4.0222719,138.37267 H 167.79056 M 4.0222719,143.66433 H 167.79056 M 4.0222719,148.956 H 167.79056 M 4.0222719,154.24767 H 167.79056 M 4.0222719,159.53934 H 167.79056 M 4.0222719,164.831 H 167.79056 M 4.0222719,170.12267 H 167.79056 M 4.0222719,175.41434 H 167.79056 M 4.0222719,180.706 H 167.79056 M 4.0222719,185.99767 H 167.79056 M 4.0222719,191.28934 H 167.79056 M 4.0222719,196.581 H 167.79056 M 4.0222719,201.87267 H 167.79056 M 4.0222719,207.16434 H 167.79056 M 4.0222719,212.456 H 167.79056 M 4.0222719,217.74767 H 167.79056 M 4.0222719,223.03934 H 167.79056 M 4.0222719,228.331 H 167.79056 M 4.0222719,233.62267 H 167.79056 M 4.0222719,238.91434 H 167.79056 M 4.0222719,244.206 H 167.79056 M 4.0222719,249.49767 H 167.79056 M 4.0222719,254.78934 H 167.79056 M 4.0222719,260.081 H 167.79056 M 4.0222719,265.37267 H 167.79056 M 4.0222719,270.66434 H 167.79056 M 4.0222719,275.956 H 167.79056 M 4.0222719,281.24767 H 167.79056 M 4.0222719,286.53934 H 167.79056 M 4.0222719,291.831 H 167.79056 M 4.0222719,297.12267 H 167.79056 M 4.0222719,302.41434 H 167.79056 M 4.0222719,307.706 H 167.79056 M 4.0222719,312.99767 H 167.79056"
-       style="fill:none;stroke:#000000;stroke-width:0.0264583px"
-       id="path3328" />
-    <path
-       inkscape:connector-curvature="0"
-       d="M 176.55719,90.747667 V 317.376 M 181.84886,90.747667 V 317.376 M 187.14052,90.747667 V 317.376 M 192.43219,90.747667 V 317.376 M 197.72386,90.747667 V 317.376 M 203.01552,90.747667 V 317.376 M 208.30719,90.747667 V 317.376 M 213.59886,90.747667 V 317.376 M 218.89052,90.747667 V 317.376 M 224.18219,90.747667 V 317.376 M 229.47386,90.747667 V 317.376 M 234.76552,90.747667 V 317.376 M 240.05719,90.747667 V 317.376 M 245.34886,90.747667 V 317.376 M 250.64053,90.747667 V 317.376 M 255.93219,90.747667 V 317.376 M 261.22386,90.747667 V 317.376 M 266.51553,90.747667 V 317.376 M 271.8072,90.747667 V 317.376 M 277.09885,90.747667 V 317.376 M 282.39051,90.747667 V 317.376 M 287.68218,90.747667 V 317.376 M 292.97385,90.747667 V 317.376 M 298.26551,90.747667 V 317.376 M 303.55719,90.747667 V 317.376 M 308.84886,90.747667 V 317.376 M 314.14052,90.747667 V 317.376 M 319.43219,90.747667 V 317.376 M 324.72386,90.747667 V 317.376 M 330.01552,90.747667 V 317.376 M 335.30719,90.747667 V 317.376 m -158.75,-226.628333 h 163.76829 m -163.76829,5.29166 H 340.32548 M 176.55719,101.331 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29166 H 340.32548 M 176.55719,117.206 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29166 H 340.32548 M 176.55719,133.081 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29166 H 340.32548 M 176.55719,148.956 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29167 H 340.32548 M 176.55719,164.831 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29167 H 340.32548 M 176.55719,180.706 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29167 H 340.32548 M 176.55719,196.581 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29167 H 340.32548 M 176.55719,212.456 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29167 H 340.32548 M 176.55719,228.331 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29167 H 340.32548 M 176.55719,244.206 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29167 H 340.32548 M 176.55719,260.081 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29167 H 340.32548 M 176.55719,275.956 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29167 H 340.32548 M 176.55719,291.831 h 163.76829 m -163.76829,5.29167 h 163.76829 m -163.76829,5.29167 H 340.32548 M 176.55719,307.706 h 163.76829 m -163.76829,5.29167 h 163.76829"
-       style="fill:none;stroke:#000000;stroke-width:0.0264583px"
-       id="path3328-7" />
-  </g>
-  <g
-     inkscape:groupmode="layer"
-     id="layer2"
-     inkscape:label="code"
-     transform="translate(-3.0458242,-83.924968)">
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="51.499252"
-       y="81.459076"
-       id="text844"><tspan
-         sodipodi:role="line"
-         id="tspan842"
-         x="51.499252"
-         y="84.355728"
-         style="stroke-width:0.26458332" /></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="4.0090427"
-       y="93.042824"
-       id="text924"><tspan
-         sodipodi:role="line"
-         id="tspan922"
-         x="4.0090427"
-         y="93.042824"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"><tspan
-   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff6600"
-   id="tspan3244">ESP8266WebServer</tspan> server(80);</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="97.153351"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3224" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="101.1221"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3226" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="105.09085"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3228" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="109.0596"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3230" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="113.02835"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3232" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="116.9971"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan3234">//holds the current upload</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="121.10763"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3236"><tspan
-   style="fill:#ff6600"
-   id="tspan3306">File</tspan> fsUploadFile;</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="125.21815"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3238" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="129.1869"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3240" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="133.15565"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan3242">//SERVER INIT</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="137.26619"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan926">//list directory</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="141.37671"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan928">server.<tspan
-   style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff6600"
-   id="tspan1002">on</tspan>(&quot;<tspan
-   style="fill:#003399"
-   id="tspan1004">/list</tspan>&quot;, <tspan
-   style="fill:#3366cc"
-   id="tspan1006">HTTP_GET</tspan>, handleFileList);</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="145.48724"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan930">//load editor</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="149.59776"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan932">server.<tspan
-   style="fill:#ff6600"
-   id="tspan1020">on</tspan>(&quot;/edit&quot;, <tspan
-   style="fill:#3366cc"
-   id="tspan1010">HTTP_GET</tspan>, []() {</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="153.7083"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan934">  if (!handleFileRead(&quot;<tspan
-   style="fill:#003399"
-   id="tspan1012">/edit.htm</tspan>&quot;)) {</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="157.81883"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan936">    server.<tspan
-   style="fill:#ff6600"
-   id="tspan1018">send</tspan>(404, &quot;<tspan
-   style="fill:#003399"
-   id="tspan1016">text/plain</tspan>&quot;, &quot;<tspan
-   style="fill:#003399"
-   id="tspan1014">FileNotFound</tspan>&quot;);</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="161.92935"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan938">  }</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="166.03989"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan940">});</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="170.15041"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan942">//create file</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="174.26094"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan944">server.<tspan
-   style="fill:#ff6600"
-   id="tspan1022">on</tspan>(&quot;<tspan
-   style="fill:#003399"
-   id="tspan1072">/edit</tspan>&quot;, <tspan
-   style="fill:#3366cc"
-   id="tspan1074">HTTP_PUT</tspan>, handleFileCreate);</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="178.37146"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan946">//delete file</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="182.48199"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan948">server.<tspan
-   style="fill:#ff6600"
-   id="tspan1024">on</tspan>(&quot;<tspan
-   style="fill:#003399"
-   id="tspan1070">/edit</tspan>&quot;, <tspan
-   style="fill:#3366cc"
-   id="tspan1076">HTTP_DELETE</tspan>, handleFileDelete);</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="186.59253"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan950">//first callback is called after the request has ended with all parsed arguments</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="190.70305"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan952">//second callback handles file uploads at that location</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="194.81358"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan954">server.<tspan
-   style="fill:#ff6600"
-   id="tspan1026">on</tspan>(&quot;<tspan
-   style="fill:#003399"
-   id="tspan1068">/edit</tspan>&quot;, <tspan
-   style="fill:#3366cc"
-   id="tspan1066">HTTP_POST</tspan>, []() {</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="198.9241"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan956">  server.<tspan
-   style="fill:#ff6600"
-   id="tspan1028">send</tspan>(200, &quot;<tspan
-   style="fill:#003399"
-   id="tspan1064">text/plain</tspan>&quot;, &quot;&quot;);</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="203.03464"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan958">}, handleFileUpload);</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="207.14516"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan960" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="211.11391"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3324" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="215.08266"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan962">//called when the url is not defined here</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="219.19319"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan964">//use it to load content from SPIFFS</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="223.30373"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan966">server.<tspan
-   style="fill:#ff6600"
-   id="tspan1030">onNotFound</tspan>([]() {</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="227.41425"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan968">  if (!handleFileRead(server.<tspan
-   style="fill:#ff6600"
-   id="tspan1032">uri</tspan>())) {</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="231.52478"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan970">    server.<tspan
-   style="fill:#ff6600"
-   id="tspan1034">send</tspan>(404, &quot;<tspan
-   style="fill:#003399"
-   id="tspan1060">text/plain</tspan>&quot;, &quot;<tspan
-   style="fill:#003399"
-   id="tspan1062">FileNotFound</tspan>&quot;);</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="235.6353"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan972">  }</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="239.74583"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan974">});</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="243.85635"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan976" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="247.8251"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan978">//get heap status, analog input value and all GPIO statuses in one json call</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="251.93564"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan980">server.<tspan
-   style="fill:#ff6600"
-   id="tspan1036">on</tspan>(&quot;<tspan
-   style="fill:#003399"
-   id="tspan1038">/all</tspan>&quot;, <tspan
-   style="fill:#3366cc"
-   id="tspan1056">HTTP_GET</tspan>, []() {</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="256.04617"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan982">  String json = &quot;<tspan
-   style="fill:#003399"
-   id="tspan1040">{</tspan>&quot;;</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="260.15671"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan984">  json += &quot;<tspan
-   style="fill:#003399"
-   id="tspan1042">\&quot;heap\&quot;:</tspan>&quot; + String(<tspan
-   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff6600"
-   id="tspan1086">ESP</tspan>.<tspan
-   style="fill:#ff6600"
-   id="tspan1082">getFreeHeap</tspan>());</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="264.26721"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan986">  json += &quot;<tspan
-   style="fill:#003399"
-   id="tspan1044">, \&quot;analog\&quot;:</tspan>&quot; + String(<tspan
-   style="fill:#ff6600"
-   id="tspan1084">analogRead</tspan>(A0));</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="268.37775"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan988">  json += &quot;<tspan
-   style="fill:#003399"
-   id="tspan1046">, \&quot;gpio\&quot;:</tspan>&quot; + String((uint32_t)(((GPI | GPO) &amp; 0xFFFF) | ((GP16I &amp; 0x01) &lt;&lt; 16)));</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="272.48828"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan990">  json += &quot;<tspan
-   style="fill:#003399"
-   id="tspan1048">}</tspan>&quot;;</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="276.59882"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan992">  server.<tspan
-   style="fill:#ff6600"
-   id="tspan1050">send</tspan>(200, &quot;<tspan
-   style="fill:#003399"
-   id="tspan1052">text/json</tspan>&quot;, json);</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="280.70932"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan994">  json = String();</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="284.81985"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan996">});</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="288.93039"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2983" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="292.89914"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3322" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="296.86789"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2992" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="300.83664"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2995" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="304.80539"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2998" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="308.77414"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3001" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="312.74289"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3222" /><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="316.71164"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3004">server.<tspan
-   style="fill:#ff6600"
-   id="tspan1054">begin</tspan>();</tspan><tspan
-         sodipodi:role="line"
-         x="4.0090427"
-         y="320.82217"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan1000" /></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="176.54396"
-       y="93.042824"
-       id="text924-1"><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="93.042824"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan998-8"><tspan
-   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff6600"
-   id="tspan3268">ESP8266WebServer</tspan> server(80);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="97.153351"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan3248">//Add below lines for AutoConnect.</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="101.26388"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3250"><tspan
-   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff6600"
-   id="tspan3272">AutoConnect</tspan>       portal(server);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="105.3744"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3252"><tspan
-   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff6600"
-   id="tspan3276">AutoConnectConfig</tspan> config;</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="109.48494"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3254"><tspan
-   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff6600"
-   id="tspan3280">AutoConnectAux</tspan>    FSBedit(&quot;<tspan
-   style="fill:#003399"
-   id="tspan3290">/edit</tspan>&quot;, &quot;<tspan
-   style="fill:#003399"
-   id="tspan3292">Edit</tspan>&quot;);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="113.59547"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3256"><tspan
-   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff6600"
-   id="tspan3284">AutoConnectAux</tspan>    FSBlist(&quot;<tspan
-   style="fill:#003399"
-   id="tspan3294">/list?dir=\&quot;/\&quot;</tspan>&quot;, &quot;<tspan
-   style="fill:#003399"
-   id="tspan3296">List</tspan>&quot;);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="117.70599"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan3258">//holds the current upload</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="121.81652"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3260"><tspan
-   style="fill:#ff6600"
-   id="tspan3288">File</tspan> fsUploadFile;</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="125.92705"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3262" /><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="129.8958"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3264" /><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="133.86455"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan3266">//SERVER INIT</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="137.97508"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2872">//list directory</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="142.0856"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2874">server.<tspan
-   style="fill:#ff6600"
-   id="tspan3220">on</tspan>(&quot;<tspan
-   style="fill:#003399;fill-opacity:1"
-   id="tspan4758">/list</tspan>&quot;, <tspan
-   style="fill:#3366cc;fill-opacity:1"
-   id="tspan4762">HTTP_GET</tspan>, handleFileList);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="146.19614"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2876">//load editor</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="150.30666"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2878">server.<tspan
-   style="fill:#ff6600"
-   id="tspan3216">on</tspan>(&quot;<tspan
-   style="fill:#003399"
-   id="tspan3214">/edit</tspan>&quot;, <tspan
-   style="fill:#3366cc"
-   id="tspan3212">HTTP_GET</tspan>, []() {</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="154.41719"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2880">  if (!handleFileRead(&quot;<tspan
-   style="fill:#003399"
-   id="tspan3206">/edit.htm</tspan>&quot;)) {</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="158.52771"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2882">    server.<tspan
-   style="fill:#ff6600"
-   id="tspan3218">send</tspan>(404, &quot;<tspan
-   style="fill:#003399"
-   id="tspan3208">text/plain</tspan>&quot;, &quot;<tspan
-   style="fill:#003399"
-   id="tspan3210">FileNotFound</tspan>&quot;);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="162.63824"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2884">  }</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="166.74878"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2886">});</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="170.8593"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2888">//create file</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="174.96983"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2890">server.<tspan
-   style="fill:#ff6600;fill-opacity:1"
-   id="tspan4779">on</tspan>(&quot;<tspan
-   style="fill:#003399"
-   id="tspan3202">/edit</tspan>&quot;, <tspan
-   style="fill:#3366cc"
-   id="tspan3200">HTTP_PUT</tspan>, handleFileCreate);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="179.08035"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2892">//delete file</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="183.19089"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2894">server.<tspan
-   style="fill:#ff6600;fill-opacity:1"
-   id="tspan4781">on</tspan>(&quot;<tspan
-   style="fill:#003399"
-   id="tspan3204">/edit</tspan>&quot;, <tspan
-   style="fill:#3366cc"
-   id="tspan3198">HTTP_DELETE</tspan>, handleFileDelete);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="187.30141"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2896">//first callback is called after the request has ended with all parsed arguments</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="191.41194"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2898">//second callback handles file uploads at that location</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="195.52248"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2900">server.<tspan
-   style="fill:#ff6600"
-   id="tspan3190">on</tspan>(&quot;<tspan
-   style="fill:#003399"
-   id="tspan3192">/edit</tspan>&quot;, <tspan
-   style="fill:#3366cc"
-   id="tspan3196">HTTP_POST</tspan>, []() {</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="199.633"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2902">  server.<tspan
-   style="fill:#ff6600"
-   id="tspan3188">send</tspan>(200, &quot;<tspan
-   style="fill:#003399"
-   id="tspan3194">text/plain</tspan>&quot;, &quot;&quot;);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="203.74353"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2904">}, handleFileUpload);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="207.85405"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2906" /><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="211.8228"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2908">//called when the url is not defined here</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="215.93333"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2910">//use it to load content from SPIFFS</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="220.04385"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2912">//Replacement as follows to make AutoConnect recognition.</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="224.15439"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2916"><tspan
-   style="-inkscape-font-specification:'Consolas, Bold';font-family:Consolas;font-weight:bold;font-style:normal;font-stretch:normal;font-variant:normal;font-size:3.17500004px;text-anchor:start;text-align:start;writing-mode:lr;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal"
-   id="tspan5133">portal</tspan>.<tspan
-   style="fill:#ff6600"
-   id="tspan3038">onNotFound</tspan>([](){</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="228.26492"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2918">  if(!handleFileRead(server.<tspan
-   style="fill:#ff6600"
-   id="tspan3142">uri</tspan>())) {</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="232.37544"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2920">    server.<tspan
-   style="fill:#ff6600"
-   id="tspan3144">send</tspan>(404, &quot;<tspan
-   style="fill:#003399"
-   id="tspan3146">text/plain</tspan>&quot;, &quot;<tspan
-   style="fill:#003399"
-   id="tspan3148">FileNotFound</tspan>&quot;);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="236.48598"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan3034">  }</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="240.5965"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2922">});</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="244.70703"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2924" /><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="248.67578"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2926">//get heap status, analog input value and all GPIO statuses in one json call</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="252.7863"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2928">server.<tspan
-   style="fill:#ff6600"
-   id="tspan3154">on</tspan>(&quot;<tspan
-   style="fill:#003399"
-   id="tspan3152">/all</tspan>&quot;, <tspan
-   style="fill:#3366cc"
-   id="tspan3150">HTTP_GET</tspan>, [](){</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="256.89682"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2930">  String json = &quot;<tspan
-   style="fill:#003399"
-   id="tspan3156">{</tspan>&quot;;</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="261.00735"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2932">  json += &quot;<tspan
-   style="fill:#003399"
-   id="tspan3158">\&quot;heap\&quot;:</tspan>&quot;+String(<tspan
-   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff6600"
-   id="tspan3160">ESP</tspan>.<tspan
-   style="fill:#ff6600"
-   id="tspan3164">getFreeHeap</tspan>());</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="265.11789"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2934">  json += &quot;<tspan
-   style="fill:#003399"
-   id="tspan3168">, \&quot;analog\&quot;:</tspan>&quot;+String(<tspan
-   style="fill:#ff6600"
-   id="tspan3166">analogRead</tspan>(A0));</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="269.22842"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2938">  json += &quot;<tspan
-   style="fill:#003399"
-   id="tspan3170">, \&quot;gpio\</tspan>&quot;:&quot;+String((uint32_t)(((GPI | GPO) &amp; 0xFFFF) | ((GP16I &amp; 0x01) &lt;&lt; 16)));</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="273.33896"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2946">  json += &quot;<tspan
-   style="fill:#003399"
-   id="tspan3172">}</tspan>&quot;;</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="277.44946"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2948">  server.<tspan
-   style="fill:#ff6600"
-   id="tspan3174">send</tspan>(200, &quot;<tspan
-   style="fill:#003399"
-   id="tspan3176">text/json</tspan>&quot;, json);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="281.56"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2950">  json = String();</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="285.67053"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2952">});</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="289.78107"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2954" /><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="293.74982"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2956">//Set menu title</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="297.86035"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2958">config.<tspan
-   style="fill:#ff6600"
-   id="tspan3178">title</tspan> = &quot;<tspan
-   style="fill:#003399"
-   id="tspan3180">FSBrowser</tspan>&quot;;</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="301.97086"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2960">portal.<tspan
-   style="fill:#ff6600"
-   id="tspan3182">config</tspan>(config);</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="306.08139"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2962">//Register AutoConnect menu</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="310.19193"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan2964">portal.<tspan
-   style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#ff6600"
-   id="tspan3184">join</tspan>({ FSBedit, FSBlist });</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="314.30246"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#808080;stroke-width:0.26458332"
-         id="tspan2966">//Replacement as follows to make AutoConnect recognition.</tspan><tspan
-         sodipodi:role="line"
-         x="176.54396"
-         y="318.41296"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;font-family:Consolas;-inkscape-font-specification:'Consolas, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332"
-         id="tspan1000-6"><tspan
-   style="-inkscape-font-specification:'Consolas, Bold';font-family:Consolas;font-weight:bold;font-style:normal;font-stretch:normal;font-variant:normal;font-size:3.17500004px;text-anchor:start;text-align:start;writing-mode:lr;font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal"
-   id="tspan5131">portal</tspan>.<tspan
-   style="fill:#ff6600"
-   id="tspan3186">begin</tspan>();</tspan></text>
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot3298"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none"
-       transform="matrix(0.26458333,0,0,0.26458333,0,87)"><flowRegion
-         id="flowRegion3300"><rect
-           id="rect3302"
-           width="177.78685"
-           height="44.446712"
-           x="265.6701"
-           y="261.3504" /></flowRegion><flowPara
-         id="flowPara3304" /></flowRoot>  </g>
-  <g
-     inkscape:groupmode="layer"
-     id="layer3"
-     inkscape:label="caption"
-     transform="translate(0.96321857,6.8094692)"
-     sodipodi:insensitive="true">
-    <rect
-       style="opacity:0.73500001;vector-effect:none;fill:#99cc33;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect3391"
-       width="12.027128"
-       height="3.8754082"
-       x="-0.22822824"
-       y="129.77403"
-       rx="0.10748195"
-       ry="1.069078" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055563px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="-0.24567837"
-       y="-3.8422084"
-       id="text3363"><tspan
-         sodipodi:role="line"
-         id="tspan3361"
-         x="-0.24567837"
-         y="-3.8422084"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055563px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">Original FSbrowser.ino (a part of code)</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055563px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="171.75917"
-       y="-3.8213656"
-       id="text3363-3"><tspan
-         sodipodi:role="line"
-         id="tspan3361-1"
-         x="171.75917"
-         y="-3.8213656"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055563px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">Modified FSbrowser.ino (a part of code)</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#3366cc;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="87.36937"
-       y="14.514046"
-       id="text3385"><tspan
-         sodipodi:role="line"
-         id="tspan3383"
-         x="87.36937"
-         y="14.514046"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#3366cc;stroke-width:0.26458332">Insert for attaching the menu</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:9.9628458px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#3366cc;fill-opacity:1;stroke:none;stroke-width:0.26458335"
-       x="337.22998"
-       y="9.5149574"
-       id="text3389"
-       transform="scale(0.49402744,2.0241791)"><tspan
-         sodipodi:role="line"
-         id="tspan3387"
-         x="337.22998"
-         y="9.5149574"
-         style="fill:#3366cc;stroke-width:0.26458335">{</tspan></text>
-    <rect
-       style="opacity:0.73500001;vector-effect:none;fill:#99cc33;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect3391-4"
-       width="12.027128"
-       height="3.8754082"
-       x="172.22743"
-       y="130.4422"
-       rx="0.10748195"
-       ry="1.069078" />
-    <rect
-       style="opacity:0.73500001;vector-effect:none;fill:#99cc33;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect3391-1"
-       width="12.027128"
-       height="3.8754082"
-       x="-0.96321857"
-       y="222.91747"
-       rx="0.10748195"
-       ry="1.069078" />
-    <rect
-       style="opacity:0.73500001;vector-effect:none;fill:#99cc33;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect3391-1-9"
-       width="12.027128"
-       height="3.8754082"
-       x="171.6929"
-       y="224.52107"
-       rx="0.10748195"
-       ry="1.069078" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#3366cc;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="87.36937"
-       y="212.69356"
-       id="text3385-2"><tspan
-         sodipodi:role="line"
-         id="tspan3383-9"
-         x="87.36937"
-         y="212.69356"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#3366cc;stroke-width:0.26458332">Insert for attaching the menu</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:9.18645573px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#3366cc;fill-opacity:1;stroke:none;stroke-width:0.26458335"
-       x="310.9501"
-       y="115.85413"
-       id="text3389-3"
-       transform="scale(0.53578004,1.8664376)"><tspan
-         sodipodi:role="line"
-         id="tspan3387-0"
-         x="310.9501"
-         y="115.85413"
-         style="fill:#3366cc;stroke-width:0.26458335">{</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#3366cc;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="100.55449"
-       y="133.65428"
-       id="text3385-2-3"><tspan
-         sodipodi:role="line"
-         id="tspan3383-9-2"
-         x="100.55449"
-         y="133.65428"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#99cc33;stroke-width:0.26458332">Replace for AutoConnect</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#3366cc;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="100.15359"
-       y="227.98047"
-       id="text3385-2-3-9"><tspan
-         sodipodi:role="line"
-         id="tspan3383-9-2-2"
-         x="100.15359"
-         y="227.98047"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.58611107px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#99cc33;stroke-width:0.26458332">Replace for AutoConnect</tspan></text>
-    <path
-       sodipodi:type="star"
-       style="opacity:0.73500001;vector-effect:none;fill:#99cc33;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="path3498"
-       sodipodi:sides="3"
-       sodipodi:cx="167.41656"
-       sodipodi:cy="132.3799"
-       sodipodi:r1="2.6860254"
-       sodipodi:r2="1.3430127"
-       sodipodi:arg1="0"
-       sodipodi:arg2="1.0471976"
-       inkscape:flatsided="true"
-       inkscape:rounded="0"
-       inkscape:randomized="0"
-       d="m 170.10259,132.3799 -4.02904,2.32616 v -4.65233 z"
-       inkscape:transform-center-x="-0.67150475"
-       inkscape:transform-center-y="-1.4134822e-006" />
-    <path
-       sodipodi:type="star"
-       style="opacity:0.73500001;vector-effect:none;fill:#99cc33;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="path3498-0"
-       sodipodi:sides="3"
-       sodipodi:cx="167.41656"
-       sodipodi:cy="226.51001"
-       sodipodi:r1="2.6860254"
-       sodipodi:r2="1.3430127"
-       sodipodi:arg1="0"
-       sodipodi:arg2="1.0471976"
-       inkscape:flatsided="true"
-       inkscape:rounded="0"
-       inkscape:randomized="0"
-       d="m 170.10259,226.51001 -4.02904,2.32617 v -4.65234 z"
-       inkscape:transform-center-x="-0.67150475"
-       inkscape:transform-center-y="-1.4134822e-006" />
-    <rect
-       style="opacity:0.73500001;vector-effect:none;fill:#6f8a91;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect3391-4-6"
-       width="13.396885"
-       height="3.8754082"
-       x="203.23431"
-       y="15.832252"
-       rx="0.11972295"
-       ry="1.0690778" />
-    <rect
-       style="opacity:0.73500001;vector-effect:none;fill:#6f8a91;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect3391-4-6-5"
-       width="13.396885"
-       height="3.8754082"
-       x="196.30136"
-       y="216.52715"
-       rx="0.11972295"
-       ry="1.0690778" />
-    <rect
-       style="opacity:0.45;vector-effect:none;fill:#c8ab37;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect3391-4-6-9"
-       width="12.107041"
-       height="3.8754082"
-       x="190.09106"
-       y="81.410378"
-       rx="0.10819609"
-       ry="1.0690778" />
-    <rect
-       style="opacity:0.45;vector-effect:none;fill:#c8ab37;fill-opacity:1;stroke:none;stroke-width:0.13229166;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
-       id="rect3391-4-6-9-3"
-       width="12.107041"
-       height="3.8754082"
-       x="218.18867"
-       y="15.818441"
-       rx="0.10819609"
-       ry="1.0690778" />
-    <path
-       style="fill:none;fill-opacity:0.45098039;stroke:#786827;stroke-width:1.32291675;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.32291669, 1.32291669;stroke-dashoffset:0;stroke-opacity:0.45098039;marker-end:url(#marker5102)"
-       d="M 218.18867,19.69385 199.88301,77.243192"
-       id="path4798"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="opacity:0.85;fill:none;stroke:#3b7686;stroke-width:1.32291675;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1.32291669, 1.32291669;stroke-dashoffset:0;stroke-opacity:0.7372549;marker-end:url(#marker5127)"
-       d="M 204.61804,215.6739 204.32038,24.777024"
-       id="path5104"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/mkdocs/images/gitrepo.png b/lib/AutoConnect-master/mkdocs/images/gitrepo.png
deleted file mode 100644
index a7ea739a7b91d319457b1e7908aeb677c815f162..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/gitrepo.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/handleClient.png b/lib/AutoConnect-master/mkdocs/images/handleClient.png
deleted file mode 100644
index 3b93eefcde1b131d4a9e8a6ff6a59b635b3cb50a..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/handleClient.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/handleClient.svg b/lib/AutoConnect-master/mkdocs/images/handleClient.svg
deleted file mode 100644
index e6d49fa182a0696d1fc3e11962cc69d5c108e23e..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/images/handleClient.svg
+++ /dev/null
@@ -1,695 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   id="svg8"
-   version="1.1"
-   viewBox="0 0 191.10721 454.36032"
-   height="454.36032mm"
-   width="191.10721mm">
-  <defs
-     id="defs2" />
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     style="display:inline"
-     transform="translate(5.0000008,4.9999992)"
-     id="layer2">
-    <path
-       id="path4982"
-       style="fill:none;stroke:#000000;stroke-width:0.0264583px"
-       d="M -4.9867716,-4.9999882 V 449.36032 M 0.30489485,-4.9999882 V 449.36032 M 5.5965614,-4.9999882 V 449.36032 M 10.888228,-4.9999882 V 449.36032 M 16.179894,-4.9999882 V 449.36032 M 21.471561,-4.9999882 V 449.36032 M 26.763227,-4.9999882 V 449.36032 M 32.054894,-4.9999882 V 449.36032 M 37.34656,-4.9999882 V 449.36032 M 42.638227,-4.9999882 V 449.36032 M 47.929893,-4.9999882 V 449.36032 M 53.22156,-4.9999882 V 449.36032 M 58.513227,-4.9999882 V 449.36032 M 63.804893,-4.9999882 V 449.36032 M 69.09656,-4.9999882 V 449.36032 M 74.388226,-4.9999882 V 449.36032 M 79.679893,-4.9999882 V 449.36032 M 84.971559,-4.9999882 V 449.36032 M 90.263226,-4.9999882 V 449.36032 M 95.554888,-4.9999882 V 449.36032 M 100.84656,-4.9999882 V 449.36032 M 106.13823,-4.9999882 V 449.36032 M 111.42989,-4.9999882 V 449.36032 M 116.72156,-4.9999882 V 449.36032 M 122.01323,-4.9999882 V 449.36032 M 127.30489,-4.9999882 V 449.36032 M 132.59656,-4.9999882 V 449.36032 M 137.88823,-4.9999882 V 449.36032 M 143.17989,-4.9999882 V 449.36032 M 148.47156,-4.9999882 V 449.36032 M 153.76323,-4.9999882 V 449.36032 M 159.05489,-4.9999882 V 449.36032 M 164.34656,-4.9999882 V 449.36032 M 169.63823,-4.9999882 V 449.36032 M 174.92989,-4.9999882 V 449.36032 M 180.22156,-4.9999882 V 449.36032 M 185.51323,-4.9999882 V 449.36032 M -4.9867716,-4.9999882 H 186.12043 M -4.9867716,0.29167834 H 186.12043 M -4.9867716,5.5833448 H 186.12043 M -4.9867716,10.875012 H 186.12043 M -4.9867716,16.166678 H 186.12043 M -4.9867716,21.458345 H 186.12043 M -4.9867716,26.750011 H 186.12043 M -4.9867716,32.041678 H 186.12043 M -4.9867716,37.333344 H 186.12043 M -4.9867716,42.625011 H 186.12043 M -4.9867716,47.916677 H 186.12043 M -4.9867716,53.208344 H 186.12043 M -4.9867716,58.500011 H 186.12043 M -4.9867716,63.791677 H 186.12043 M -4.9867716,69.083344 H 186.12043 M -4.9867716,74.37501 H 186.12043 M -4.9867716,79.666677 H 186.12043 M -4.9867716,84.958343 H 186.12043 M -4.9867716,90.25001 H 186.12043 M -4.9867716,95.541672 H 186.12043 M -4.9867716,100.83334 H 186.12043 M -4.9867716,106.12501 H 186.12043 M -4.9867716,111.41667 H 186.12043 M -4.9867716,116.70834 H 186.12043 M -4.9867716,122.00001 H 186.12043 M -4.9867716,127.29167 H 186.12043 M -4.9867716,132.58334 H 186.12043 M -4.9867716,137.87501 H 186.12043 M -4.9867716,143.16667 H 186.12043 M -4.9867716,148.45834 H 186.12043 M -4.9867716,153.75001 H 186.12043 M -4.9867716,159.04167 H 186.12043 M -4.9867716,164.33334 H 186.12043 M -4.9867716,169.62501 H 186.12043 M -4.9867716,174.91667 H 186.12043 M -4.9867716,180.20834 H 186.12043 M -4.9867716,185.50001 H 186.12043 M -4.9867716,190.79167 H 186.12043 M -4.9867716,196.08334 H 186.12043 M -4.9867716,201.37501 H 186.12043 M -4.9867716,206.66667 H 186.12043 M -4.9867716,211.95834 H 186.12043 M -4.9867716,217.25001 H 186.12043 M -4.9867716,222.54167 H 186.12043 M -4.9867716,227.83334 H 186.12043 M -4.9867716,233.125 H 186.12043 M -4.9867716,238.41667 H 186.12043 M -4.9867716,243.70834 H 186.12043 M -4.9867716,249 H 186.12043 M -4.9867716,254.29167 H 186.12043 M -4.9867716,259.58334 H 186.12043 M -4.9867716,264.875 H 186.12043 M -4.9867716,270.16667 H 186.12043 M -4.9867716,275.45834 H 186.12043 M -4.9867716,280.75 H 186.12043 M -4.9867716,286.04167 H 186.12043 M -4.9867716,291.33334 H 186.12043 M -4.9867716,296.625 H 186.12043 M -4.9867716,301.91667 H 186.12043 M -4.9867716,307.20834 H 186.12043 M -4.9867716,312.5 H 186.12043 M -4.9867716,317.79167 H 186.12043 M -4.9867716,323.08334 H 186.12043 M -4.9867716,328.375 H 186.12043 M -4.9867716,333.66667 H 186.12043 M -4.9867716,338.95834 H 186.12043 M -4.9867716,344.25 H 186.12043 M -4.9867716,349.54167 H 186.12043 M -4.9867716,354.83334 H 186.12043 M -4.9867716,360.125 H 186.12043 M -4.9867716,365.41667 H 186.12043 M -4.9867716,370.70834 H 186.12043 M -4.9867716,376 H 186.12043 M -4.9867716,381.29167 H 186.12043 M -4.9867716,386.58333 H 186.12043 M -4.9867716,391.875 H 186.12043 M -4.9867716,397.16667 H 186.12043 M -4.9867716,402.45833 H 186.12043 M -4.9867716,407.75 H 186.12043 M -4.9867716,413.04167 H 186.12043 M -4.9867716,418.33333 H 186.12043 M -4.9867716,423.625 H 186.12043 M -4.9867716,428.91667 H 186.12043 M -4.9867716,434.20833 H 186.12043 M -4.9867716,439.5 H 186.12043 M -4.9867716,444.79167 H 186.12043" />
-  </g>
-  <g
-     style="display:inline"
-     transform="translate(46.95536,63.837051)"
-     id="layer1">
-    <text
-       id="text4506"
-       y="-56.407742"
-       x="-41.95536"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055563px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       xml:space="preserve"><tspan
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="-56.407742"
-         x="-41.95536"
-         id="tspan4504"><tspan
-   id="tspan4776"
-   style="fill:#669900">#include</tspan> &lt;<tspan
-   id="tspan4780"
-   style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'">ESP8266WiFi.h</tspan>&gt;</tspan><tspan
-         id="tspan4508"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="-51.557049"
-         x="-41.95536"><tspan
-   id="tspan4778"
-   style="fill:#669900">#include</tspan> &lt;<tspan
-   id="tspan4782"
-   style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'">ESP8266WebServer.h</tspan>&gt;</tspan><tspan
-         id="tspan4510"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="-46.706352"
-         x="-41.95536"><tspan
-   id="tspan4786"
-   style="fill:#669900">#include</tspan> &lt;<tspan
-   id="tspan4784"
-   style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'">AutoConnect.h</tspan>&gt;</tspan><tspan
-         id="tspan4512"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="-41.855659"
-         x="-41.95536" /><tspan
-         id="tspan4514"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="-37.004963"
-         x="-41.95536"><tspan
-   id="tspan4788"
-   style="fill:#ff6600">ESP8266WebServer</tspan>    server;</tspan><tspan
-         id="tspan4516"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="-32.15427"
-         x="-41.95536"><tspan
-   id="tspan4790"
-   style="fill:#ff6600">AutoConnect</tspan>         portal(server);</tspan><tspan
-         id="tspan4518"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="-27.303574"
-         x="-41.95536" /><tspan
-         id="tspan4520"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="-22.452879"
-         x="-41.95536"><tspan
-   id="tspan4792"
-   style="fill:#3366cc">void</tspan> handleRoot() {</tspan><tspan
-         id="tspan4522"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="-17.602184"
-         x="-41.95536">  <tspan
-   id="tspan4794"
-   style="fill:#3366cc">String</tspan> page = PSTR(</tspan><tspan
-         id="tspan4524"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="-12.751491"
-         x="-41.95536">&quot;&lt;html&gt;&quot;</tspan><tspan
-         id="tspan4526"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="-7.9007959"
-         x="-41.95536">&quot;&lt;head&gt;&quot;</tspan><tspan
-         id="tspan4528"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="-3.0501018"
-         x="-41.95536">  &quot;&lt;meta name=\&quot;viewport\&quot; content=\&quot;width=device-width, initial-scale=1\&quot;&gt;&quot;</tspan><tspan
-         id="tspan4530"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="1.8005929"
-         x="-41.95536">  &quot;&lt;style type=\&quot;text/css\&quot;&gt;&quot;</tspan><tspan
-         id="tspan4532"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="6.6512876"
-         x="-41.95536">    &quot;body {&quot;</tspan><tspan
-         id="tspan4534"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="11.501982"
-         x="-41.95536">    &quot;-webkit-appearance:none;&quot;</tspan><tspan
-         id="tspan4536"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="16.352676"
-         x="-41.95536">    &quot;-moz-appearance:none;&quot;</tspan><tspan
-         id="tspan4538"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="21.203371"
-         x="-41.95536">    &quot;font-family:'Arial',sans-serif;&quot;</tspan><tspan
-         id="tspan4540"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="26.054066"
-         x="-41.95536">    &quot;text-align:center;&quot;</tspan><tspan
-         id="tspan4542"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="30.90476"
-         x="-41.95536">    &quot;}&quot;</tspan><tspan
-         id="tspan4544"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="35.755455"
-         x="-41.95536">    &quot;.menu {&quot;</tspan><tspan
-         id="tspan4546"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="40.606148"
-         x="-41.95536">    &quot;text-align:right;&quot;</tspan><tspan
-         id="tspan4548"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="45.456844"
-         x="-41.95536">    &quot;}&quot;</tspan><tspan
-         id="tspan4550"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="50.307537"
-         x="-41.95536">    &quot;.button {&quot;</tspan><tspan
-         id="tspan4552"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="55.158234"
-         x="-41.95536">    &quot;display:inline-block;&quot;</tspan><tspan
-         id="tspan4554"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="60.008926"
-         x="-41.95536">    &quot;border-radius:7px;&quot;</tspan><tspan
-         id="tspan4556"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="64.859619"
-         x="-41.95536">    &quot;background:#73ad21;&quot;</tspan><tspan
-         id="tspan4558"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="69.71032"
-         x="-41.95536">    &quot;margin:0 10px 0 10px;&quot;</tspan><tspan
-         id="tspan4560"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="74.561012"
-         x="-41.95536">    &quot;padding:10px 20px 10px 20px;&quot;</tspan><tspan
-         id="tspan4562"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="79.411705"
-         x="-41.95536">    &quot;text-decoration:none;&quot;</tspan><tspan
-         id="tspan4564"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="84.262398"
-         x="-41.95536">    &quot;color:#000000;&quot;</tspan><tspan
-         id="tspan4566"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="89.113098"
-         x="-41.95536">    &quot;}&quot;</tspan><tspan
-         id="tspan4568"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="93.963791"
-         x="-41.95536">  &quot;&lt;/style&gt;&quot;</tspan><tspan
-         id="tspan4570"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="98.814484"
-         x="-41.95536">&quot;&lt;/head&gt;&quot;</tspan><tspan
-         id="tspan4572"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="103.66518"
-         x="-41.95536">&quot;&lt;body&gt;&quot;</tspan><tspan
-         id="tspan4574"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="108.51587"
-         x="-41.95536">  &quot;&lt;p class=\&quot;menu\&quot;&gt;&quot; <tspan
-   id="tspan4798"
-   style="fill:#000000">AUTOCONNECT_LINK(BAR_32)</tspan> &quot;&lt;/p&gt;&quot;</tspan><tspan
-         id="tspan4576"
-         style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-         y="113.36657"
-         x="-41.95536">  &quot;BUILT-IN LED&lt;br&gt;&quot;</tspan><tspan
-         id="tspan4578"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="118.21726"
-         x="-41.95536"><tspan
-   id="tspan4796"
-   style="fill:#003399">  &quot;GPIO(&quot;</tspan>);</tspan><tspan
-         id="tspan4580"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="123.06796"
-         x="-41.95536">  page += <tspan
-   id="tspan4800"
-   style="fill:#3366cc">String</tspan>(BUILTIN_LED);</tspan><tspan
-         id="tspan4582"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="127.91865"
-         x="-41.95536">  page += <tspan
-   id="tspan4802"
-   style="fill:#3366cc">String</tspan>(F(<tspan
-   id="tspan4804"
-   style="fill:#003399">&quot;) : &lt;span style=\&quot;font-weight:bold;color:&quot;</tspan>));</tspan><tspan
-         id="tspan4584"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="132.76935"
-         x="-41.95536">  page += <tspan
-   id="tspan4806"
-   style="fill:#ff6600">digitalRead</tspan>(BUILTIN_LED) ? <tspan
-   id="tspan4808"
-   style="fill:#3366cc">String</tspan>(<tspan
-   id="tspan4812"
-   style="fill:#003399">&quot;Tomato\&quot;&gt;HIGH&quot;</tspan>) : <tspan
-   id="tspan4814"
-   style="fill:#3366cc">String</tspan>(<tspan
-   id="tspan4816"
-   style="fill:#003399">&quot;SlateBlue\&quot;&gt;LOW&quot;</tspan>);</tspan><tspan
-         id="tspan4586"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="137.62004"
-         x="-41.95536">  page += <tspan
-   id="tspan4818"
-   style="fill:#ff6600">String</tspan>(F(<tspan
-   id="tspan4820"
-   style="fill:#003399">&quot;&lt;/span&gt;&quot;</tspan>));</tspan><tspan
-         id="tspan4588"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="142.47073"
-         x="-41.95536">  page += <tspan
-   id="tspan4822"
-   style="fill:#ff6600">String</tspan>(F(<tspan
-   id="tspan4826"
-   style="fill:#003399">&quot;&lt;p&gt;&lt;a class=\&quot;button\&quot; href=\&quot;/io?v=low\&quot;&gt;low&lt;/a&gt;</tspan></tspan><tspan
-         id="tspan4968"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="147.32143"
-         x="-41.95536"><tspan
-   id="tspan4970"
-   style="fill:#003399">                                 &lt;a class=\&quot;button\&quot; href=\&quot;/io?v=high\&quot;&gt;high&lt;/a&gt;&lt;/p&gt;&quot;</tspan>));</tspan><tspan
-         id="tspan4590"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="152.17212"
-         x="-41.95536">  page += <tspan
-   id="tspan4824"
-   style="fill:#ff6600">String</tspan>(F(<tspan
-   id="tspan4828"
-   style="fill:#003399">&quot;&lt;/body&gt;&lt;/html&gt;&quot;</tspan>));</tspan><tspan
-         id="tspan4592"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="157.02281"
-         x="-41.95536">  server().<tspan
-   id="tspan4832"
-   style="fill:#ff6600">send</tspan>(200, <tspan
-   id="tspan4834"
-   style="fill:#003399">&quot;text/html&quot;</tspan>, page);</tspan><tspan
-         id="tspan4594"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="161.87352"
-         x="-41.95536">}</tspan><tspan
-         id="tspan4596"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="166.72421"
-         x="-41.95536" /><tspan
-         id="tspan4598"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="171.57491"
-         x="-41.95536"><tspan
-   id="tspan4836"
-   style="fill:#3366cc">void</tspan> handleGPIO() {</tspan><tspan
-         id="tspan4600"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="176.4256"
-         x="-41.95536">  <tspan
-   id="tspan4838"
-   style="fill:#808080">if</tspan> (server.<tspan
-   id="tspan4842"
-   style="fill:#ff6600">arg</tspan>(<tspan
-   id="tspan4844"
-   style="fill:#003399">&quot;v&quot;</tspan>) == <tspan
-   id="tspan4846"
-   style="fill:#003399">&quot;low&quot;</tspan>)</tspan><tspan
-         id="tspan4602"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="181.27629"
-         x="-41.95536">    <tspan
-   id="tspan4850"
-   style="fill:#ff6600">digitalWrite</tspan>(BUILTIN_LED, <tspan
-   id="tspan4852"
-   style="fill:#ff6600">LOW</tspan>);</tspan><tspan
-         id="tspan4604"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="186.12698"
-         x="-41.95536">  <tspan
-   id="tspan4860"
-   style="fill:#808080">else</tspan> <tspan
-   id="tspan4862"
-   style="fill:#808080">if</tspan> (server.<tspan
-   id="tspan4858"
-   style="fill:#ff6600">arg</tspan>(<tspan
-   id="tspan4856"
-   style="fill:#003399">&quot;v&quot;</tspan>) == <tspan
-   id="tspan4854"
-   style="fill:#003399">&quot;high&quot;</tspan>)</tspan><tspan
-         id="tspan4606"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="190.97768"
-         x="-41.95536">    <tspan
-   id="tspan4864"
-   style="fill:#ff6600">digitalWrite</tspan>(BUILTIN_LED, <tspan
-   id="tspan4866"
-   style="fill:#ff6600">HIGH</tspan>);</tspan><tspan
-         id="tspan4608"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="195.82837"
-         x="-41.95536">  sendRedirect(&quot;/&quot;);</tspan><tspan
-         id="tspan4610"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="200.67906"
-         x="-41.95536">}</tspan><tspan
-         id="tspan4612"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="205.52977"
-         x="-41.95536" /><tspan
-         id="tspan4614"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="210.38046"
-         x="-41.95536"><tspan
-   id="tspan4868"
-   style="fill:#3366cc">void</tspan> sendRedirect(<tspan
-   id="tspan4870"
-   style="fill:#3366cc">String</tspan> uri) {</tspan><tspan
-         id="tspan4616"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="215.23116"
-         x="-41.95536">  server.<tspan
-   id="tspan4872"
-   style="fill:#ff6600">sendHeader</tspan>(<tspan
-   id="tspan4874"
-   style="fill:#003399">&quot;Location&quot;</tspan>, uri, <tspan
-   id="tspan4876"
-   style="fill:#3366cc">true</tspan>);</tspan><tspan
-         id="tspan4618"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="220.08185"
-         x="-41.95536">  server.<tspan
-   id="tspan4880"
-   style="fill:#ff6600">send</tspan>(302, &quot;text/plain&quot;, <tspan
-   id="tspan4878"
-   style="fill:#003399">&quot;&quot;</tspan>);</tspan><tspan
-         id="tspan4620"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="224.93254"
-         x="-41.95536">  server.<tspan
-   id="tspan4884"
-   style="fill:#ff6600">client</tspan>().<tspan
-   id="tspan4886"
-   style="fill:#ff6600">stop</tspan>();</tspan><tspan
-         id="tspan4622"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="229.78323"
-         x="-41.95536">}</tspan><tspan
-         id="tspan4624"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="234.63393"
-         x="-41.95536" /><tspan
-         id="tspan4626"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="239.48462"
-         x="-41.95536"><tspan
-   id="tspan4890"
-   style="fill:#3366cc">void</tspan> setup() {</tspan><tspan
-         id="tspan4628"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="244.33533"
-         x="-41.95536">  <tspan
-   id="tspan4888"
-   style="fill:#ff6600">delay</tspan>(1000);</tspan><tspan
-         id="tspan4630"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="249.18602"
-         x="-41.95536">  <tspan
-   id="tspan4892"
-   style="fill:#ff6600">Serial</tspan>.<tspan
-   id="tspan4894"
-   style="fill:#ff6600">begin</tspan>(115200);</tspan><tspan
-         id="tspan4632"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="254.03671"
-         x="-41.95536">  <tspan
-   id="tspan4898"
-   style="fill:#ff6600">Serial</tspan>.<tspan
-   id="tspan4896"
-   style="fill:#ff6600">println</tspan>();</tspan><tspan
-         id="tspan4634"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="258.88739"
-         x="-41.95536">  <tspan
-   id="tspan4900"
-   style="fill:#ff6600">pinMode</tspan>(BUILTIN_LED, <tspan
-   id="tspan4902"
-   style="fill:#ff6600">OUTPUT</tspan>);</tspan><tspan
-         id="tspan4636"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="263.7381"
-         x="-41.95536" /><tspan
-         id="tspan4638"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="268.58881"
-         x="-41.95536">  <tspan
-   id="tspan4904"
-   style="fill:#808080">// Put the home location of the web site.</tspan></tspan><tspan
-         id="tspan4640"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="273.43948"
-         x="-41.95536">  <tspan
-   id="tspan4906"
-   style="fill:#808080">// But in usually, setting the home uri is not needed cause default location is &quot;/&quot;.</tspan></tspan><tspan
-         id="tspan4642"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="278.29019"
-         x="-41.95536">  <tspan
-   id="tspan4908"
-   style="fill:#808080">//portal.home(&quot;/&quot;);</tspan></tspan><tspan
-         id="tspan4644"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="283.14087"
-         x="-41.95536" /><tspan
-         id="tspan4646"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="287.99158"
-         x="-41.95536">  server.<tspan
-   id="tspan4910"
-   style="fill:#ff6600">on</tspan>(<tspan
-   id="tspan4912"
-   style="fill:#003399">&quot;/&quot;</tspan>, handleRoot);</tspan><tspan
-         id="tspan4648"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="292.84225"
-         x="-41.95536">  server.<tspan
-   id="tspan4916"
-   style="fill:#ff6600">on</tspan>(<tspan
-   id="tspan4914"
-   style="fill:#003399">&quot;/io&quot;</tspan>, handleGPIO);</tspan><tspan
-         id="tspan4650"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="297.69296"
-         x="-41.95536" /><tspan
-         id="tspan4652"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="302.54364"
-         x="-41.95536">  // Starts user web site included the AutoConnect portal.</tspan><tspan
-         id="tspan4654"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="307.39435"
-         x="-41.95536">  <tspan
-   id="tspan4934"
-   style="fill:#808080">if</tspan> (portal.<tspan
-   id="tspan4918"
-   style="fill:#ff6600">begin</tspan>()) {</tspan><tspan
-         id="tspan4656"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="312.24506"
-         x="-41.95536">    <tspan
-   id="tspan4920"
-   style="fill:#ff6600">Serial</tspan>.<tspan
-   id="tspan4922"
-   style="fill:#ff6600">println</tspan>(<tspan
-   id="tspan4924"
-   style="fill:#003399">&quot;Started, IP:&quot;</tspan> + <tspan
-   id="tspan4926"
-   style="fill:#ff6600">WiFi</tspan>.<tspan
-   id="tspan4928"
-   style="fill:#ff6600">localIP</tspan>().<tspan
-   id="tspan4930"
-   style="fill:#ff6600">toString</tspan>());</tspan><tspan
-         id="tspan4658"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="317.09573"
-         x="-41.95536">  }</tspan><tspan
-         id="tspan4660"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="321.94644"
-         x="-41.95536">  <tspan
-   id="tspan4936"
-   style="fill:#808080">else</tspan> {</tspan><tspan
-         id="tspan4662"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="326.79712"
-         x="-41.95536">    <tspan
-   id="tspan4938"
-   style="fill:#ff6600">Serial</tspan>.<tspan
-   id="tspan4940"
-   style="fill:#ff6600">println</tspan>(<tspan
-   id="tspan4942"
-   style="fill:#003399">&quot;Connection failed.&quot;</tspan>);</tspan><tspan
-         id="tspan4664"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="331.64783"
-         x="-41.95536">    <tspan
-   id="tspan4944"
-   style="fill:#808080">while</tspan> (<tspan
-   id="tspan4946"
-   style="fill:#3366cc">true</tspan>) { <tspan
-   id="tspan4948"
-   style="fill:#ff6600">yield</tspan>(); }</tspan><tspan
-         id="tspan4666"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="336.4985"
-         x="-41.95536">  }</tspan><tspan
-         id="tspan4668"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="341.34921"
-         x="-41.95536">}</tspan><tspan
-         id="tspan4670"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="346.19989"
-         x="-41.95536" /><tspan
-         id="tspan4672"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="351.0506"
-         x="-41.95536"><tspan
-   id="tspan4950"
-   style="fill:#3366cc">void</tspan> loop() {</tspan><tspan
-         id="tspan4674"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="355.90131"
-         x="-41.95536">  server.<tspan
-   id="tspan4952"
-   style="fill:#ff6600">handleClient</tspan>();</tspan><tspan
-         id="tspan4676"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="360.75198"
-         x="-41.95536">  portal.<tspan
-   id="tspan4954"
-   style="fill:#ff6600">handleRequest</tspan>();   // Need to handle AutoConnect menu.</tspan><tspan
-         id="tspan4678"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="365.60269"
-         x="-41.95536">  <tspan
-   id="tspan4966"
-   style="fill:#808080">if</tspan> (<tspan
-   id="tspan4956"
-   style="fill:#ff6600">WiFi</tspan>.<tspan
-   id="tspan4958"
-   style="fill:#ff6600">status</tspan>() == <tspan
-   id="tspan4960"
-   style="fill:#3366cc">WL_IDLE_STATUS</tspan>) {</tspan><tspan
-         id="tspan4680"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="370.45337"
-         x="-41.95536">    ESP.<tspan
-   id="tspan4962"
-   style="fill:#ff6600">reset</tspan>();</tspan><tspan
-         id="tspan4682"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="375.30408"
-         x="-41.95536">    <tspan
-   id="tspan4964"
-   style="fill:#ff6600">delay</tspan>(1000);</tspan><tspan
-         id="tspan4684"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="380.15475"
-         x="-41.95536">  }</tspan><tspan
-         id="tspan4686"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="385.00546"
-         x="-41.95536">}</tspan><tspan
-         id="tspan4688"
-         style="font-size:3.17499995px;stroke-width:0.26458332"
-         y="389.85617"
-         x="-41.95536" /></text>
-  </g>
-  <g
-     style="display:inline"
-     id="layer3">
-    <path
-       d="m 119.94348,375.62042 -8.69884,-5.02228 8.69884,-5.02227 z"
-       id="path4984-8-8"
-       style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.2659663, 2.2659663;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill" />
-    <text
-       id="text4702"
-       y="28.892231"
-       x="94.665428"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       xml:space="preserve"><tspan
-         style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-         y="28.892231"
-         x="94.665428"
-         id="tspan4700">1. Declare AutoConnect</tspan><tspan
-         id="tspan4972"
-         style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-         y="35.065842"
-         x="94.665428">    and bind it to ESP8266WebServer</tspan></text>
-    <text
-       id="text4702-1"
-       y="349.37784"
-       x="115.7594"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       xml:space="preserve"><tspan
-         style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-         y="349.37784"
-         x="115.7594"
-         id="tspan4700-2">2. Register request handlers</tspan><tspan
-         id="tspan4974"
-         style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-         y="355.55145"
-         x="115.7594">    to ESP8266WebServer</tspan></text>
-    <text
-       id="text4702-1-3"
-       y="368.79718"
-       x="122.43944"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       xml:space="preserve"><tspan
-         style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-         y="368.79718"
-         x="122.43944"
-         id="tspan4700-2-3">3. Start AutoConnect,</tspan><tspan
-         id="tspan4976"
-         style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-         y="374.97079"
-         x="122.43944">    no need server.begin()</tspan></text>
-    <text
-       id="text4702-1-3-9"
-       y="417.13007"
-       x="121.19266"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       xml:space="preserve"><tspan
-         style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-         y="417.13007"
-         x="121.19266"
-         id="tspan4700-2-3-5">4. Perform handleClient</tspan><tspan
-         id="tspan4978"
-         style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-         y="423.30368"
-         x="121.19266">    for ESP8266WebServer</tspan></text>
-    <text
-       id="text4702-1-3-9-5"
-       y="429.72409"
-       x="121.46516"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       xml:space="preserve"><tspan
-         style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-         y="429.72409"
-         x="121.46516"
-         id="tspan4700-2-3-5-1">5. Perform handleRequest</tspan><tspan
-         id="tspan4980"
-         style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-         y="435.89771"
-         x="121.46516">    for AutoConnect</tspan></text>
-    <path
-       d="m 92.895309,35.166107 -8.698836,-5.022276 8.698836,-5.022275 z"
-       id="path4984"
-       style="opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596625, 2.26596625;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill" />
-    <path
-       d="m 113.91916,355.65173 -8.69884,-5.02227 8.69884,-5.02228 z"
-       id="path4984-8"
-       style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596627, 2.26596627;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill" />
-    <path
-       d="m 119.14169,423.39187 -8.69884,-5.02227 8.69884,-5.02228 z"
-       id="path4984-8-8-1"
-       style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596632, 2.26596632;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill" />
-    <path
-       d="m 119.14169,435.9823 -8.69884,-5.02228 8.69884,-5.02227 z"
-       id="path4984-8-8-6"
-       style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596632, 2.26596632;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill" />
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/mkdocs/images/handlePortal.svg b/lib/AutoConnect-master/mkdocs/images/handlePortal.svg
deleted file mode 100644
index bc481856af50ad57c5ef559b926686e43c608397..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/images/handlePortal.svg
+++ /dev/null
@@ -1,705 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   id="svg8"
-   version="1.1"
-   viewBox="0 0 191.12044 454.37354"
-   height="454.37354mm"
-   width="191.12044mm">
-  <defs
-     id="defs2" />
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     transform="translate(143.18522,78.353435)"
-     id="layer1">
-    <g
-       transform="translate(-143.18522,-78.340217)"
-       id="g1243">
-      <g
-         id="layer2"
-         transform="translate(5.0000008,4.9999992)"
-         style="display:inline">
-        <path
-           d="M -4.9867716,-4.9999882 V 449.36032 M 0.30489485,-4.9999882 V 449.36032 M 5.5965614,-4.9999882 V 449.36032 M 10.888228,-4.9999882 V 449.36032 M 16.179894,-4.9999882 V 449.36032 M 21.471561,-4.9999882 V 449.36032 M 26.763227,-4.9999882 V 449.36032 M 32.054894,-4.9999882 V 449.36032 M 37.34656,-4.9999882 V 449.36032 M 42.638227,-4.9999882 V 449.36032 M 47.929893,-4.9999882 V 449.36032 M 53.22156,-4.9999882 V 449.36032 M 58.513227,-4.9999882 V 449.36032 M 63.804893,-4.9999882 V 449.36032 M 69.09656,-4.9999882 V 449.36032 M 74.388226,-4.9999882 V 449.36032 M 79.679893,-4.9999882 V 449.36032 M 84.971559,-4.9999882 V 449.36032 M 90.263226,-4.9999882 V 449.36032 M 95.554888,-4.9999882 V 449.36032 M 100.84656,-4.9999882 V 449.36032 M 106.13823,-4.9999882 V 449.36032 M 111.42989,-4.9999882 V 449.36032 M 116.72156,-4.9999882 V 449.36032 M 122.01323,-4.9999882 V 449.36032 M 127.30489,-4.9999882 V 449.36032 M 132.59656,-4.9999882 V 449.36032 M 137.88823,-4.9999882 V 449.36032 M 143.17989,-4.9999882 V 449.36032 M 148.47156,-4.9999882 V 449.36032 M 153.76323,-4.9999882 V 449.36032 M 159.05489,-4.9999882 V 449.36032 M 164.34656,-4.9999882 V 449.36032 M 169.63823,-4.9999882 V 449.36032 M 174.92989,-4.9999882 V 449.36032 M 180.22156,-4.9999882 V 449.36032 M 185.51323,-4.9999882 V 449.36032 M -4.9867716,-4.9999882 H 186.12043 M -4.9867716,0.29167834 H 186.12043 M -4.9867716,5.5833448 H 186.12043 M -4.9867716,10.875012 H 186.12043 M -4.9867716,16.166678 H 186.12043 M -4.9867716,21.458345 H 186.12043 M -4.9867716,26.750011 H 186.12043 M -4.9867716,32.041678 H 186.12043 M -4.9867716,37.333344 H 186.12043 M -4.9867716,42.625011 H 186.12043 M -4.9867716,47.916677 H 186.12043 M -4.9867716,53.208344 H 186.12043 M -4.9867716,58.500011 H 186.12043 M -4.9867716,63.791677 H 186.12043 M -4.9867716,69.083344 H 186.12043 M -4.9867716,74.37501 H 186.12043 M -4.9867716,79.666677 H 186.12043 M -4.9867716,84.958343 H 186.12043 M -4.9867716,90.25001 H 186.12043 M -4.9867716,95.541672 H 186.12043 M -4.9867716,100.83334 H 186.12043 M -4.9867716,106.12501 H 186.12043 M -4.9867716,111.41667 H 186.12043 M -4.9867716,116.70834 H 186.12043 M -4.9867716,122.00001 H 186.12043 M -4.9867716,127.29167 H 186.12043 M -4.9867716,132.58334 H 186.12043 M -4.9867716,137.87501 H 186.12043 M -4.9867716,143.16667 H 186.12043 M -4.9867716,148.45834 H 186.12043 M -4.9867716,153.75001 H 186.12043 M -4.9867716,159.04167 H 186.12043 M -4.9867716,164.33334 H 186.12043 M -4.9867716,169.62501 H 186.12043 M -4.9867716,174.91667 H 186.12043 M -4.9867716,180.20834 H 186.12043 M -4.9867716,185.50001 H 186.12043 M -4.9867716,190.79167 H 186.12043 M -4.9867716,196.08334 H 186.12043 M -4.9867716,201.37501 H 186.12043 M -4.9867716,206.66667 H 186.12043 M -4.9867716,211.95834 H 186.12043 M -4.9867716,217.25001 H 186.12043 M -4.9867716,222.54167 H 186.12043 M -4.9867716,227.83334 H 186.12043 M -4.9867716,233.125 H 186.12043 M -4.9867716,238.41667 H 186.12043 M -4.9867716,243.70834 H 186.12043 M -4.9867716,249 H 186.12043 M -4.9867716,254.29167 H 186.12043 M -4.9867716,259.58334 H 186.12043 M -4.9867716,264.875 H 186.12043 M -4.9867716,270.16667 H 186.12043 M -4.9867716,275.45834 H 186.12043 M -4.9867716,280.75 H 186.12043 M -4.9867716,286.04167 H 186.12043 M -4.9867716,291.33334 H 186.12043 M -4.9867716,296.625 H 186.12043 M -4.9867716,301.91667 H 186.12043 M -4.9867716,307.20834 H 186.12043 M -4.9867716,312.5 H 186.12043 M -4.9867716,317.79167 H 186.12043 M -4.9867716,323.08334 H 186.12043 M -4.9867716,328.375 H 186.12043 M -4.9867716,333.66667 H 186.12043 M -4.9867716,338.95834 H 186.12043 M -4.9867716,344.25 H 186.12043 M -4.9867716,349.54167 H 186.12043 M -4.9867716,354.83334 H 186.12043 M -4.9867716,360.125 H 186.12043 M -4.9867716,365.41667 H 186.12043 M -4.9867716,370.70834 H 186.12043 M -4.9867716,376 H 186.12043 M -4.9867716,381.29167 H 186.12043 M -4.9867716,386.58333 H 186.12043 M -4.9867716,391.875 H 186.12043 M -4.9867716,397.16667 H 186.12043 M -4.9867716,402.45833 H 186.12043 M -4.9867716,407.75 H 186.12043 M -4.9867716,413.04167 H 186.12043 M -4.9867716,418.33333 H 186.12043 M -4.9867716,423.625 H 186.12043 M -4.9867716,428.91667 H 186.12043 M -4.9867716,434.20833 H 186.12043 M -4.9867716,439.5 H 186.12043 M -4.9867716,444.79167 H 186.12043"
-           style="fill:none;stroke:#000000;stroke-width:0.0264583px"
-           id="path4982" />
-      </g>
-      <g
-         id="layer1-3"
-         transform="translate(46.95536,63.837051)"
-         style="display:inline">
-        <text
-           xml:space="preserve"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.88055563px;line-height:1.25;font-family:monospace;-inkscape-font-specification:monospace;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-           x="-41.95536"
-           y="-56.407742"
-           id="text4506"><tspan
-             id="tspan4504"
-             x="-41.95536"
-             y="-56.407742"
-             style="font-size:3.17499995px;stroke-width:0.26458332"><tspan
-   style="fill:#669900"
-   id="tspan4776">#include</tspan> &lt;<tspan
-   style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'"
-   id="tspan4780">ESP8266WiFi.h</tspan>&gt;</tspan><tspan
-             x="-41.95536"
-             y="-51.557049"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4508"><tspan
-   style="fill:#669900"
-   id="tspan4778">#include</tspan> &lt;<tspan
-   style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'"
-   id="tspan4782">ESP8266WebServer.h</tspan>&gt;</tspan><tspan
-             x="-41.95536"
-             y="-46.706352"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4510"><tspan
-   style="fill:#669900"
-   id="tspan4786">#include</tspan> &lt;<tspan
-   style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:monospace;-inkscape-font-specification:'monospace Italic'"
-   id="tspan4784">AutoConnect.h</tspan>&gt;</tspan><tspan
-             x="-41.95536"
-             y="-41.855659"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4512" /><tspan
-             x="-41.95536"
-             y="-37.004963"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4516"><tspan
-   style="fill:#ff6600"
-   id="tspan4790">AutoConnect </tspan>portal;</tspan><tspan
-             x="-41.95536"
-             y="-32.15427"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4518" /><tspan
-             x="-41.95536"
-             y="-27.303574"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4520"><tspan
-   style="fill:#3366cc"
-   id="tspan4792">void</tspan> handleRoot() {</tspan><tspan
-             x="-41.95536"
-             y="-22.452879"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4522"><tspan
-   style="fill:#3366cc"
-   id="tspan4794">String</tspan> page = PSTR(</tspan><tspan
-             x="-41.95536"
-             y="-17.602184"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4524">&quot;&lt;html&gt;&quot;</tspan><tspan
-             x="-41.95536"
-             y="-12.751491"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4526">&quot;&lt;head&gt;&quot;</tspan><tspan
-             x="-41.95536"
-             y="-7.9007959"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4528">  &quot;&lt;meta name=\&quot;viewport\&quot; content=\&quot;width=device-width, initial-scale=1\&quot;&gt;&quot;</tspan><tspan
-             x="-41.95536"
-             y="-3.0501018"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4530">  &quot;&lt;style type=\&quot;text/css\&quot;&gt;&quot;</tspan><tspan
-             x="-41.95536"
-             y="1.8005929"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4532">    &quot;body {&quot;</tspan><tspan
-             x="-41.95536"
-             y="6.6512876"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4534">    &quot;-webkit-appearance:none;&quot;</tspan><tspan
-             x="-41.95536"
-             y="11.501982"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4536">    &quot;-moz-appearance:none;&quot;</tspan><tspan
-             x="-41.95536"
-             y="16.352676"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4538">    &quot;font-family:'Arial',sans-serif;&quot;</tspan><tspan
-             x="-41.95536"
-             y="21.203371"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4540">    &quot;text-align:center;&quot;</tspan><tspan
-             x="-41.95536"
-             y="26.054066"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4542">    &quot;}&quot;</tspan><tspan
-             x="-41.95536"
-             y="30.90476"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4544">    &quot;.menu {&quot;</tspan><tspan
-             x="-41.95536"
-             y="35.755455"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4546">    &quot;text-align:right;&quot;</tspan><tspan
-             x="-41.95536"
-             y="40.606148"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4548">    &quot;}&quot;</tspan><tspan
-             x="-41.95536"
-             y="45.456844"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4550">    &quot;.button {&quot;</tspan><tspan
-             x="-41.95536"
-             y="50.307537"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4552">    &quot;display:inline-block;&quot;</tspan><tspan
-             x="-41.95536"
-             y="55.158234"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4554">    &quot;border-radius:7px;&quot;</tspan><tspan
-             x="-41.95536"
-             y="60.008926"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4556">    &quot;background:#73ad21;&quot;</tspan><tspan
-             x="-41.95536"
-             y="64.859619"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4558">    &quot;margin:0 10px 0 10px;&quot;</tspan><tspan
-             x="-41.95536"
-             y="69.71032"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4560">    &quot;padding:10px 20px 10px 20px;&quot;</tspan><tspan
-             x="-41.95536"
-             y="74.561012"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4562">    &quot;text-decoration:none;&quot;</tspan><tspan
-             x="-41.95536"
-             y="79.411705"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4564">    &quot;color:#000000;&quot;</tspan><tspan
-             x="-41.95536"
-             y="84.262398"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4566">    &quot;}&quot;</tspan><tspan
-             x="-41.95536"
-             y="89.113098"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4568">  &quot;&lt;/style&gt;&quot;</tspan><tspan
-             x="-41.95536"
-             y="93.963791"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4570">&quot;&lt;/head&gt;&quot;</tspan><tspan
-             x="-41.95536"
-             y="98.814484"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4572">&quot;&lt;body&gt;&quot;</tspan><tspan
-             x="-41.95536"
-             y="103.66518"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4574">  &quot;&lt;p class=\&quot;menu\&quot;&gt;&quot; <tspan
-   style="fill:#000000"
-   id="tspan4798">AUTOCONNECT_LINK(BAR_32)</tspan> &quot;&lt;/p&gt;&quot;</tspan><tspan
-             x="-41.95536"
-             y="108.51587"
-             style="font-size:3.17499995px;fill:#003399;stroke-width:0.26458332"
-             id="tspan4576">  &quot;BUILT-IN LED&lt;br&gt;&quot;</tspan><tspan
-             x="-41.95536"
-             y="113.36657"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4578"><tspan
-   style="fill:#003399"
-   id="tspan4796">  &quot;GPIO(&quot;</tspan>);</tspan><tspan
-             x="-41.95536"
-             y="118.21726"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4580">  page += <tspan
-   style="fill:#3366cc"
-   id="tspan4800">String</tspan>(BUILTIN_LED);</tspan><tspan
-             x="-41.95536"
-             y="123.06796"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4582">  page += <tspan
-   style="fill:#3366cc"
-   id="tspan4802">String</tspan>(F(<tspan
-   style="fill:#003399"
-   id="tspan4804">&quot;) : &lt;span style=\&quot;font-weight:bold;color:&quot;</tspan>));</tspan><tspan
-             x="-41.95536"
-             y="127.91865"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4584">  page += <tspan
-   style="fill:#ff6600"
-   id="tspan4806">digitalRead</tspan>(BUILTIN_LED) ? <tspan
-   style="fill:#3366cc"
-   id="tspan4808">String</tspan>(<tspan
-   style="fill:#003399"
-   id="tspan4812">&quot;Tomato\&quot;&gt;HIGH&quot;</tspan>) : <tspan
-   style="fill:#3366cc"
-   id="tspan4814">String</tspan>(<tspan
-   style="fill:#003399"
-   id="tspan4816">&quot;SlateBlue\&quot;&gt;LOW&quot;</tspan>);</tspan><tspan
-             x="-41.95536"
-             y="132.76935"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4586">  page += <tspan
-   style="fill:#ff6600"
-   id="tspan4818">String</tspan>(F(<tspan
-   style="fill:#003399"
-   id="tspan4820">&quot;&lt;/span&gt;&quot;</tspan>));</tspan><tspan
-             x="-41.95536"
-             y="137.62004"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4588">  page += <tspan
-   style="fill:#ff6600"
-   id="tspan4822">String</tspan>(F(<tspan
-   style="fill:#003399"
-   id="tspan4826">&quot;&lt;p&gt;&lt;a class=\&quot;button\&quot; href=\&quot;/io?v=low\&quot;&gt;low&lt;/a&gt;</tspan></tspan><tspan
-             x="-41.95536"
-             y="142.47073"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4968"><tspan
-   style="fill:#003399"
-   id="tspan4970">                                 &lt;a class=\&quot;button\&quot; href=\&quot;/io?v=high\&quot;&gt;high&lt;/a&gt;&lt;/p&gt;&quot;</tspan>));</tspan><tspan
-             x="-41.95536"
-             y="147.32143"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4590">  page += <tspan
-   style="fill:#ff6600"
-   id="tspan4824">String</tspan>(F(<tspan
-   style="fill:#003399"
-   id="tspan4828">&quot;&lt;/body&gt;&lt;/html&gt;&quot;</tspan>));</tspan><tspan
-             x="-41.95536"
-             y="152.17212"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4592">  portal.<tspan
-   style="fill:#ff6600"
-   id="tspan5104">host</tspan>().<tspan
-   style="fill:#ff6600"
-   id="tspan4832">send</tspan>(200, <tspan
-   style="fill:#003399"
-   id="tspan4834">&quot;text/html&quot;</tspan>, page);</tspan><tspan
-             x="-41.95536"
-             y="157.02281"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4594">}</tspan><tspan
-             x="-41.95536"
-             y="161.87352"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4596" /><tspan
-             x="-41.95536"
-             y="166.72421"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4598"><tspan
-   style="fill:#3366cc"
-   id="tspan4836">void</tspan> handleGPIO() {</tspan><tspan
-             x="-41.95536"
-             y="171.57491"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan5040"><tspan
-   style="fill:#ff6600"
-   id="tspan5088">ESP8266WebServer</tspan>&amp; server = portal.<tspan
-   style="fill:#ff6600"
-   id="tspan5084">host</tspan>();</tspan><tspan
-             x="-41.95536"
-             y="176.4256"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4600"><tspan
-   style="fill:#808080"
-   id="tspan4838">if</tspan> (server.<tspan
-   style="fill:#ff6600"
-   id="tspan4842">arg</tspan>(<tspan
-   style="fill:#003399"
-   id="tspan4844">&quot;v&quot;</tspan>) == <tspan
-   style="fill:#003399"
-   id="tspan4846">&quot;low&quot;</tspan>)</tspan><tspan
-             x="-41.95536"
-             y="181.27629"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4602"><tspan
-   style="fill:#ff6600"
-   id="tspan4850">digitalWrite</tspan>(BUILTIN_LED, <tspan
-   style="fill:#ff6600"
-   id="tspan4852">LOW</tspan>);</tspan><tspan
-             x="-41.95536"
-             y="186.12698"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4604"><tspan
-   style="fill:#808080"
-   id="tspan4860">else</tspan><tspan
-   style="fill:#808080"
-   id="tspan4862">if</tspan> (server.<tspan
-   style="fill:#ff6600"
-   id="tspan4858">arg</tspan>(<tspan
-   style="fill:#003399"
-   id="tspan4856">&quot;v&quot;</tspan>) == <tspan
-   style="fill:#003399"
-   id="tspan4854">&quot;high&quot;</tspan>)</tspan><tspan
-             x="-41.95536"
-             y="190.97768"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4606"><tspan
-   style="fill:#ff6600"
-   id="tspan4864">digitalWrite</tspan>(BUILTIN_LED, <tspan
-   style="fill:#ff6600"
-   id="tspan4866">HIGH</tspan>);</tspan><tspan
-             x="-41.95536"
-             y="195.82837"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4608">  sendRedirect(&quot;/&quot;);</tspan><tspan
-             x="-41.95536"
-             y="200.67906"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4610">}</tspan><tspan
-             x="-41.95536"
-             y="205.52977"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4612" /><tspan
-             x="-41.95536"
-             y="210.38046"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4614"><tspan
-   style="fill:#3366cc"
-   id="tspan4868">void</tspan> sendRedirect(<tspan
-   style="fill:#3366cc"
-   id="tspan4870">String</tspan> uri) {</tspan><tspan
-             x="-41.95536"
-             y="215.23116"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan5042"><tspan
-   style="fill:#ff6600"
-   id="tspan5090">ESP8266WebServer</tspan>&amp; server = portal.<tspan
-   style="fill:#ff6600"
-   id="tspan5086">host</tspan>();</tspan><tspan
-             x="-41.95536"
-             y="220.08185"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4616">  server.<tspan
-   style="fill:#ff6600"
-   id="tspan4872">sendHeader</tspan>(<tspan
-   style="fill:#003399"
-   id="tspan4874">&quot;Location&quot;</tspan>, uri, <tspan
-   style="fill:#3366cc"
-   id="tspan4876">true</tspan>);</tspan><tspan
-             x="-41.95536"
-             y="224.93254"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4618">  server.<tspan
-   style="fill:#ff6600"
-   id="tspan4880">send</tspan>(302, &quot;text/plain&quot;, <tspan
-   style="fill:#003399"
-   id="tspan4878">&quot;&quot;</tspan>);</tspan><tspan
-             x="-41.95536"
-             y="229.78323"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4620">  server.<tspan
-   style="fill:#ff6600"
-   id="tspan4884">client</tspan>().<tspan
-   style="fill:#ff6600"
-   id="tspan4886">stop</tspan>();</tspan><tspan
-             x="-41.95536"
-             y="234.63393"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4622">}</tspan><tspan
-             x="-41.95536"
-             y="239.48462"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4624" /><tspan
-             x="-41.95536"
-             y="244.33533"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4626"><tspan
-   style="fill:#3366cc"
-   id="tspan4890">void</tspan> setup() {</tspan><tspan
-             x="-41.95536"
-             y="249.18602"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4628"><tspan
-   style="fill:#ff6600"
-   id="tspan4888">delay</tspan>(1000);</tspan><tspan
-             x="-41.95536"
-             y="254.03671"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4630"><tspan
-   style="fill:#ff6600"
-   id="tspan4892">Serial</tspan>.<tspan
-   style="fill:#ff6600"
-   id="tspan4894">begin</tspan>(115200);</tspan><tspan
-             x="-41.95536"
-             y="258.88739"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4632"><tspan
-   style="fill:#ff6600"
-   id="tspan4898">Serial</tspan>.<tspan
-   style="fill:#ff6600"
-   id="tspan4896">println</tspan>();</tspan><tspan
-             x="-41.95536"
-             y="263.7381"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4634"><tspan
-   style="fill:#ff6600"
-   id="tspan4900">pinMode</tspan>(BUILTIN_LED, <tspan
-   style="fill:#ff6600"
-   id="tspan4902">OUTPUT</tspan>);</tspan><tspan
-             x="-41.95536"
-             y="268.58881"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4636" /><tspan
-             x="-41.95536"
-             y="273.43948"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4638"><tspan
-               style="fill:#808080"
-               id="tspan4904">// Put the home location of the web site.</tspan></tspan><tspan
-             x="-41.95536"
-             y="278.29019"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4640"><tspan
-               style="fill:#808080"
-               id="tspan4906">// But in usually, setting the home uri is not needed cause default location is &quot;/&quot;.</tspan></tspan><tspan
-             x="-41.95536"
-             y="283.14087"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4642"><tspan
-               style="fill:#808080"
-               id="tspan4908">//portal.home(&quot;/&quot;);</tspan></tspan><tspan
-             x="-41.95536"
-             y="287.99158"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4644" /><tspan
-             x="-41.95536"
-             y="292.84225"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4652">  // Starts user web site included the AutoConnect portal.</tspan><tspan
-             x="-41.95536"
-             y="297.69296"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4654"><tspan
-   style="fill:#808080"
-   id="tspan4934">if</tspan> (portal.<tspan
-   style="fill:#ff6600"
-   id="tspan4918">begin</tspan>()) {</tspan><tspan
-             x="-41.95536"
-             y="302.54364"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4656"><tspan
-   style="fill:#ff6600"
-   id="tspan5092">ESP8266WebServer</tspan>&amp; server = portal.<tspan
-   style="fill:#ff6600"
-   id="tspan5094">host</tspan>();</tspan><tspan
-             x="-41.95536"
-             y="307.39435"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan5044">    server.<tspan
-   style="fill:#ff6600"
-   id="tspan5096">on</tspan>(<tspan
-   style="fill:#003399"
-   id="tspan5100">&quot;/&quot;</tspan>, handleRoot);</tspan><tspan
-             x="-41.95536"
-             y="312.24506"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan5052">    server.<tspan
-   style="fill:#ff6600"
-   id="tspan5098">on</tspan>(<tspan
-   style="fill:#003399"
-   id="tspan5102">&quot;/io&quot;</tspan>, handleGPIO);</tspan><tspan
-             x="-41.95536"
-             y="317.09573"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan5060"><tspan
-   style="fill:#ff6600"
-   id="tspan4920">Serial</tspan>.<tspan
-   style="fill:#ff6600"
-   id="tspan4922">println</tspan>(<tspan
-   style="fill:#003399"
-   id="tspan4924">&quot;Started, IP:&quot;</tspan> + <tspan
-   style="fill:#ff6600"
-   id="tspan4926">WiFi</tspan>.<tspan
-   style="fill:#ff6600"
-   id="tspan4928">localIP</tspan>().<tspan
-   style="fill:#ff6600"
-   id="tspan4930">toString</tspan>());</tspan><tspan
-             x="-41.95536"
-             y="321.94644"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4658">  }</tspan><tspan
-             x="-41.95536"
-             y="326.79712"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4660"><tspan
-   style="fill:#808080"
-   id="tspan4936">else</tspan> {</tspan><tspan
-             x="-41.95536"
-             y="331.64783"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4662"><tspan
-   style="fill:#ff6600"
-   id="tspan4938">Serial</tspan>.<tspan
-   style="fill:#ff6600"
-   id="tspan4940">println</tspan>(<tspan
-   style="fill:#003399"
-   id="tspan4942">&quot;Connection failed.&quot;</tspan>);</tspan><tspan
-             x="-41.95536"
-             y="336.4985"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4664"><tspan
-   style="fill:#808080"
-   id="tspan4944">while</tspan> (<tspan
-   style="fill:#3366cc"
-   id="tspan4946">true</tspan>) { <tspan
-   style="fill:#ff6600"
-   id="tspan4948">yield</tspan>(); }</tspan><tspan
-             x="-41.95536"
-             y="341.34921"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4666">  }</tspan><tspan
-             x="-41.95536"
-             y="346.19989"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4668">}</tspan><tspan
-             x="-41.95536"
-             y="351.0506"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4670" /><tspan
-             x="-41.95536"
-             y="355.90131"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4672"><tspan
-   style="fill:#3366cc"
-   id="tspan4950">void</tspan> loop() {</tspan><tspan
-             x="-41.95536"
-             y="360.75198"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4676">  portal.<tspan
-   style="fill:#ff6600"
-   id="tspan4954">handleClient</tspan>();   // Need handleClient only.</tspan><tspan
-             x="-41.95536"
-             y="365.60269"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4678"><tspan
-   style="fill:#808080"
-   id="tspan4966">if</tspan> (<tspan
-   style="fill:#ff6600"
-   id="tspan4956">WiFi</tspan>.<tspan
-   style="fill:#ff6600"
-   id="tspan4958">status</tspan>() == <tspan
-   style="fill:#3366cc"
-   id="tspan4960">WL_IDLE_STATUS</tspan>) {</tspan><tspan
-             x="-41.95536"
-             y="370.45337"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4680">    ESP.<tspan
-   style="fill:#ff6600"
-   id="tspan4962">reset</tspan>();</tspan><tspan
-             x="-41.95536"
-             y="375.30408"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4682"><tspan
-   style="fill:#ff6600"
-   id="tspan4964">delay</tspan>(1000);</tspan><tspan
-             x="-41.95536"
-             y="380.15475"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4684">  }</tspan><tspan
-             x="-41.95536"
-             y="385.00546"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4686">}</tspan><tspan
-             x="-41.95536"
-             y="389.85617"
-             style="font-size:3.17499995px;stroke-width:0.26458332"
-             id="tspan4688" /></text>
-      </g>
-      <g
-         id="layer3"
-         style="display:inline">
-        <path
-           style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.2659663, 2.2659663;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill"
-           id="path4984-8-8"
-           d="m 119.94348,365.5661 -8.69884,-5.02228 8.69884,-5.02227 z" />
-        <text
-           xml:space="preserve"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-           x="115.3639"
-           y="27.289909"
-           id="text4702"><tspan
-             x="115.3639"
-             y="27.289909"
-             style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-             id="tspan4972">1. Declare AutoConnect only</tspan></text>
-        <text
-           xml:space="preserve"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-           x="115.7594"
-           y="373.71988"
-           id="text4702-1"><tspan
-             id="tspan4700-2"
-             x="115.7594"
-             y="373.71988"
-             style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332">4. Register request handlers</tspan><tspan
-             x="115.7594"
-             y="379.89349"
-             style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-             id="tspan4974">    to ESP8266WebServer</tspan></text>
-        <text
-           xml:space="preserve"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-           x="122.43944"
-           y="358.74286"
-           id="text4702-1-3"><tspan
-             id="tspan4700-2-3"
-             x="122.43944"
-             y="358.74286"
-             style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332">3. Start AutoConnect,</tspan><tspan
-             x="122.43944"
-             y="364.91647"
-             style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-             id="tspan4976">    no need server.begin()</tspan></text>
-        <text
-           xml:space="preserve"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-           x="127.32045"
-           y="422.84482"
-           id="text4702-1-3-9-5"><tspan
-             id="tspan4700-2-3-5-1"
-             x="127.32045"
-             y="422.84482"
-             style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332">5. Perform handleClient</tspan><tspan
-             x="127.32045"
-             y="429.01843"
-             style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-             id="tspan4980">    for AutoConnect</tspan></text>
-        <path
-           style="opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596625, 2.26596625;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill"
-           id="path4984"
-           d="m 113.53278,30.932772 -8.69884,-5.022277 8.69884,-5.022275 z" />
-        <path
-           style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596627, 2.26596627;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill"
-           id="path4984-8"
-           d="m 113.91916,379.99377 -8.69884,-5.02227 8.69884,-5.02228 z" />
-        <path
-           style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596632, 2.26596632;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill"
-           id="path4984-8-8-6"
-           d="m 124.96248,429.10303 -8.69884,-5.02228 8.69884,-5.02228 z" />
-        <text
-           xml:space="preserve"
-           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888855px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-           x="108.45959"
-           y="235.34866"
-           id="text4702-2"><tspan
-             x="108.45959"
-             y="235.34866"
-             style="fill:#558c3d;fill-opacity:1;stroke-width:0.26458332"
-             id="tspan4972-5">2. Refer to ESP8266WebServer</tspan></text>
-        <path
-           style="display:inline;opacity:1;vector-effect:none;fill:#558c3d;fill-opacity:0.71119133;stroke:none;stroke-width:2.26596642;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:2.26596627, 2.26596627;stroke-dashoffset:0;stroke-opacity:0.74117647;paint-order:stroke markers fill"
-           id="path4984-6"
-           d="m 105.91244,238.99179 -8.698832,-5.02228 8.698842,-5.02227 z" />
-      </g>
-    </g>
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/mkdocs/images/hello_world.png b/lib/AutoConnect-master/mkdocs/images/hello_world.png
deleted file mode 100644
index 8fd379b42fc2a7957004eadd7f21eeb647955327..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/hello_world.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/include.png b/lib/AutoConnect-master/mkdocs/images/include.png
deleted file mode 100644
index 183b5a5370d2db2d1b2949965409533fd1a03f37..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/include.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/ins_lib.png b/lib/AutoConnect-master/mkdocs/images/ins_lib.png
deleted file mode 100644
index 5e1bad53b0bcd1656f476b9db61e1b2d5ff7c043..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/ins_lib.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/lm.png b/lib/AutoConnect-master/mkdocs/images/lm.png
deleted file mode 100644
index 80980d99a46e039249ecf8b581d68498c2651895..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/lm.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/logic_sequence.svg b/lib/AutoConnect-master/mkdocs/images/logic_sequence.svg
deleted file mode 100644
index 57c7804cbf176cd52733867721a2dbd8a8baabc6..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/images/logic_sequence.svg
+++ /dev/null
@@ -1,504 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   id="svg8"
-   version="1.1"
-   viewBox="0 0 150.228 144.32257"
-   height="144.32257mm"
-   width="150.228mm">
-  <defs
-     id="defs2" />
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     transform="translate(-28.675957,-9.6488822)"
-     style="display:inline"
-     id="layer2">
-    <path
-       id="path897"
-       style="fill:none;stroke:#000000;stroke-width:0.0264583px"
-       d="M 0,0 V 296.99999 M 5.2916665,0 V 296.99999 M 10.583333,0 V 296.99999 M 15.875,0 V 296.99999 M 21.166666,0 V 296.99999 M 26.458333,0 V 296.99999 M 31.749999,0 V 296.99999 M 37.041666,0 V 296.99999 M 42.333332,0 V 296.99999 M 47.624999,0 V 296.99999 M 52.916665,0 V 296.99999 M 58.208332,0 V 296.99999 M 63.499999,0 V 296.99999 M 68.791665,0 V 296.99999 M 74.083332,0 V 296.99999 M 79.374998,0 V 296.99999 M 84.666665,0 V 296.99999 M 89.958331,0 V 296.99999 M 95.249998,0 V 296.99999 M 100.54166,0 V 296.99999 M 105.83333,0 V 296.99999 M 111.125,0 V 296.99999 M 116.41666,0 V 296.99999 M 121.70833,0 V 296.99999 M 127,0 V 296.99999 M 132.29166,0 V 296.99999 M 137.58333,0 V 296.99999 M 142.875,0 V 296.99999 M 148.16666,0 V 296.99999 M 153.45833,0 V 296.99999 M 158.75,0 V 296.99999 M 164.04166,0 V 296.99999 M 169.33333,0 V 296.99999 M 174.625,0 V 296.99999 M 179.91666,0 V 296.99999 M 185.20833,0 V 296.99999 M 190.5,0 V 296.99999 M 195.79166,0 V 296.99999 M 201.08333,0 V 296.99999 M 206.375,0 V 296.99999 M 0,0 H 210 M 0,5.2916665 H 210 M 0,10.583333 H 210 M 0,15.875 H 210 M 0,21.166666 H 210 M 0,26.458333 H 210 M 0,31.749999 H 210 M 0,37.041666 H 210 M 0,42.333332 H 210 M 0,47.624999 H 210 M 0,52.916665 H 210 M 0,58.208332 H 210 M 0,63.499999 H 210 M 0,68.791665 H 210 M 0,74.083332 H 210 M 0,79.374998 H 210 M 0,84.666665 H 210 M 0,89.958331 H 210 M 0,95.249998 H 210 M 0,100.54166 H 210 M 0,105.83333 H 210 M 0,111.125 H 210 M 0,116.41666 H 210 M 0,121.70833 H 210 M 0,127 H 210 M 0,132.29166 H 210 M 0,137.58333 H 210 M 0,142.875 H 210 M 0,148.16666 H 210 M 0,153.45833 H 210 M 0,158.75 H 210 M 0,164.04166 H 210 M 0,169.33333 H 210 M 0,174.625 H 210 M 0,179.91666 H 210 M 0,185.20833 H 210 M 0,190.5 H 210 M 0,195.79166 H 210 M 0,201.08333 H 210 M 0,206.375 H 210 M 0,211.66666 H 210 M 0,216.95833 H 210 M 0,222.24999 H 210 M 0,227.54166 H 210 M 0,232.83333 H 210 M 0,238.12499 H 210 M 0,243.41666 H 210 M 0,248.70833 H 210 M 0,253.99999 H 210 M 0,259.29166 H 210 M 0,264.58333 H 210 M 0,269.87499 H 210 M 0,275.16666 H 210 M 0,280.45833 H 210 M 0,285.74999 H 210 M 0,291.04166 H 210 M 0,296.33333 h 210" />
-  </g>
-  <g
-     transform="translate(-28.675957,-9.6488822)"
-     style="display:inline"
-     id="layer1">
-    <text
-       id="text817"
-       y="17.329166"
-       x="33.675957"
-       style="font-style:normal;font-weight:normal;font-size:3.52777767px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       xml:space="preserve"><tspan
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="17.329166"
-         x="33.675957"
-         id="tspan815"><tspan
-   id="tspan899"
-   style="fill:#669900">#include</tspan> &lt;<tspan
-   id="tspan909"
-   style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic'">ESP8266WiFi.h</tspan>&gt;</tspan><tspan
-         id="tspan819"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="21.738888"
-         x="33.675957"><tspan
-   id="tspan905"
-   style="fill:#669900">#include</tspan> &lt;<tspan
-   id="tspan915"
-   style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic'">ESP8266WebServer.h</tspan>&gt;</tspan><tspan
-         id="tspan821"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="26.148611"
-         x="33.675957"><tspan
-   id="tspan907"
-   style="fill:#669900">#include</tspan> &lt;<tspan
-   id="tspan921"
-   style="font-style:italic;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:sans-serif;-inkscape-font-specification:'sans-serif Italic'">AutoConnect.h</tspan>&gt;</tspan><tspan
-         id="tspan823"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="30.558332"
-         x="33.675957" /><tspan
-         id="tspan825"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="34.968056"
-         x="33.675957"><tspan
-   id="tspan923"
-   style="fill:#ff6600">ESP8266WebServer</tspan> Server;</tspan><tspan
-         id="tspan827"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="39.377777"
-         x="33.675957"><tspan
-   id="tspan927"
-   style="fill:#ff6600">AutoConnect</tspan>           Portal(Server);</tspan><tspan
-         id="tspan829"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="43.787498"
-         x="33.675957" /><tspan
-         id="tspan831"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="48.19722"
-         x="33.675957"><tspan
-   id="tspan929"
-   style="fill:#3366cc">void</tspan> rootPage() {</tspan><tspan
-         id="tspan833"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="52.606941"
-         x="33.675957">  <tspan
-   id="tspan981"
-   style="fill:#3366cc">char</tspan> content[] = &quot;Hello, world&quot;;</tspan><tspan
-         id="tspan835"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="57.016666"
-         x="33.675957">  Server.<tspan
-   id="tspan955"
-   style="fill:#ff6600">send</tspan>(200, &quot;text/plain&quot;, content);</tspan><tspan
-         id="tspan837"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="61.426388"
-         x="33.675957">}</tspan><tspan
-         id="tspan839"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="65.836113"
-         x="33.675957" /><tspan
-         id="tspan841"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="70.245834"
-         x="33.675957"><tspan
-   id="tspan937"
-   style="fill:#3366cc">void</tspan> <tspan
-   id="tspan935"
-   style="fill:#808080">setup</tspan>() {</tspan><tspan
-         id="tspan843"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="74.655556"
-         x="33.675957">  <tspan
-   id="tspan949"
-   style="fill:#ff6600">delay</tspan>(1000);</tspan><tspan
-         id="tspan849"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="79.065277"
-         x="33.675957" /><tspan
-         id="tspan851"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="83.474998"
-         x="33.675957">  Server.<tspan
-   id="tspan947"
-   style="fill:#ff6600">on</tspan>(<tspan
-   id="tspan963"
-   style="fill:#003399">&quot;/&quot;</tspan>, rootPage);</tspan><tspan
-         id="tspan853"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="87.88472"
-         x="33.675957">  </tspan><tspan
-         id="tspan4825"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="92.294441"
-         x="33.675957"><tspan
-   id="tspan4827"
-   style="fill:#3366cc">  boolean</tspan> r = Portal.<tspan
-   id="tspan961"
-   style="fill:#ff6600">begin</tspan>();</tspan><tspan
-         id="tspan971"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="96.704163"
-         x="33.675957">  </tspan><tspan
-         id="tspan4830"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="101.11388"
-         x="33.675957"><tspan
-   id="tspan4832"
-   style="fill:#404040">  if</tspan> (!r) {</tspan><tspan
-         id="tspan855"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="105.52361"
-         x="33.675957">    <tspan
-   id="tspan945"
-   style="fill:#ff6600">delay</tspan>(1000);<tspan
-   id="tspan969"
-   style="fill:#003399"></tspan></tspan><tspan
-         id="tspan5494"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="109.93333"
-         x="33.675957"><tspan
-   id="tspan5496"
-   style="fill:#003399">    </tspan>ESP.reset();</tspan><tspan
-         id="tspan857"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="114.34306"
-         x="33.675957">  }</tspan><tspan
-         id="tspan859"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="118.75278"
-         x="33.675957">}</tspan><tspan
-         id="tspan861"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="123.1625"
-         x="33.675957" /><tspan
-         id="tspan863"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="127.57222"
-         x="33.675957"><tspan
-   id="tspan939"
-   style="fill:#3366cc">void</tspan> loop() {</tspan><tspan
-         id="tspan865"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="131.98193"
-         x="33.675957">    Server.<tspan
-   id="tspan941"
-   style="fill:#ff6600">handleClient</tspan>();</tspan><tspan
-         id="tspan867"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="136.39166"
-         x="33.675957">}</tspan><tspan
-         id="tspan869"
-         style="font-size:3.52777767px;stroke-width:0.26458332"
-         y="140.80139"
-         x="33.675957" /></text>
-  </g>
-  <g
-     transform="translate(-28.675957,-9.6488822)"
-     id="layer3">
-    <g
-       transform="translate(7.0295931,1.4967093)"
-       id="g5584">
-      <g
-         id="g5577">
-        <rect
-           y="120.4157"
-           x="96.916679"
-           height="26.788187"
-           width="69.782677"
-           id="rect987-6-7-1-5-4"
-           style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.34999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-        <rect
-           y="120.4157"
-           x="96.90123"
-           height="26.884048"
-           width="2.7517393"
-           id="rect985-1-0-3-6-7"
-           style="opacity:1;fill:#c8aabd;fill-opacity:1;stroke:#c8aabd;stroke-width:0.34999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-      </g>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="102.72446"
-         y="126.50675"
-         id="text5481-6"><tspan
-           id="tspan5479-9"
-           x="102.72446"
-           y="126.50675"
-           style="stroke-width:0.26458332">loop()</tspan></text>
-    </g>
-    <g
-       transform="translate(7.0295931,1.4967093)"
-       id="g5536">
-      <g
-         id="g5529">
-        <rect
-           y="63.351486"
-           x="96.967033"
-           height="52.881226"
-           width="69.681969"
-           id="rect987-6-7-1-5"
-           style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.34999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-        <rect
-           y="63.335812"
-           x="96.949257"
-           height="52.912579"
-           width="2.6556907"
-           id="rect985-1-0-3-6"
-           style="opacity:1;fill:#c8aabd;fill-opacity:1;stroke:#c8aabd;stroke-width:0.34999999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-      </g>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="102.72446"
-         y="69.392189"
-         id="text5481"><tspan
-           id="tspan5479"
-           x="102.72446"
-           y="69.392189"
-           style="stroke-width:0.26458332">setup()</tspan></text>
-    </g>
-    <g
-       transform="translate(-30.012096,13.667544)"
-       id="g5450">
-      <g
-         id="g5117"
-         transform="translate(33.994579,-19.143525)">
-        <rect
-           y="82.389336"
-           x="104.77654"
-           height="10.649512"
-           width="61.649513"
-           id="rect987-6-9"
-           style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.35048801;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-        <rect
-           y="82.389336"
-           x="104.77654"
-           height="10.655192"
-           width="2.6608834"
-           id="rect985-1-9"
-           style="opacity:1;fill:#83bee2;fill-opacity:1;stroke:#83bee2;stroke-width:0.34480736;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-      </g>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="143.86685"
-         y="70.421936"
-         id="text995-0-8"><tspan
-           id="tspan993-7-0"
-           x="143.86685"
-           y="70.421936"
-           style="font-size:4.93888903px;stroke-width:0.26458332">Set URL handler</tspan></text>
-    </g>
-    <g
-       transform="translate(-30.012096,12.080043)"
-       id="g5443">
-      <g
-         transform="translate(33.994579,-8.488335)"
-         id="g5117-1">
-        <rect
-           y="82.389336"
-           x="104.77654"
-           height="10.649512"
-           width="61.649513"
-           id="rect987-6-9-8"
-           style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.35048801;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-        <rect
-           y="82.389336"
-           x="104.77654"
-           height="10.655192"
-           width="2.6608834"
-           id="rect985-1-9-7"
-           style="opacity:1;fill:#83bee2;fill-opacity:1;stroke:#83bee2;stroke-width:0.34480736;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-      </g>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="143.70769"
-         y="80.545097"
-         id="text995-0-8-6"><tspan
-           id="tspan993-7-0-9"
-           x="143.70769"
-           y="80.545097"
-           style="font-size:4.93888903px;stroke-width:0.26458332">Begin AutoConnect</tspan></text>
-    </g>
-    <g
-       transform="translate(-30.012096,12.080043)"
-       id="g5436">
-      <g
-         id="g5182"
-         transform="translate(2.8998751,-3.571875)">
-        <rect
-           y="92.892113"
-           x="135.87125"
-           height="10.649512"
-           width="61.649513"
-           id="rect987-6-9-9"
-           style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.35048801;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-        <rect
-           y="92.892113"
-           x="135.87125"
-           height="10.655192"
-           width="2.6608834"
-           id="rect985-1-9-5"
-           style="opacity:1;fill:#83bee2;fill-opacity:1;stroke:#83bee2;stroke-width:0.34480736;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-      </g>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="143.76074"
-         y="96.497292"
-         id="text995-0-6"><tspan
-           id="tspan993-7-8"
-           x="143.76074"
-           y="96.497292"
-           style="font-size:4.93888903px;stroke-width:0.26458332">Check connection</tspan></text>
-    </g>
-    <g
-       transform="translate(7.0295931,2.5550426)"
-       id="g5525">
-      <g
-         id="g5518">
-        <rect
-           y="129.02588"
-           x="101.72944"
-           height="10.649512"
-           width="61.649513"
-           id="rect987-6-9-9-1"
-           style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.35048801;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-        <rect
-           y="129.02588"
-           x="101.72944"
-           height="10.655192"
-           width="2.6608834"
-           id="rect985-1-9-5-8"
-           style="opacity:1;fill:#83bee2;fill-opacity:1;stroke:#83bee2;stroke-width:0.34480736;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-      </g>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="106.666"
-         y="135.73148"
-         id="text995-0-6-6"><tspan
-           id="tspan993-7-8-4"
-           x="106.666"
-           y="135.73148"
-           style="font-size:4.93888903px;stroke-width:0.26458332">Do handleClent()</tspan></text>
-    </g>
-    <g
-       transform="translate(-30.012096,1.4967093)"
-       id="g5472">
-      <g
-         id="g5182-0-5-1-3"
-         transform="translate(2.899875,-78.485552)">
-        <rect
-           y="92.892113"
-           x="135.87125"
-           height="10.649512"
-           width="61.649513"
-           id="rect987-6-9-9-1-3-5-2"
-           style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.35048801;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-        <rect
-           y="92.892113"
-           x="135.87125"
-           height="10.655192"
-           width="2.6608834"
-           id="rect985-1-9-5-8-8-0-9"
-           style="opacity:1;fill:#83bee2;fill-opacity:1;stroke:#83bee2;stroke-width:0.34480736;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-      </g>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="143.85994"
-         y="21.571556"
-         id="text995"><tspan
-           id="tspan993"
-           x="143.85994"
-           y="21.571556"
-           style="font-size:4.93888903px;stroke-width:0.26458332">Include directive</tspan></text>
-    </g>
-    <g
-       transform="translate(-30.012096,1.4967093)"
-       id="g5457">
-      <g
-         id="g5182-0-5"
-         transform="translate(2.899875,-45.969931)">
-        <rect
-           y="92.892113"
-           x="135.87125"
-           height="10.649512"
-           width="61.649513"
-           id="rect987-6-9-9-1-3"
-           style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.35048801;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-        <rect
-           y="92.892113"
-           x="135.87125"
-           height="10.655192"
-           width="2.6608834"
-           id="rect985-1-9-5-8-8"
-           style="opacity:1;fill:#83bee2;fill-opacity:1;stroke:#83bee2;stroke-width:0.34480736;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-      </g>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="143.76074"
-         y="54.099236"
-         id="text995-0"><tspan
-           id="tspan993-7"
-           x="143.76074"
-           y="54.099236"
-           style="font-size:4.93888903px;stroke-width:0.26458332">URL handler fucntion</tspan></text>
-    </g>
-    <g
-       transform="translate(-30.012096,1.4967093)"
-       id="g5465">
-      <g
-         id="g5182-0-5-1"
-         transform="translate(2.899875,-63.495841)">
-        <rect
-           y="92.892113"
-           x="135.87125"
-           height="10.649512"
-           width="61.649513"
-           id="rect987-6-9-9-1-3-5"
-           style="opacity:1;fill:#e4eeb3;fill-opacity:0.62745098;stroke:#7f7f7f;stroke-width:0.35048801;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-        <rect
-           y="92.892113"
-           x="135.87125"
-           height="10.655192"
-           width="2.6608834"
-           id="rect985-1-9-5-8-8-0"
-           style="opacity:1;fill:#83bee2;fill-opacity:1;stroke:#83bee2;stroke-width:0.34480736;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:markers stroke fill" />
-      </g>
-      <text
-         xml:space="preserve"
-         style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:3.79147911px;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         x="143.13184"
-         y="34.170132"
-         id="text995-9"><tspan
-           id="tspan4983"
-           x="143.13184"
-           y="34.170132"
-           style="font-size:3.88055563px;line-height:3.79147911px;stroke-width:0.26458332">Declare ESP8266WebServer</tspan><tspan
-           id="tspan4987"
-           x="143.13184"
-           y="38.164337"
-           style="font-size:3.88055563px;line-height:3.79147911px;stroke-width:0.26458332">         &amp; AutoConnect</tspan></text>
-    </g>
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/mkdocs/images/login.png b/lib/AutoConnect-master/mkdocs/images/login.png
deleted file mode 100644
index 59b1e3e568ec207f5adc55feb3fc43ee4f419857..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/login.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/login_ani.gif b/lib/AutoConnect-master/mkdocs/images/login_ani.gif
deleted file mode 100644
index b6295454a3cf7695d6c3852394ce0091b5b0c27d..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/login_ani.gif and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/menu.png b/lib/AutoConnect-master/mkdocs/images/menu.png
deleted file mode 100644
index 66f50f0cb3c9fa9bd70ae5a43cd83bc767bf33bf..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/menu.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/menu_home.png b/lib/AutoConnect-master/mkdocs/images/menu_home.png
deleted file mode 100644
index d83862a74a0176bc447c2275a58fd499c7729e7e..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/menu_home.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/menu_login.png b/lib/AutoConnect-master/mkdocs/images/menu_login.png
deleted file mode 100644
index 3a0352780fe0fb0479411770e019723fa5bd4b3a..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/menu_login.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/menu_login.svg b/lib/AutoConnect-master/mkdocs/images/menu_login.svg
deleted file mode 100644
index 05e8d84701b319a850c6f302a6a0a67ba13d6d2f..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/images/menu_login.svg
+++ /dev/null
@@ -1,667 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="61.254677mm"
-   height="90.411896mm"
-   viewBox="0 0 61.254677 90.411896"
-   version="1.1"
-   id="svg8"
-   inkscape:export-filename="C:\Users\hiero\Documents\Arduino\libraries\AutoConnect\docs\images\menu_home.png"
-   inkscape:export-xdpi="96"
-   inkscape:export-ydpi="96"
-   inkscape:version="0.92.1 r15371"
-   sodipodi:docname="menu_login.svg">
-  <defs
-     id="defs2" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.979899"
-     inkscape:cx="110.46944"
-     inkscape:cy="162.42716"
-     inkscape:document-units="mm"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     inkscape:window-width="1920"
-     inkscape:window-height="1001"
-     inkscape:window-x="-9"
-     inkscape:window-y="-9"
-     inkscape:window-maximized="1" />
-  <metadata
-     id="metadata5">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="レイヤー 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-15.436104,-38.574032)">
-    <image
-       y="38.574032"
-       x="15.436104"
-       id="image18"
-       xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAu4AAARTCAYAAAA0maZbAAAABmJLR0QA/wD/AP+gvaeTAAAACXBI
-WXMAAAsTAAALEwEAmpwYAAAgAElEQVR42uzdd1xV9R/H8TdTQAEBFUUBNyIO3Nvc2xxZqWmamtlw
-/XJWppm2tNJKc2SpDa20NDU1d+69d04ExYWAgjJ/fyBXLveyccHr+XjweNz7veeec+/3Dt7n3M/3
-eyyKlvKJFwAAAIAnmnVeZxd6AQAAAHjCWdIFAAAAAMEdAAAAAMEdAAAAILgDAAAAILgDAAAAILgD
-AAAABHcAAAAABHcAAAAABHcAAACA4A4AAACA4A4AAAAQ3AEAAAAQ3AEAAAAQ3AEAAACCOwAAAACC
-OwAAAACCOwAAAEBwBwAAAEBwBwAAAEBwBwAAAAjuAAAAAAjuAAAAAMEdAAAAAMEdAAAAAMEdAAAA
-ILgDAAAAILgDAAAAILgDAAAABHcAAAAABHcAAACA4A4AAACA4A4AAACA4A4AAAAQ3AEAAAAQ3AEA
-AAAQ3AEAAICnnDVdgKeBjY2NCri6ys3NVW4uLrp7757CwsMUGhqm4GvXFRsbSycBAPCItWvZXLKw
-0PJV/zzWx9G2ZXPFxsZq1dr1BPecKL+zs6pUqmDSfinosk6fOcsn8TGzsrJSjar+atqooZo2bKCi
-HkVSXDYiIlL7Dx3W3gMHtXz1Gl24GEAHAgDwkHVq31ZDXu8vC0sLOdjb67c/lz6Wx/FCpw5667W+
-io6Okb29vf5ctiLH9rlF2aq143Pjm23ga/30Vv++Ju3HTp5Sp+69+DQ+rsBuaaluz3fWwNf6Kb+z
-c4bvHxcXp3WbNmvG9/N05NhxOhQAgIegVbMmGjboTXkW9ZAkBV+7pm9mznnk4T0xtLsXLChJuhJ8
-VZOmfqPlq9fkyH7PlTXuFhYW6tSujdnbyvuUVZlSJflEPgbVq/jrz1/macyItzMV2iXJ0tJSzRs/
-o9/mfaf+vV+WhYUFHQsAQDazsrKSra2N4bp7wYJ667W+eqFTh8cW2iXJwtJCysH/+3NlqUzNalVT
-Lb3o0KaVJn89/al7XmNGvK1KFcobrt+4cVMDhg5/Kh575/ZtNfH9d2RpmT37klaWlnp74Ovyr+in
-QSPfVUxMDN+y4LMHANlkxeo1yuvgYBScE8O7pId+5N1caE886v+46+0J7g8hJKamXesW+mLaDMXF
-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
-aXu2TStN/XZWhtd14tRpXbt+w/QLytpaxb09VcTd3dDm61NWs6Z+rrbPd1fILd73AIDcw6Js1drx
-OeXJVPTz1SXt5QsAACAASURBVO/z5sjCwkKSdPb8BQ0Z9Z5Onv7P7PK2tjYaPKC/+vXqIUmKjYtT
-7wFvadfe/U/085w5dbIa1a8nSerx6uvave+A0e2FChZQMQ8PSdKFgADduBnCOx3ZqrxPWf35yzxJ
-UvDVa3IvVFCSFBh0WU2ffS5dv1z9MmeGqvlXliQNHT1Gf/+zNsVl8+XNq5bNGmv8OyNlff9XpJVr
-1mnIqPd4MQAAuUaOmlVm+KC3DKF9645d6tzjlRRDuyRFRUVr0lfTtGT5SkmSlaWlxo4a/sQ/T1sb
-W8Ply8FXTW6/eu269h08pH0HDxHa8VB0evbB0fbJX0/X1WvXJUlFPYoYwnh2un3njhYvXa6RY8cb
-2lo0bSxbWxteDAAAwf1p80y9uqpVvaokKS4uThMnf6nIyMh03fejz6coKipaklS6ZAkVK+qRdsdZ
-Wqq4l5cKuLlly+N3cLA37HRkRFRUVLZsPzPbfthc8ueXlWXab1EnJ8d0LZddMvtaJbKxsVFeB4en
-9rNmY2Oj9q1aSJLuRERozfqNWrnmwdHyDm1bPbRtr93wr2JjYw072iWLF+dbHACQa+SYGvehb75m
-uPzX36t15tz5dN83NCxMy1f/o+aNn5Ek1ape1ewsM1ZWVnrtlV5qWLe2ypUtbRhYd+NmiI6fOqVv
-Zs3R/oOHzW6jRZNG6v78c5KkiZO/1OkzZ/VMvbpq06KZ/Cv6ydvLU7fv3NGRYye0c+8+zfp+ntHM
-GfZ2dvpo7LuSpLKlSxnax44apnv3onT95k19NHmKJKlhvTrq2La1JGnBoj9MSmkSValcUZ3atZF/
-xQoqXbKEbtwM0eGjx/TDzwu0e98B1atVU00bNZAkTf12tkLDwgz37diutTq2bSNJ+m7eT9qyY2fK
-O0Zj35VH4cKKjo7Wq4P+Z3Tbpx+8L/dCBXUh4JLGfvSpHPPl0/DBb6pNi2ZyzJdP/QYO1eZtO4zu
-Y5cnj17p0U1VKlWUn285FXBzVWxsrE79d0Z//b1aCxb9oci7dzP9Xsrqa2VONf/K6ty+rcr7+qhs
-qZKytrZWaGiYNm7Zql9+/0MHDh8xuc8rPbrpmXp177+Of2r1uvUmy/iUKW00pmPQyHcUFhZuslzD
-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
-r1+azp06Fn6e8tG0Gq973U23ZNLkKfmfk75XOJpdXFycnt27pWf3bvnuMUdl/oIFuefv9+X6P9yW
-WbPLj7yXlJSkzfJhGcuWLcuoCkNoavTG1aqV1q3KT6b9aPq0lJWtflbPBQtWTAO5XtOVD3OZ9zXN
-mDJv3rw1Wq9jhXMAmjZpkp23367G69arW/dr2bcAAMJ9LbX3brumtF69JMsvWLSaYR5f9PksJD27
-d83OO2yfbbbsl8022Th165SPgW9Qv35O+M63s2W/zXPMST/KggULU1xcXLiK6KLFi1d7EaFVKSku
-qdFyzSrMyz55ytSVLlOTLwA1sabbWVZhnP648RPyWIUx7Kv9sjB/fuGL09e1bwEAhPta5OAKJzU+
-9tQzq72aZ3XefX9U3n1/VK676ZbUqVM7W26+efbcbZccvP++qVunTnr36J7vHXN0rhlycxYvXpzJ
-U6ambZvWqVe3btZr2rRwNL4mlixZkkmTp6R92zbZoGWLlBQXr/Z5b9iyZeH2h5Mmr5XvxQfjJxRu
-z5k7N5dffe2X3sZX3bcAAGujb/ysMp07dsiWfTcr/Pzgo4/XeN1+m22arfr1Ta/u3ao8tmjR4jw/
-9OWc95v/zU/POLNw/ya9exVufz7LS5J06dRxlb/rtxdfkKFPPpyXnnioEOATPpyYpHxoSOfVrF9c
-XJz+W/atEO5r55U/J06eUhj/3rF9+8KR8+qU1quXrfr1zVb9+qZzxw5f274FABDua5H112ua664c
-VIjD514cmqGvvlbj9c/95S9yx5DB+eNN16VOndrVLvfsCy8VjoY3qjCDyhtvvV24fdhB+1e7freN
-umS/vXZP0yZNMnvOnEydVj4G/533Vwzp+c4Rh67yufbfom9aNCs/Afe1N4et9uTR/5SlS5cWpsxs
-0rhR4QJX1fn+8cfkjiGDc8eQwem/Rd+vbd8CAAj3tUBRUVH22WO33H3bTYUTSj/97LMMvOSyL7Wd
-4e+8l6R8DPsO22xT7XK9e/YozJQy/L33Cvff9qe/FC5ytO+eu2fj3iu/oNHJ3zu+8OXiX8+/WLj/
-1jvvyvwFC5IkB31r3/Ts3nWl6zds0CADTj2l8PPgIX9Yq9+fqwavmEf+Jz84sXD+wRe1bdM6Jx57
-dJLyv3A89NiTX9u+TZIlFcbbN23c2P8tAADh/nXr3aN7rrzkwir/XXfFZfnnn2/Pq888lqsuvSjt
-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
-"
-       preserveAspectRatio="none"
-       height="90.411896"
-       width="61.254677" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-weight:normal;font-size:10.58333302px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#e51c20;fill-opacity:0.74117647;stroke:none;stroke-width:0.26458332"
-       x="38.257114"
-       y="92.108269"
-       id="text23"><tspan
-         sodipodi:role="line"
-         id="tspan21"
-         x="38.257114"
-         y="92.108269"
-         style="font-size:4.23333311px;fill:#e51c20;fill-opacity:0.74117647;stroke-width:0.26458332">Return to HOME</tspan></text>
-    <path
-       sodipodi:type="star"
-       style="fill:#f00308;fill-opacity:0.74117647;stroke-width:0.26458332"
-       id="path4500"
-       sodipodi:sides="3"
-       sodipodi:cx="36.14397"
-       sodipodi:cy="90.530502"
-       sodipodi:r1="2.1800292"
-       sodipodi:r2="1.0900145"
-       sodipodi:arg1="1.0471976"
-       sodipodi:arg2="2.0943951"
-       inkscape:flatsided="false"
-       inkscape:rounded="0"
-       inkscape:randomized="0"
-       d="m 37.233985,92.418463 -1.635022,-0.94398 -1.635022,-0.943981 1.635022,-0.94398 1.635022,-0.94398 0,1.88796 z"
-       inkscape:transform-center-x="0.54500767" />
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/mkdocs/images/menu_r.png b/lib/AutoConnect-master/mkdocs/images/menu_r.png
deleted file mode 100644
index be12585586af93a490a5365291a581539263bbca..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/menu_r.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/newap.png b/lib/AutoConnect-master/mkdocs/images/newap.png
deleted file mode 100644
index ebcb920e09fc47766a17dc8f406db61487e407ce..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/newap.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/open.png b/lib/AutoConnect-master/mkdocs/images/open.png
deleted file mode 100644
index ddc22f3effc801907d027f4ed439d9245c1d0d74..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/open.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/openssid.png b/lib/AutoConnect-master/mkdocs/images/openssid.png
deleted file mode 100644
index fcf0798c73dec4ec9cb4bdca70e118c6c1b1a1da..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/openssid.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/ov.gif b/lib/AutoConnect-master/mkdocs/images/ov.gif
deleted file mode 100644
index c458708392cfd0cce553c59d42f84846061b4c52..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/ov.gif and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/ov.png b/lib/AutoConnect-master/mkdocs/images/ov.png
deleted file mode 100644
index 803cf8e9e9467f4b757d507e351594322c8a57b5..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/ov.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/ov.svg b/lib/AutoConnect-master/mkdocs/images/ov.svg
deleted file mode 100644
index 697fde3eefc4b08e40976b17c1da2e835febb979..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/images/ov.svg
+++ /dev/null
@@ -1,439 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="210mm"
-   height="297mm"
-   viewBox="0 0 210 297"
-   version="1.1"
-   id="svg2563"
-   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
-   sodipodi:docname="ov.svg">
-  <defs
-     id="defs2557">
-    <marker
-       inkscape:isstock="true"
-       id="ExperimentalArrow"
-       refX="5.0"
-       refY="3.0"
-       orient="auto-start-reverse"
-       inkscape:stockid="ExperimentalArrow">
-      <path
-         style="fill:context-stroke;stroke:#000000;stroke-opacity:1"
-         d="m 10,3 -10,3 0,-6 z"
-         id="path1379" />
-    </marker>
-    <marker
-       inkscape:isstock="true"
-       style="overflow:visible;"
-       id="marker1596"
-       refX="0.0"
-       refY="0.0"
-       orient="auto"
-       inkscape:stockid="Arrow2Mend">
-      <path
-         transform="scale(0.6) rotate(180) translate(0,0)"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#d04067;stroke-opacity:1;fill:#d04067;fill-opacity:1"
-         id="path1594" />
-    </marker>
-    <marker
-       inkscape:isstock="true"
-       style="overflow:visible;"
-       id="Arrow2Mend"
-       refX="0.0"
-       refY="0.0"
-       orient="auto"
-       inkscape:stockid="Arrow2Mend">
-      <path
-         transform="scale(0.6) rotate(180) translate(0,0)"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#22801c;stroke-opacity:1;fill:#22801c;fill-opacity:1"
-         id="path1153" />
-    </marker>
-    <marker
-       inkscape:isstock="true"
-       style="overflow:visible"
-       id="marker1596-8"
-       refX="0"
-       refY="0"
-       orient="auto"
-       inkscape:stockid="Arrow2Mend">
-      <path
-         inkscape:connector-curvature="0"
-         transform="scale(-0.6)"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         style="fill:#227f1c;fill-opacity:1;fill-rule:evenodd;stroke:#227f1c;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         id="path1594-9" />
-    </marker>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.7"
-     inkscape:cx="406.57165"
-     inkscape:cy="597.77837"
-     inkscape:document-units="mm"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1440"
-     inkscape:window-height="810"
-     inkscape:window-x="1457"
-     inkscape:window-y="188"
-     inkscape:window-maximized="0" />
-  <metadata
-     id="metadata2560">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="レイヤー 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <g
-       id="g2849"
-       inkscape:export-xdpi="95.800003"
-       inkscape:export-ydpi="95.800003">
-      <g
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         transform="matrix(0.10931661,0,0,0.10931661,-5.8805339,145.80008)"
-         id="g831"
-         style="opacity:1">
-        <g
-           id="g819">
-          <path
-             inkscape:connector-curvature="0"
-             class="st0"
-             d="M 341.601,0 H 170.397 c -29.29,0 -53.12,23.828 -53.12,53.121 v 405.758 c 0,29.29 23.83,53.121 53.12,53.121 h 171.204 c 29.292,0 53.121,-23.832 53.121,-53.117 V 53.121 C 394.722,23.828 370.893,0 341.601,0 Z m -85.602,480.622 c -11.869,0 -21.526,-9.658 -21.526,-21.526 0,-11.871 9.656,-21.526 21.526,-21.526 11.869,0 21.526,9.655 21.526,21.526 0,11.868 -9.657,21.526 -21.526,21.526 z M 363.274,67.271 V 407.427 H 148.724 V 67.271 Z"
-             style="fill:#4b4b4b"
-             id="path817" />
-        </g>
-      </g>
-      <g
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         transform="matrix(0.09996652,0,0,0.09996652,79.519864,168.06218)"
-         id="g867"
-         style="opacity:1">
-        <g
-           transform="translate(-44.994231,-399.65464)"
-           id="g849">
-          <path
-             inkscape:connector-curvature="0"
-             class="st0"
-             d="m 512,317.461 c 0,-3.031 -2.465,-5.59 -5.594,-5.59 H 5.594 C 2.465,311.871 0,314.43 0,317.461 v 44.183 h 512 z"
-             style="fill:#4b4b4b"
-             id="path835" />
-          <path
-             inkscape:connector-curvature="0"
-             class="st0"
-             d="m 5.594,456.453 h 500.813 c 3.129,0 5.594,-2.562 5.594,-5.594 V 375.863 H 0 v 74.996 c 0,3.032 2.465,5.594 5.594,5.594 z M 304.55,390.5 l -10.8,45.379 h -12.516 l -2.738,-0.035 10.894,-45.378 h 12.418 z m 50.153,0 L 344,435.879 h -12.598 l -2.754,-0.035 10.894,-45.378 h 12.449 z m 50.25,0 -10.801,45.379 h -12.594 l -2.754,-0.035 10.89,-45.378 h 12.496 z"
-             style="fill:#4b4b4b"
-             id="path837" />
-          <path
-             inkscape:connector-curvature="0"
-             class="st0"
-             d="m 41.543,470.672 v 24.887 c 0,3.274 2.652,5.926 5.926,5.926 h 49.774 c 3.274,0 5.926,-2.652 5.926,-5.926 V 470.91 l 0.004,-0.078 h -0.004 v -0.161 H 41.543 Z"
-             style="fill:#4b4b4b"
-             id="path839" />
-          <path
-             inkscape:connector-curvature="0"
-             class="st0"
-             d="m 408.863,495.559 c 0,3.274 2.653,5.926 5.926,5.926 h 49.774 c 3.274,0 5.926,-2.652 5.926,-5.926 v -24.887 h -61.625 v 24.887 z"
-             style="fill:#4b4b4b"
-             id="path841" />
-          <path
-             inkscape:connector-curvature="0"
-             class="st0"
-             d="m 148.621,150.86 c 0,-6.454 -2.621,-12.301 -6.855,-16.535 -4.23,-4.234 -10.078,-6.852 -16.531,-6.852 -6.457,0 -12.301,2.618 -16.535,6.852 -4.234,4.234 -6.851,10.082 -6.851,16.535 0,6.453 2.617,12.301 6.851,16.531 2.45,2.453 5.481,4.266 8.817,5.442 l -3.801,116.05 -0.145,4.152 h 0.008 l -0.004,0.161 h 23.309 L 132.942,172.84 c 3.34,-1.179 6.375,-2.996 8.824,-5.449 4.234,-4.231 6.855,-10.079 6.855,-16.531 z"
-             style="fill:#4b4b4b"
-             id="path843" />
-          <path
-             inkscape:connector-curvature="0"
-             class="st0"
-             d="m 41.672,59.055 c 4.984,4.988 12.914,5.836 18.625,1.699 18.836,-13.645 41.344,-21.008 64.922,-21.008 23.622,0 46.145,7.34 64.965,20.946 5.707,4.133 13.622,3.285 18.602,-1.695 6.352,-6.348 5.563,-16.93 -1.722,-22.18 -23.722,-17.086 -52.09,-26.301 -81.844,-26.301 -29.758,0 -58.121,9.234 -81.835,26.359 -7.27,5.254 -8.059,15.821 -1.727,22.164 z"
-             style="fill:#227fb7;fill-opacity:1"
-             id="path845" />
-          <path
-             inkscape:connector-curvature="0"
-             class="st0"
-             d="m 155.969,105.468 c 0.047,0 0.09,0.016 0.137,0.016 0.05,0 0.094,-0.012 0.141,-0.012 2.738,-0.027 5.355,-0.797 7.687,-2.308 0.133,-0.086 0.254,-0.188 0.386,-0.278 0.688,-0.481 1.43,-0.855 2.039,-1.465 l 0.016,-0.02 c 6.859,-6.859 5.363,-18.59 -3.223,-23.105 -11.578,-6.09 -24.515,-9.317 -37.934,-9.317 -13.43,0 -26.378,3.23 -37.961,9.332 -8.578,4.512 -10.078,16.23 -3.23,23.094 l 0.055,0.059 c 0.598,0.598 1.324,0.961 1.996,1.434 0.156,0.113 0.305,0.23 0.465,0.332 2.324,1.503 4.93,2.266 7.652,2.293 0.051,0 0.102,0.015 0.149,0.015 0.05,0 0.102,-0.019 0.152,-0.019 2.309,-0.02 4.629,-0.402 6.786,-1.516 7.347,-3.785 15.503,-5.789 23.937,-5.789 8.465,0 16.641,1.988 23.985,5.754 2.151,1.102 4.464,1.481 6.765,1.5 z"
-             style="fill:#227fb7;fill-opacity:1"
-             id="path847" />
-        </g>
-      </g>
-      <g
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         style="fill:#227fb7;fill-opacity:1"
-         transform="matrix(0,-0.19438221,-0.19438221,0,10.442449,199.51533)"
-         id="g1039">
-        <path
-           id="path977"
-           style="fill:#227fb7;fill-opacity:1;stroke-width:0.26458332"
-           d="m 269.68852,-166.78045 c 1.32609,-2.29553 2.02803,-4.91226 2.02803,-7.56973 0,-2.65695 -0.70194,-5.27421 -2.02882,-7.57264 -0.66464,-1.14406 -1.47479,-2.19737 -2.40718,-3.13161 -0.9353,-0.93424 -1.98967,-1.7436 -3.13373,-2.40612 -2.29658,-1.32609 -4.91437,-2.02777 -7.56867,-2.02883 -2.65615,0 -5.2742,0.70274 -7.57264,2.02989 -1.17951,0.68421 -2.23573,1.49754 -3.13055,2.40612 -0.93239,0.93107 -1.74254,1.98543 -2.40718,3.13266 -1.32715,2.29526 -2.02882,4.91332 -2.02882,7.57053 0,2.65721 0.70167,5.27526 2.02962,7.57078 0.66357,1.14618 1.47267,2.19949 2.39792,3.12553 0.90117,0.91572 1.95738,1.72799 3.1406,2.41432 2.29658,1.32689 4.91437,2.02883 7.57079,2.02883 2.65403,0 5.27209,-0.70194 7.57158,-2.02989 1.14538,-0.66357 2.19736,-1.47267 3.13081,-2.40612 0.9324,-0.93318 1.74255,-1.98649 2.40824,-3.13372 z"
-           class="st0"
-           inkscape:connector-curvature="0" />
-        <path
-           id="path979"
-           style="fill:#227fb7;fill-opacity:1;stroke-width:0.26458332"
-           d="m 310.36107,-236.52277 c -3.72693,-3.11943 -7.72557,-5.92111 -11.88138,-8.323 -12.69392,-7.35779 -27.18197,-11.24902 -41.90154,-11.24902 -14.73279,0 -29.22719,3.89123 -41.91555,11.24902 -4.1619,2.40507 -8.15367,5.20065 -11.86074,8.31057 -1.70233,1.42531 -2.7358,3.52134 -2.83607,5.74939 -0.0982,2.24076 0.75459,4.43707 2.34103,6.02139 l 0.20373,0.20347 c 1.50786,1.50812 3.51393,2.33785 5.64594,2.33785 1.86664,0 3.68036,-0.6604 5.11096,-1.85817 2.97021,-2.48232 6.17723,-4.72836 9.53426,-6.67755 10.22562,-5.93249 21.90565,-9.06727 33.77671,-9.06727 11.87423,0.002 23.554,3.13875 33.77671,9.06939 3.2639,1.89336 6.39868,4.07723 9.31518,6.49658 1.49146,1.2393 3.37873,1.92034 5.31336,1.92034 2.22092,0 4.30451,-0.86519 5.87137,-2.43496 1.58221,-1.5793 2.4339,-3.76819 2.3368,-6.00895 -0.10133,-2.21774 -1.13189,-4.30874 -2.83077,-5.73908 z"
-           class="st0"
-           inkscape:connector-curvature="0" />
-        <path
-           id="path981"
-           style="fill:#227fb7;fill-opacity:1;stroke-width:0.26458332"
-           d="m 290.39931,-212.69995 c -1.81478,-1.36842 -3.72163,-2.6326 -5.66896,-3.75576 -8.54313,-4.94665 -18.27901,-7.56126 -28.1522,-7.56126 -9.8753,0 -19.61329,2.61461 -28.15431,7.56126 -1.94601,1.12342 -3.84863,2.38416 -5.65335,3.74333 -1.87378,1.41287 -3.04165,3.55864 -3.20807,5.8838 -0.1614,2.30267 0.68103,4.55983 2.31087,6.19072 l 0.19843,0.19844 c 1.50151,1.50283 3.49938,2.33071 5.63272,2.33071 1.76715,0 3.45493,-0.5633 4.87521,-1.63089 1.29699,-0.96943 2.63975,-1.85314 3.99574,-2.62943 6.06054,-3.51922 12.97596,-5.37739 20.00303,-5.37739 7.02283,0 13.93825,1.85817 19.99879,5.37739 1.3933,0.8083 2.73791,1.69386 3.99362,2.63975 1.42293,1.06759 3.1078,1.63089 4.86993,1.63089 2.12301,0 4.1185,-0.82576 5.61736,-2.32436 l 0.22834,-0.22754 c 1.62772,-1.62878 2.47015,-3.8788 2.31087,-6.17512 -0.1614,-2.32118 -1.32715,-4.46378 -3.19802,-5.87454 z"
-           class="st0"
-           inkscape:connector-curvature="0" />
-      </g>
-      <image
-         transform="scale(-1,1)"
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         width="57.037525"
-         height="42.723087"
-         preserveAspectRatio="none"
-         xlink:href="data:image/jpeg;base64,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 QBERAEREAREQBERAEREAREQH/9k= "
-         id="image1049"
-         x="-205.04588"
-         y="151.59091" />
-      <g
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         transform="matrix(0.09873298,0,0,0.09873298,28.129169,69.51901)"
-         id="g1071"
-         style="opacity:1">
-        <g
-           id="g1058">
-          <path
-             inkscape:connector-curvature="0"
-             class="st0"
-             d="m 19.398,413.158 h 473.206 c 13.586,0 21.961,-5.504 18.687,-12.082 l -37.574,-69.058 c -0.175,-1.047 -0.789,-2.035 -1.609,-2.981 V 80.131 c 0,-12.64 -10.34,-22.98 -22.981,-22.98 H 62.874 c -12.64,0 -22.984,10.34 -22.984,22.98 v 248.902 c -0.82,0.946 -1.43,1.938 -1.606,2.985 L 0.711,401.076 c -3.273,6.578 5.102,12.082 18.687,12.082 z M 191.242,380.63 204.883,354.916 H 307.12 l 13.637,25.714 z M 80.75,98.01 H 431.249 V 322.388 H 80.75 Z"
-             style="fill:#4b4b4b"
-             id="path1054" />
-          <path
-             inkscape:connector-curvature="0"
-             class="st0"
-             d="m 0,429.314 v 13.25 c 0,6.785 5.5,12.285 12.285,12.285 h 487.428 c 6.786,0 12.286,-5.5 12.286,-12.285 v -13.25 z"
-             style="fill:#4b4b4b"
-             id="path1056" />
-        </g>
-      </g>
-      <g
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         style="fill:#227fb7;fill-opacity:1"
-         transform="matrix(0,0.19438221,0.19438221,0,173.1742,91.235384)"
-         id="g1039-9">
-        <path
-           id="path977-2"
-           style="fill:#227fb7;fill-opacity:1;stroke-width:0.26458332"
-           d="m 269.68852,-166.78045 c 1.32609,-2.29553 2.02803,-4.91226 2.02803,-7.56973 0,-2.65695 -0.70194,-5.27421 -2.02882,-7.57264 -0.66464,-1.14406 -1.47479,-2.19737 -2.40718,-3.13161 -0.9353,-0.93424 -1.98967,-1.7436 -3.13373,-2.40612 -2.29658,-1.32609 -4.91437,-2.02777 -7.56867,-2.02883 -2.65615,0 -5.2742,0.70274 -7.57264,2.02989 -1.17951,0.68421 -2.23573,1.49754 -3.13055,2.40612 -0.93239,0.93107 -1.74254,1.98543 -2.40718,3.13266 -1.32715,2.29526 -2.02882,4.91332 -2.02882,7.57053 0,2.65721 0.70167,5.27526 2.02962,7.57078 0.66357,1.14618 1.47267,2.19949 2.39792,3.12553 0.90117,0.91572 1.95738,1.72799 3.1406,2.41432 2.29658,1.32689 4.91437,2.02883 7.57079,2.02883 2.65403,0 5.27209,-0.70194 7.57158,-2.02989 1.14538,-0.66357 2.19736,-1.47267 3.13081,-2.40612 0.9324,-0.93318 1.74255,-1.98649 2.40824,-3.13372 z"
-           class="st0"
-           inkscape:connector-curvature="0" />
-        <path
-           id="path979-2"
-           style="fill:#227fb7;fill-opacity:1;stroke-width:0.26458332"
-           d="m 310.36107,-236.52277 c -3.72693,-3.11943 -7.72557,-5.92111 -11.88138,-8.323 -12.69392,-7.35779 -27.18197,-11.24902 -41.90154,-11.24902 -14.73279,0 -29.22719,3.89123 -41.91555,11.24902 -4.1619,2.40507 -8.15367,5.20065 -11.86074,8.31057 -1.70233,1.42531 -2.7358,3.52134 -2.83607,5.74939 -0.0982,2.24076 0.75459,4.43707 2.34103,6.02139 l 0.20373,0.20347 c 1.50786,1.50812 3.51393,2.33785 5.64594,2.33785 1.86664,0 3.68036,-0.6604 5.11096,-1.85817 2.97021,-2.48232 6.17723,-4.72836 9.53426,-6.67755 10.22562,-5.93249 21.90565,-9.06727 33.77671,-9.06727 11.87423,0.002 23.554,3.13875 33.77671,9.06939 3.2639,1.89336 6.39868,4.07723 9.31518,6.49658 1.49146,1.2393 3.37873,1.92034 5.31336,1.92034 2.22092,0 4.30451,-0.86519 5.87137,-2.43496 1.58221,-1.5793 2.4339,-3.76819 2.3368,-6.00895 -0.10133,-2.21774 -1.13189,-4.30874 -2.83077,-5.73908 z"
-           class="st0"
-           inkscape:connector-curvature="0" />
-        <path
-           id="path981-2"
-           style="fill:#227fb7;fill-opacity:1;stroke-width:0.26458332"
-           d="m 290.39931,-212.69995 c -1.81478,-1.36842 -3.72163,-2.6326 -5.66896,-3.75576 -8.54313,-4.94665 -18.27901,-7.56126 -28.1522,-7.56126 -9.8753,0 -19.61329,2.61461 -28.15431,7.56126 -1.94601,1.12342 -3.84863,2.38416 -5.65335,3.74333 -1.87378,1.41287 -3.04165,3.55864 -3.20807,5.8838 -0.1614,2.30267 0.68103,4.55983 2.31087,6.19072 l 0.19843,0.19844 c 1.50151,1.50283 3.49938,2.33071 5.63272,2.33071 1.76715,0 3.45493,-0.5633 4.87521,-1.63089 1.29699,-0.96943 2.63975,-1.85314 3.99574,-2.62943 6.06054,-3.51922 12.97596,-5.37739 20.00303,-5.37739 7.02283,0 13.93825,1.85817 19.99879,5.37739 1.3933,0.8083 2.73791,1.69386 3.99362,2.63975 1.42293,1.06759 3.1078,1.63089 4.86993,1.63089 2.12301,0 4.1185,-0.82576 5.61736,-2.32436 l 0.22834,-0.22754 c 1.62772,-1.62878 2.47015,-3.8788 2.31087,-6.17512 -0.1614,-2.32118 -1.32715,-4.46378 -3.19802,-5.87454 z"
-           class="st0"
-           inkscape:connector-curvature="0" />
-      </g>
-      <image
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         width="23.453875"
-         height="37.184708"
-         preserveAspectRatio="none"
-         xlink:href="data:image/png;base64,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 7W689+Bfd+9FfO6eAgAAVHeYK/N5tG/tu2LRvPL2uT945Ni835axhVcAAABQAUSZz8bI0GBwvz5t fVuYm5lqaWpKJJKXr9Ku3ww78s8Juf1RAAAAoDyIMtWCpqY4P79AdqdaAAAAqAzMlakW8vLyP3cX AAAAeAkrmAAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUA AACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAA AIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAA gMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACA xxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDH EGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQ ZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBl AAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUA AACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAA AIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAAgMcQZQAAAIDHEGUAAACAxxBlAAAA gMcQZQAAAIDHEGUAAACAx1Q+dwcqSyQS1ff0sLGyMDQw0NHWzszKSkvPeBYTe/fefYlU+rl79ykY GRrYWFlaWVqYmpi8SkuLi0+MS0h4EZ9QyebqampWlhbWlhbWVpZCoTA+ITE+MfHZ89jXeXkftdsA AAAfFQ+ijKGBwU/fjurYtlUNfX3Fs1lZ2eevXF27aUtiUvKn79unUdvOdvov45s18lE8dT/y4eYd u85evCwtP8+JRKIh/fuO/W6Uro6O3Kn8/Pz9fx3d9se+pJQUxYad27ddNHsGEd2LfPDVdz/Jnrr4 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 5L86IOLBQyIyq1Vr6IC+3PGeXTq5uTgT0ZF/Tm7evkt2I12JVDp5ph97SOTtUc/aylKxG8GhNydM m8nlGCKKS0jc/9dRVnZ3dank15FIJBOmzeSGNIjI1MSkV9fOv82dff7vQ0Fn/lmzdNGgvr1rGRuX d4Ubt+78PH0W961VVVUbeHmM/e6bXYHrb105d3Dn79MmjmvUwJtFio+H20pYdrTM3cWZiDKzsmRz DLPtj73snrM6AAAAFaiOUcaslgkrxCVUbVSGmyjK9lmRtf+vo4rTe4uKitZv2c7KstNoRo8Yxgr+ awIUP0UilZ67eJmVe3frolhh1fpNigejHpV+eg095fv9K1Xw5s1X3/307bhfLl4Jktsw18jAoEOb Vn7TJ18+eXTzmhVKn3YR0blLV1p36bVh6/ZnMbGyx1VUVOq4uXw9dNCOjeuCTh/7euggVdWPtYg9 9eUrVtDQ0OBmxqipqxGRvp6e4iLt5NRUnzYdG7XpNGX2vI/UJQAA+GJUxyiTlpHBCpriqi2oMTc1 ZQXFJ1MhN8OUNnn8tHRIwMqy9NmHioqKjbUVESUmJb9KS1PaKijkBit41HFTPBsZFa148FlMDCto a1d5wsrla8FjJk5u0KrDV9/9tHbTlqCQULnVPS2aNv5z+2a5xdicV+npq9Zv6tRnYKsuPWfMW3jw yLGnz2NKSkq4CjX09adNHLfYb2ZVO1ZJ3HL0jMwsbvLyjbDbrLB+5VK/6ZPrubuxDYKZ7OycjMzM nNzcj9QlAAD4YlTHuTLccyLZqRWVwVZZE9GLOPnJwuVtrBKfmFTw5o2GurqlhblAICgpKbGyMGf7 x2hqijetXqa0lVBQGgGNjYzkTmXn5BQXFys2UXqwSoqKikLDbrHnTUKh0N3FuUXTxt06tmfBS6yh sX7l0r5DR75KTy/vConJKYeO/nPo6D9EVENfv1ljn1bNm3Zo04o9YOrWsf2Tp882/r7jPfupyNjQ gBVevnrFHVy2JqCeu5uFuZmGuvqgvr0H9e2dlZUddufu1euhV4KvJyQmffBuAADAF6laRpm4eFaw tJCfvVsBkUjEPZlSHJXJzlH+//dSqTQ+IbG2na2aqqq6mlrBmzcsGRCRvp6eb7OmFX+ohrq63BHZ FxJ9PFKp9F7kA7a0qle3zgtmThcKhaYmJh3btf7jz4OVuUJGZuaxk6ePnTxtVstk+cJ57N0FI4YM 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 ABSWacr8yZvP+Ks/fVtK6fKrrnnPBz488oVf+6pXvu/v3pVS+tFPb337O9895GV23mmnvzrzj19x /DFzd9xx23996qmVV11/wyc/+/mHHn5kyKuff+45p5x4fPvnp5955thXvmb9+g0jj+rA/X/3Xy/6 9OAfz/nQBZdeceXgHy/+1CcOXXDwyEvY3Lr16w879hWdXx4ApohMU2ZavT5z5syUUt+0aaNeuF6v tS88va9vyAu88qQTzz3rb3eYM3u4Jeyww5zXvPKUkxcf/6nPXfy5L31l2wv09U1rryKlNHPmzCMP f+nV190w8qhOPuG4wauklGq12ub/OmPG9M3/dVTVLa8OALRlmjI99LpXn3reuWcP/vH2JXf8fMkv 7/zVr5cuu3+P+bvtv99+B+7/uwsPfWFKacb06X/713++ww5zLvzEP4+8zJMXHz9qypx0wnGdDO/R xx5fs3btqBfbsGGUSSAAmJomecoc+dLDPvje/9X++ZnVqz/40Qu/9d3LB//1lttu/2a6LKV0/NGL LvjA+9rTNn/yR2+8/4EH/uOSbw65wP7+/nq9ftyio2ZMn7523brh1vuCAw/YfbddBy8/wgjPev8H b7r5p8VvGQCQ0uR+B1OlUnnP37yjVq2mlO665zennv6mzTtmc1dee/2r3/CmX911d/uPf/Enb+vr G/rE1o0/ujmlNGvWzJcfecQIqx6ckhnMlEql0tWNAABGMplT5phFRz5vn+e2f/7ABR974MGHRrjw Q4/89tzzPtr++dnP2uUPTn3lkBf73tXXtFqtlNLJi48fblGVSuWkxcellO65d+ld9/ym/ZftawEA vTWZU+btb3tz+4crrr72lttuH/Xyty+5Y/BNRme+9U21oV5p+9tHH7vtF0tSSi8/8ojhXre74OAD d332s1NKl33/qmp1Mt/DADDhJu0v2v323WfBQQe2f/74Jz898oUHfeIzF7V/2O05z5m/+27bXmBa vX7pFVellGbOmHHsoiOHXMjJG88uXXrFldXapL2HASAHk/YX7d577dX+YcWTT9637P4Or7V02bJn Vq9u/7zHUClTr9cvv/KqZrOZUjp58RDvUapUKq84/riU0l33/Oaee5fWvYkaAMqU+zuY9n3u3me+ 5Y9GvsyCgw/Y9i/3mD8QIsseeLDQGu+7/4EDnr9fSmmP3Xff9l+r1eqjjz1+y20/X3joC4864vDt t9vu6Wee2fwChy54wbOftUtK6btXXJlSqlRGicX5u+02+IKe4TSbzXvuXVrkRgDAVJF7yjz/efs+ /3n7dnHFwRC5/4GRXu27rfuW3d9OmSFPMLV993vfX3joC6f39R139FFbvStq8L1Ll11xVSer2/wz b4azctWqhUcv7mRpADDVTNoTTLs959ntH+5/sNiszOAsy3CfHZxSuuLqaxoD55i2eB9TtVp9xfHH pJTu/NWvly5bVmi9AEAXcp+V+fFPb/3MF7448mWOWXTkm99w2lZ/+cSKFe0fZs2cUWiNu++6a/uH Ec5MPbF8xY9/cssRhy182WEvmTNn9sqVq9p//+JDFuyy884ppcu+39GUTErpv77z3WX3PzDyZdav X9/h0gBgqsk9ZR5/4olRPwx3rz3mb/uXgy/13XP+EP86gvan9KaUlt0/0ouFL73iyiMOWzht2rQT jn75Jd/+n/ZfnrTZe5c6XN23L73cp/0CQNcm7Qmm+zZOdewxf4hX7w6nVqsNnpka+fXCV1x9bX9/ f9rsHFOtWl187DEppSW/vPP+ET+ODwDolUmbMks3m5XZYc6cDq91wjEvnzZtWkqp0Ww+8NBIOfLU ypXtLzE4/CUvnrvjjimlhS86ZOed5qWULu347BIAMEaTNmXuXXrfUytXpZT6+qa99Yw3dHitt/zh 6e0fvnPp99avH+XLqC/9/pUppVqttvjYl6eUTjphYHqm8xfKAABjNGlTZs3atZ/70lfaP7/p9NfN mTN71KscdMD+hyw4OKXUaDQ+ddEXRr38Vdfe0M6dkxcfX6vVTjzu6JTS7UvueOjhR8YycgCgc5M2 ZVJK//If33j0scdTSttvt935554z3Fcmte05f/d/+uiH2z//93cu7eSD9VY9/fQNP7wppbTwRYee cuIJ7dNMnb/gFwAYu8mcMmvXrRucXFl87NHf+PLnf2fPPYe85O/u97x/u/iz7U/VW716zadHe/v3 oIFzTNXq+979rpRSq9W6/PtX92DoAEBncn8z9hh945vfOfwlC19x/LEppeft89z/+tcvXn/jTb+6 +5677r7n3vuW7bbrc15w4AEHH3jAYS86dNasmSmltevW/dk73/3gQw93uPyrrvvB2nXrZkyfvsMO c1JKP7v9F488+mihEZ71zr9+6qmVnVzyf3/kQh+7BwBbmeQp02g03nX2uY89/sQZp722UqlsN2vW SSccN/jpL1t5+Le/PevcD918y62dL3/NT6TlNQAAHiJJREFUmjXX3nBjO5XSxkmaQtpfktCJ7bab VXThADDpTeYTTG3NZvO8C//hdW/+4x/95Kftb7Te1vIVT37+y/9y0h+8oVDHtA2+OKbZbF5+pbNL ADCuKvsd+tKJHsP4mTd3x6OOeOnee+2107y5M2fMeGL5iseeeOLnS+645We3N4apHAAgZ1MrZQCA SWbyn2ACACYxKQMABCZlAIDApAwAEJiUAQACkzIAQGBSBgAITMoAAIFJGQAgMCkDAAQmZQCAwKQM ABCYlAEAApMyAEBgUgYACEzKAACBSRkAIDApAwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIGAAhMygAA gUkZACAwKQMABCZlAIDApAwAEJiUAQACkzIAQGBSBgAITMoAAIFJGQAgMCkDAAQmZQCAwKQMABCY lAEAApMyAEBgUgYACEzKAACBSRkAIDApAwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZ ACAwKQMABCZlAIDApAwAEJiUAQACkzIAQGBSBgAITMoAAIFJGQAgMCkDAAQmZQCAwKQMABCYlAEA ApMyAEBgUgYACEzKAACBSRkAIDApAwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZACAw KQMABCZlAIDApAwAEJiUAQACkzIAQGBSBgAITMoAAIFJGQAgMCkDAAQmZQCAwKQMABCYlAEAApMy AEBgUgYACEzKAACBSRkAIDApAwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZACAwKQMA BCZlAIDApAwAEJiUAQACkzIAQGBSBgAITMoAAIFJGQAgMCkDAAQmZQCAwKQMABCYlAEAApMyAEBg UgYACEzKAACBSRkAIDApAwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZACAwKQMABCZl AIDApAwAEJiUAQACkzIAQGBSBgAITMoAAIFJGQAgMCkDAAQmZQCAwKQMABCYlAEAApMyAEBgUgYA CEzKAACBSRkAIDApAwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZACAwKQMABCZlAIDA pAwAEJiUAQACkzIAQGBSBgAITMoAAIFJGQAgMCkDAAQmZQCAwKQMABCYlAEAApMyAEBgUgYACEzK AACBSRkAIDApAwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZACAwKQMABCZlAIDApAwA EJiUAQACkzIAQGBSBgAITMoAAIFJGQAgMCkDAAQmZQCAwKQMABCYlAEAApMyAEBgUgYACEzKAACB SRkAIDApAwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZACAwKQMABCZlAIDApAwAEJiU AQACkzIAQGBSBgAITMoAAIFJGQAgMCkDAAQmZQCAwKQMABCYlAEAApMyAEBgUgYACEzKAACBSRkA IDApAwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZACAwKQMABCZlAIDApAwAEJiUAQAC kzIAQGBSBgAITMoAAIFJGQAgMCkDAAQmZQCAwKQMABCYlAEAApMyAEBgUgYACEzKAACBSRkAIDAp AwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZACAwKQMABCZlAIDApAwAEJiUAQACkzIA QGBSBgAITMoAAIFJGQAgMCkDAAQmZQCAwKQMABCYlAEAApMyAEBgUgYACEzKAACBSRkAIDApAwAE JmUAgMCkDAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZACAwKQMABCZlAIDApAwAEJiUAQACkzIAQGBS BgAITMoAAIFJGQAgMCkDAAQmZQCAwKQMABCYlAEAApMyAEBgUgYACEzKAACBSRkAIDApAwAEJmUA gMCkDAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZACAwKQMABCZlAIDApAwAEJiUAQACkzIAQGBSBgAI TMoAAIFJGQAgMCkDAAQmZQCAwKQMABCYlAEAApMyAEBgUgYACEzKAACBSRkAIDApAwAEJmUAgMCk DAAQmJQBAAKTMgBAYFIGAAhMygAAgUkZACAwKQMABCZlAIDApAwAEJiUAQACkzIAQGBSBgAITMoA AIFJGQAgMCkDAAQmZQCAwKQMABCYlAEAApMyAEBgUgYACEzKAACBSRkAIDApAwAEJmUAgMCkDAAQ mJQBAAKTMgBAYFIGAAhMygAAgUkZACAwKQMABCZlAIDApAwAEJiUAQACkzIAQGBSBgAITMoAAIFJ GQAgMCkDAAQmZQCAwKQMABCYlAEAApMyAEBgUgYACEzKAACBSRkAIDApAwAEJmUAgMCkDAAQmJQB AAKTMgBAYFIGAAhMygAAgUkZACAwKQMABCZlAIDApAwAEJiUAQACkzIAQGBSBgAITMoAAIFJGQAg MCkDAAQmZQCAwKQMABCYlAEAApMyAEBgUgYACEzKAACBSRkAIDApAwAEJmUAgMCkDAAQmJQBAAKT MgBAYFIGAAhMygAAgUkZACAwKQMABCZlAIDApAwAEJiUAQACkzIAQGBSBgAITMoAAIFJGQAgMCkD AAQmZQCAwKQMABCYlAEAApMyAEBgUgYACEzKAACBSRkAIDApAwAEJmUAgMCkDAAQmJQBAAKTMgBA YFIGAAhMygAAgUkZACAwKQMABCZlAIDApAwAEJiUAQACkzIAQGBSBgAITMoAAIFJGQAgMCkDAAQm ZQCAwKQMABCYlAEAApMyAEBgUgYACEzKAACBSRkAIDApAwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIG AAhMygAAgUkZACAwKQMABCZlAIDApAwAEJiUAQACkzIAQGBSBgAITMoAAIFJGQAgMCkDAAQmZQCA wKQMABCYlAEAApMyAEBgUgYACEzKAACBSRkAIDApAwAEJmUAgMCkDAAQmJQBAAKTMgBAYFIGAAis /sxTKyZ6DAAAXaqsfHrNRI9hdK3UKnqFKapS9OIFr1C2SrHxZDZ6YsjteNL9eArv70WVu4dVCu7v sIXNNp/6CNtS4f23tB2+8G/cgYtPqaLJ7KAQPqomegBkdjxptcoa0MbxdLz8bjbOkjfo3Pb3Kbf/ Vkr9fVd86YWflI5x9CO9VqbwxpDd1pPdgEqT2S3N7bhWVGbDmaIyexTKn0Iob/l5dYOO6bXKZv/N YendTK6PcfT1TtZRIJcKX6Fs2Q2o1zLba3M7qBWV2XCmusx233bNlDc9U8INzisaREyvVYb6Y8+2 n+JLH9MrBMYy+o7ewWR6JleZ3a7cjmtFZTYcBmT2uMSZnsmrG3RMrw13g3tzRxRfem9e6djd6Dt9 M7aayU9mtyi341pRmQ2HLWT26ESomby6Qcf02sg3eKx3R/Gl9/IdG12MvsDnyqiZnGR2W3I7rhWV 2XAYQmaPUd41k1c36Jhe6+QGd3+nFF967995WnT0xT4iT83kIbNbkdtxrajMhsOwMnukcq2ZvLpB x/Ra5ze4m7um+NJ73zFdLNen/QIAgRVOGRMzEy2z8ef2FK2ozIbDKDJ7vPKbmMlrCsSUTK+Vuz0U X3rZy++UWRkAILBuUsbEzMTJbOS5PUUrKrPh0JHMHrXyP3y/3NdGFJDb/p7ZllC+cl87VXzplULX KnX0Xc7KqJmJkNmYczuuFZXZcCggs8cuj5rJqxt0TK+V+4627jqm8+uW/X48J5gAgMC6TxkTM+Mr s9Hm9hStqMyGQ2GZPYITPTGT1xSIKZleG/sNHmkJY5mS6WQJ5Y4+pTTGWRk1M14yG2dux7WiMhvO JPbRG+ofvWGUL3rrXmaP48TVTF7doGN6rVc3eOjljL1jRl5OuaPfaKxHmfbSfd9kaTLba3M7qBWV 2XAmt4/eUD//ulr75/cc1V/KOjLbfds1U+LXTW59g/OKBhHTaz2/wVtsP72KmKGXXvbot1Tvyeo2 LqLjPbirdZZ/gJhKCh+kSl5B0aXHnxKc3M67rvbRGwY6ph00Zx/VKGtl7YAoWjSlHU8Ggqbo1Qo/ IyxRbvtXbuMJruQHq9SlD7P83r7sN7etmWHoGMq0ece0nX9d7SNb/k3PFZ4SyG0GIZuNNLf9K7fx kKGen8Yud8K3/PnbyU7EULLBjnn/0Y0PXbvph9LnZjbWTIHpmZLPT4U7/57b/pXbeCaN7c/rG+c1 Pv2+9aUuv6Q3Y+e2fZNS0jGU7kPXDnTMecc1zjpyoFrOOrJx3nGNNC5zM8n0TLdy279yGw85K+3N BalS6pOLSsXcTEE6hpJ96Nrax35QSyl9/MT+ty9sbv5P7zy8MaPeevf36uMwN5NSqqRKsZfOlHu4 Kr74ksczxAoz279yG8+kVPZMSdv4zACVlzJJzWREx1CydsfUKulTv9d/xoLmthd4+8JmX63/HZeq mZKu0L32/rX0ycoVd1dvfrB652PVB1amp9dXapW0w4zW3nNbL3h26+i9myc8tzG9Pji4Ya1vpCvv qV6ztHr7I5V7V1SeWltptNL2fa35c9L+uzQPm99avE9zrx1Hum32d4oqNWWSmsmCjqFkn/zxQMdc 9Kr+1x80RMe0ve3QZl+t/y//p37+dbWdZ7X+9EXDXrIn1EwnGs10yZ21z/20dvODQ7zeYM3TlUee rtx0f/rsT2s7zqi/9ZDGOw9vzJs59KKeXJs+8aP6F26trViz9T8tX1NZvib9/Le1ry1JKaWXzG+e +aLmHxzQqG+zTvs7XSg7ZYDJ7w0HN76+pPo3RzR+f/9R6uSMBc2+Wv+nb6699oByO4ZO3PRA9R2X TvvV45WU0vZ96di9Gy/bs3nY/NZeO7bmTG81mmnF2spvVlR+/ED10l9Xb36w+o831b90W+3ji4cI 1v++s/quy+tPrK6klBbu3jxlv+Zh81vPnduaO7NVq6SV6ypLn0w/ebB6w33Va+6t3vxA9eYHqhfe WPvkyf2H72FLYKwqq55ZW/5ayn1mYWJmJKZkmDjt0+Tjc0p+OOV/3kyxK5S8+E5taKSzvj/t4ltr rZT2mdf6i4X9bzi4MXv6SFe549HqB6+tX3ZXNaX014c1zj+uf3D3fP/V9X+8qZZSWrxP8wPH9L/g 2SMN+un16d9+Xvv0T2r3LK9UUvrjFzX+zwn9fbWU7O/jZTx3zPFZl6+TBJhamq30hkv6vnBrra+W 3ruo/+Yz15354lE6JqV04LOaX3/9hotetWFGPX3yx7X3XT0wqX/u1fV/vKk2vZY+83v9l5y+YeSO SSlt35fOfHHj5jPXv3dRo6+WPn9L7Q//c1rTM1LGYHxSJrcn7lOGKRmmvPLfm13sCjls1Bf/rHbF 3dVdZrWueeu69xw1MCPS4VBOP6h5yekbptfS//1R7bql1avvrf7TTbW+Wvr6aRvOWFDgpdx9tfSe o/qvedv6XbZrfe/u6sW31uzvdG3cZmWKbXM/WFb9wbICY1MzQ8ijY9atW7du3brCy9Yx9I6a2cq/ /6KWUvrY4v6DR5tBGXIQi/Zqvvfl/SmlD1xT/8DV9ZTS+4/uP3bvbl7ycvCzWh9b3J9S+vclRX8Z 2d+79/T71k/sad+ey/EE0wXX10/6at9JX+373t05Do/OrV279vHHH3v88cdWrVw50WMBBtzxaDWl tHjf7t8P/5cvaew2u3XLQ5XbHqnMn9P684XdL+rEfZsppSW/dbSne+P5DqaO3ll4wfX1j9wwMKqn 1hXobm/M3kIeUzKt5sATtZWrVqaUZs+Z0+nSJ/x5K1vq/HOuRn6216vlFFX+G7OLXWFi35i9ekNK Kc0Z7cUxW65+C321dNpBzfZLfV9/ULPjU1RDmN23aUhdj4fNTb7vJRhFZbxnZUbZ/j5yw6aOOe2g xmsPKFb6TjMNyKNjUkozZ82aNXNWJaVKSqtWrexwbkbHUAanmQYW06MVD76J+vD5Y3o3tf2dMamk NBGfK9PeCod4fvGRG+oXXL+pYz77yg3VLn7HVlKaym/PziZiBs2dNy+tSGtWr04prRptbsZBLXNj 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 Xs2U0pF7NUv+GIYoNROyY1JKM2bM2GXnXVJKfdOnF7mejqH3JmvNjH1//887qh+6tv6bFZWU0o4z 0qv3b7ziec0j92zuOGPTZVatS9/6f7WP31j75WOV47/U96XXbDhlv+bgv1766+qb/2vamv70vJ1a 735Z49TnN2dPbw2u7Mm16cZl1cvuqn7zzurPHq786bfqH7m+9f6jG689sNmT8UOOKZPaEdPW3mpL /D624tcYV1EjZpCIIR/Fv2+y5OPD2I5vY9/f71leecel9euWVlNK+85rveuIxmkHNWYM9Wth9vR0 xoLGaw9s/N336l/8We2M/5x22ZsG3nn7o/urZ1wybX0jvfWQxsdP7N/2JTU7zkin7Nc8Zb/m35+Y vrak+g8/rN29vPKW/65f/LPmP5/S2GduiW/xYIqoV0baOortwCXmQOmf+W0X6bHiB1kPAeOkUrhP KimlVtlBU9bFh/Xl22pnXVF/Zn3aaVbrg8c03rSgURvtpM+MevrkKf0z6ukzP6m98ZKBZnnjJfX1 jfTnCxsfP7F/1Ku/+YXNMxY0v3p79f1X169fWj38ouqFizdeyzFgky7ui3J/A2f7dL+t8szqdSNe IJuaIQ4dM/ls9+G+cV7jM+euL30dBQ9YJdbM+NrtwukrNx74X39Q8+9P3DB3ZoGrN5rp5H+ZduOy TeHzsj2bl52xYagSGmrXrqSU0vI16W8vr399ycB15s5MD7y7/Ec8hq6PhwPb50TsraN+ON6gifmI vEqhu7XYpZl0Cm8AlYqOYcIU3F4rqTLiNHYY7zy8v1pJe+7Q+sprNlz86mIdk1KqVdOnTumftvG3 x7Rq+tQp/aPO6KS0xR0+b2b64u/3f/k1/bvPaaWU3vFSb1ZNY/4VOnV/A486KzPI9AyjMBlDVFNv emZtfxryNTGd+6vv1r/0s1pK6S2HND51ynCnlipD/riVVevS7EKvqZuceng87MH22dlLT3I5EdZ5 yhQeQfh9nSJ0DLFNvZoZi0pKy56q/N6/TqtW0v+8ccP8OcPdG5Wt/s8wen4HjWn7HHU0G5ceMmUK D2JK7+tTiY5hMlAznSl2Uq7gFaakku6gLrfPDkfTKnDZba7Xa0U/pajk9wYTkI5hkij8TqKpuCVn +IkPwZV3B3Wz5M6vk9UDm8vXSQIAdKGLlDExwyamZJhUTMyMyJRMr5V9B5X7+zqfh9esDAAQWHcp Y2KGlEzJMCmZmBmG/b0EGb1yvLtHK5PHuOtZGTUz1TmuMWmpmW3Y3ye3MX4w34RzggkAJkpGEzNx jSVlTMxMXZ6iMcmZmNmM/b1kpdbM6I/F2B+tiX68K2OclVEzU5HjGlOCmkkp2d/HyYTNzfTq0Zq4 R72SUhrbl3BsXErnD0OxS5MZBzWmloIHrHbNTJpPAba/j69WaT1QGXIj7vnKxv33+6ZbUO/Rramk lFKrWNCULfThJPwhIbODWl6joQQl7u/dTc90fDycDOzvvdHeZsoY/rbLLGv7HJc7f+uV9PRlv7bm Hok78gG2BMZddo9yZntBiTK7pXmNphvjE8Fx76chRj72E0xbrSKvpyPhzmfF3bgGOKgxcbLb3zM7 Hvae/b0sY99mOrkzsttjRjPsjSrnzdi2765EGeewPO5kILvHPbP9omcyu115jWbidR4oUe65kcZZ 2ufK2MoLyn+Eo/CIk43sHv3M9o4eyOwW5TWaePK//0YZYZkfkWdb71jOY+uIx5rMZLcNZLaPjElm tyWv0WSk0JmjnO/F0cdW8qf92uI7kOeoCvAok6XstoTM9pQuZXYr8hpNbHnelx2N6v8DZU2qo05O JOkAAAAASUVORK5CYII= "
-         id="image1105"
-         x="10.377478"
-         y="153.15398" />
-      <path
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         inkscape:connector-curvature="0"
-         id="path1116"
-         d="M 110.02735,159.366 V 107.50769"
-         style="fill:none;stroke:#4b4b4b;stroke-width:0.96499997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-      <path
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         inkscape:connector-curvature="0"
-         id="path1118"
-         d="M 72.809372,91.851652 H 93.623219"
-         style="fill:none;stroke:#4b4b4b;stroke-width:0.96499997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-      <g
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         transform="matrix(0.06552672,0,0,0.06552672,93.346549,75.376283)"
-         id="g937"
-         style="opacity:1;fill:#227f1c;fill-opacity:1">
-        <g
-           style="fill:#227f1c;fill-opacity:1"
-           id="g925">
-          <path
-             inkscape:connector-curvature="0"
-             class="st0"
-             d="M 510.293,227.203 C 497.145,109.133 402.867,14.859 284.797,1.711 275.328,0.527 265.73,0 256,0 246.27,0 236.672,0.527 227.207,1.711 109,14.859 14.859,109.133 1.578,227.203 0.527,236.672 0,246.27 0,256 0,265.73 0.527,275.328 1.578,284.793 14.859,403 109,497.145 227.207,510.422 236.672,511.473 246.27,512 256,512 c 9.73,0 19.328,-0.527 28.797,-1.578 C 402.867,497.145 497.145,403 510.293,284.793 511.477,275.328 512,265.73 512,256 c 0,-9.73 -0.523,-19.328 -1.707,-28.797 z m -63.547,-26.961 c 1.969,1.23 3.945,2.457 5.824,3.691 3.578,13.156 5.758,26.824 6.484,40.977 0.016,0.422 0.066,0.836 0.078,1.258 h -64.094 l -9,-0.023 c 0,0 0,-0.004 0,-0.008 -0.789,-27.742 -4.734,-54.562 -10.914,-79.942 3.726,1.301 7.387,2.649 10.985,4.031 0.148,0.058 0.301,0.114 0.453,0.172 7.058,2.722 13.855,5.594 20.39,8.566 0.325,0.149 0.649,0.289 0.973,0.438 6.098,2.797 11.93,5.691 17.531,8.637 0.797,0.418 1.602,0.832 2.391,1.258 4.894,2.621 9.55,5.286 14.023,7.969 1.642,0.984 3.271,1.972 4.876,2.976 z m 5.824,107.957 c -2.383,1.562 -4.863,3.129 -7.394,4.687 -0.504,0.309 -1.012,0.618 -1.516,0.922 -5.011,3.046 -10.293,6.074 -15.843,9.046 -0.95,0.504 -1.914,1 -2.871,1.5 -4.75,2.489 -9.688,4.93 -14.797,7.317 -3.86,1.785 -7.727,3.558 -11.68,5.218 -1.77,0.754 -3.582,1.481 -5.386,2.215 -5.91,2.375 -11.875,4.664 -17.934,6.726 6.164,-25.34 10.098,-52.25 10.89,-79.942 h 70.043 l 3.058,0.004 c -0.659,14.589 -2.89,28.776 -6.57,42.307 z m -93.956,123.118 c -6.649,3.843 -13.465,7.445 -20.598,10.538 11.793,-21.386 22.406,-46.035 30.797,-73.042 27.086,-8.414 51.804,-19.066 73.238,-30.898 -17.238,39.261 -46.703,71.902 -83.437,93.402 z M 313.668,68.149 c 3.106,5.121 6.191,10.523 9.222,16.191 0.473,0.886 0.934,1.781 1.402,2.676 2.52,4.804 4.992,9.801 7.41,14.968 1.797,3.864 3.578,7.742 5.25,11.699 0.75,1.754 1.477,3.555 2.211,5.344 2.398,5.922 4.707,11.894 6.797,17.957 -25.344,-6.167 -52.262,-10.101 -80.098,-10.89 -0.008,0 -0.015,0 -0.023,0 V 52.855 c 0.008,0 0.015,0 0.023,0 14.594,0.661 28.793,2.895 42.336,6.574 1.598,2.454 3.199,4.996 4.793,7.602 0.227,0.371 0.455,0.747 0.677,1.118 z m -47.828,77.668 c 0.008,0 0.015,0 0.023,0 31.16,0.922 60.481,5.918 87.172,13.41 7.234,26.09 12.133,54.863 13.18,85.286 0.015,0.55 0.078,1.102 0.094,1.656 H 265.84 Z m 0,220.492 V 265.89 h 97.355 l 3.118,0.004 c -0.922,31.278 -5.914,60.59 -13.278,87.141 -26.207,7.23 -54.981,12.129 -85.516,13.176 -0.558,0.019 -1.121,0.082 -1.679,0.098 z M 441.855,173.984 c -21.386,-11.66 -46.035,-22.406 -73.042,-30.667 -8.282,-27.086 -19.062,-51.934 -30.898,-73.367 39.234,17.226 71.851,46.66 93.355,83.363 3.863,6.671 7.48,13.511 10.585,20.671 z M 265.84,459.133 v -73.094 c 0.008,0 0.015,0 0.023,0 24.118,-0.684 47.477,-3.84 69.793,-8.649 3.461,-0.722 6.922,-1.367 10.379,-2.172 -1.332,3.758 -2.703,7.45 -4.11,11.078 -0.015,0.039 -0.031,0.078 -0.046,0.121 -2.794,7.188 -5.734,14.11 -8.778,20.758 -0.098,0.21 -0.191,0.426 -0.289,0.637 -2.86,6.214 -5.813,12.152 -8.817,17.847 -0.371,0.703 -0.734,1.41 -1.11,2.11 -2.668,4.973 -5.378,9.703 -8.105,14.246 -0.938,1.558 -1.879,3.113 -2.836,4.64 -1.246,2.004 -2.496,4.008 -3.746,5.914 -13.207,3.59 -27.043,5.778 -41.258,6.496 -0.366,0.017 -0.729,0.056 -1.1,0.068 z m -19.726,0.008 c -14.586,-0.66 -28.778,-2.89 -42.313,-6.57 -1.606,-2.45 -3.211,-4.988 -4.813,-7.594 -0.203,-0.332 -0.402,-0.668 -0.605,-1 -3.25,-5.328 -6.481,-10.958 -9.649,-16.898 -0.023,-0.043 -0.043,-0.082 -0.066,-0.126 -3.27,-6.14 -6.481,-12.598 -9.578,-19.347 -0.007,-0.016 -0.011,-0.027 -0.019,-0.043 -4.668,-10.172 -9.098,-21.008 -13.137,-32.438 25.371,6.18 52.32,10.122 80.183,10.91 v 70.266 z M 69.95,337.914 c 21.434,11.832 46.152,22.484 73.238,30.898 6.867,22.113 15.278,42.531 24.555,60.988 2.019,4.09 4.027,8.187 6.156,12.156 C 127.574,421.558 90.305,384.266 69.95,337.914 Z m -4.708,-26.031 c -1.965,-1.227 -3.938,-2.454 -5.813,-3.684 -3.676,-13.535 -5.91,-27.726 -6.57,-42.309 h 73.106 c 0.684,23.996 3.84,47.332 8.649,69.637 0.718,3.461 1.363,6.918 2.171,10.375 -3.706,-1.297 -7.355,-2.637 -10.937,-4.012 -0.126,-0.05 -0.25,-0.098 -0.375,-0.144 -7.07,-2.727 -13.879,-5.602 -20.418,-8.578 -0.328,-0.149 -0.656,-0.293 -0.98,-0.442 -6.094,-2.793 -11.918,-5.683 -17.512,-8.625 -0.809,-0.422 -1.617,-0.84 -2.418,-1.27 -4.887,-2.617 -9.531,-5.278 -14,-7.957 -1.649,-0.988 -3.29,-1.98 -4.903,-2.991 z M 68.18,198.418 c 5.262,-3.202 10.808,-6.382 16.664,-9.503 0.125,-0.066 0.254,-0.133 0.382,-0.199 6.055,-3.215 12.41,-6.367 19.058,-9.41 0.126,-0.058 0.25,-0.114 0.375,-0.168 6.66,-3.039 13.606,-5.973 20.817,-8.75 0.121,-0.05 0.25,-0.098 0.374,-0.144 3.61,-1.387 7.286,-2.738 11.024,-4.047 -6.18,25.379 -10.125,52.199 -10.914,79.942 0,0.012 0,0.019 0,0.031 H 65.703 l -12.844,-0.035 c 0.657,-14.594 2.891,-28.66 6.57,-42.199 2.414,-1.586 4.922,-3.168 7.488,-4.746 0.423,-0.26 0.845,-0.514 1.263,-0.772 z m 110.441,-92.965 c 0.207,-0.449 0.402,-0.906 0.614,-1.355 2.75,-5.969 5.594,-11.683 8.488,-17.183 0.473,-0.895 0.934,-1.794 1.414,-2.684 2.625,-4.89 5.293,-9.547 7.977,-14.027 0.965,-1.61 1.93,-3.211 2.914,-4.793 1.258,-2.024 2.516,-4.051 3.774,-5.981 13.535,-3.679 27.73,-5.91 42.316,-6.57 v 73.234 c -24.14,0.684 -47.519,3.848 -69.851,8.668 -3.434,0.715 -6.867,1.352 -10.297,2.153 1.285,-3.68 2.617,-7.294 3.984,-10.848 0.066,-0.176 0.133,-0.348 0.203,-0.523 2.687,-6.954 5.523,-13.646 8.464,-20.091 z m -32.934,140.68 c 0.918,-31.027 5.914,-60.348 13.278,-86.906 26.684,-7.492 56,-12.488 87.152,-13.41 V 246.168 H 162.543 Z M 174.086,69.95 c -11.832,21.434 -22.617,46.281 -30.898,73.367 -22.32,6.828 -42.906,15.394 -61.496,24.726 -3.902,1.926 -7.816,3.82 -11.648,5.859 20.398,-46.328 57.69,-83.601 104.042,-103.952 z m 72.028,296.363 c -31.153,-0.922 -60.465,-5.918 -87.149,-13.278 -7.359,-26.551 -12.355,-55.863 -13.278,-87.145 h 100.286 0.144 v 97.606 z"
-             style="fill:#227f1c;fill-opacity:1"
-             id="path923" />
-        </g>
-      </g>
-      <text
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         id="text1122"
-         y="72.578178"
-         x="93.759567"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444447px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444447px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:0.26458332"
-           y="72.578178"
-           x="93.759567"
-           id="tspan1120"
-           sodipodi:role="line">INTERNET</tspan></text>
-      <path
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         inkscape:connector-curvature="0"
-         id="path1124"
-         d="M 42.725091,186.61808 H 161.78755"
-         style="fill:none;stroke:#d04067;stroke-width:2.16499996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.33, 2.165;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1596)" />
-      <text
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         id="text1962"
-         y="200.37656"
-         x="153.94832"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444447px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444447px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:0.26458332"
-           y="200.37656"
-           x="153.94832"
-           id="tspan1960"
-           sodipodi:role="line">Soft AP mode</tspan></text>
-      <text
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         id="text1966"
-         y="196.1432"
-         x="69.016968"
-         style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="196.1432"
-           x="69.016968"
-           id="tspan1964"
-           sodipodi:role="line">Configure SSID &amp; Password</tspan></text>
-      <text
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         id="text1962-8"
-         y="131.31322"
-         x="146.54961"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444447px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444447px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:0.26458332"
-           y="131.31322"
-           x="146.54961"
-           id="tspan1960-7"
-           sodipodi:role="line">Station mode</tspan></text>
-      <text
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         id="text2198"
-         y="137.92555"
-         x="146.59502"
-         style="font-style:normal;font-weight:normal;font-size:4.58611107px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="137.92555"
-           x="146.59502"
-           id="tspan2196"
-           sodipodi:role="line">Establish connection</tspan><tspan
-           id="tspan2202"
-           style="stroke-width:0.26458332"
-           y="143.65819"
-           x="146.59502"
-           sodipodi:role="line">with SSID &amp; Password</tspan><tspan
-           id="tspan2206"
-           style="stroke-width:0.26458332"
-           y="149.39082"
-           x="146.59502"
-           sodipodi:role="line">from smartphone</tspan></text>
-      <text
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         id="text1962-6"
-         y="210.95297"
-         x="6.320375"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444447px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.64444447px;font-family:sans-serif;-inkscape-font-specification:'sans-serif Bold';stroke-width:0.26458332"
-           y="210.95297"
-           x="6.320375"
-           id="tspan1960-4"
-           sodipodi:role="line">Sketch embedded AutoConnect</tspan></text>
-      <path
-         sodipodi:nodetypes="cc"
-         inkscape:export-ydpi="95.800003"
-         inkscape:export-xdpi="95.800003"
-         inkscape:connector-curvature="0"
-         id="path1124-8"
-         d="m 157.67373,159.84557 -22.77547,0"
-         style="fill:none;stroke:#227f1c;stroke-width:2.16499996;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:4.33000005, 2.16500002;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker1596-8)" />
-    </g>
-  </g>
-  <style
-     type="text/css"
-     id="style815">
-	.st0{fill:#4B4B4B;}
-</style>
-  <style
-     type="text/css"
-     id="style833">
-	.st0{fill:#374149;}
-</style>
-  <style
-     type="text/css"
-     id="style921">
-	.st0{fill:#374149;}
-</style>
-  <style
-     type="text/css"
-     id="style975">
-	.st0{fill:#374149;}
-</style>
-  <style
-     type="text/css"
-     id="style1052">
-	.st0{fill:#374149;}
-</style>
-</svg>




diff --git a/lib/AutoConnect-master/mkdocs/images/process_begin.svg b/lib/AutoConnect-master/mkdocs/images/process_begin.svg
deleted file mode 100644
index f34b54a106d02b5750982bb968dc4ab2bb784933..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/images/process_begin.svg
+++ /dev/null
@@ -1,1105 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="99.565193mm"
-   height="272.12399mm"
-   viewBox="0 0 99.565193 272.12399"
-   version="1.1"
-   id="svg8776"
-   inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"
-   sodipodi:docname="process_begin.svg">
-  <defs
-     id="defs8770">
-    <marker
-       inkscape:stockid="Arrow2Mstart"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker10937"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10935"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Mstart"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Mstart"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10498"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="matrix(0.4,0,0,0.4,4,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mstart"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker10931"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10929"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker10927"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10925"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mstart"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker10923"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10921"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker10919"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10917"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker10915"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10913"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow1Mend"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10501"
-         d="M 0,0 5,-5 -12.5,0 5,5 Z"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
-         transform="matrix(-0.4,0,0,-0.4,-4,0)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mstart"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker10909"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10907"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker10905"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10903"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mstart"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mstart"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10516"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="Arrow2Mend"
-       style="overflow:visible"
-       inkscape:isstock="true">
-      <path
-         id="path10519"
-         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
-         transform="scale(-0.6)"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <symbol
-       id="Process">
-      <title
-         id="title2740">Process</title>
-      <desc
-         id="desc2742">Any processing function.</desc>
-      <rect
-         x="3.96875"
-         y="9.260417"
-         width="31.75"
-         height="21.166666"
-         style="stroke-width:2"
-         id="rect2744" />
-    </symbol>
-    <symbol
-       id="Decision">
-      <title
-         id="title2782">Decision</title>
-      <desc
-         id="desc2784">A decision or switching type operation.</desc>
-      <path
-         inkscape:connector-curvature="0"
-         d="m 3.96875,19.84375 15.875,-10.5833333 15.875,10.5833333 -15.875,10.583333 z"
-         style="stroke-width:2"
-         id="path2786" />
-    </symbol>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4142136"
-     inkscape:cx="350.72493"
-     inkscape:cy="591.29489"
-     inkscape:document-units="mm"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:snap-global="true"
-     inkscape:snap-bbox="true"
-     inkscape:snap-nodes="true"
-     inkscape:snap-others="true"
-     inkscape:snap-intersection-paths="true"
-     inkscape:snap-smooth-nodes="true"
-     inkscape:snap-midpoints="false"
-     inkscape:bbox-paths="true"
-     inkscape:bbox-nodes="true"
-     inkscape:snap-bbox-edge-midpoints="true"
-     inkscape:snap-bbox-midpoints="true"
-     inkscape:window-width="1920"
-     inkscape:window-height="1029"
-     inkscape:window-x="1272"
-     inkscape:window-y="-8"
-     inkscape:window-maximized="1"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0">
-    <inkscape:grid
-       type="xygrid"
-       id="grid9104"
-       originx="-23.598344"
-       originy="-16.404155" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata8773">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="レイヤー 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-23.598344,-8.4718652)">
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,32.416658 v 3.96875"
-       id="path9639-1"
-       inkscape:connector-curvature="0" />
-    <g
-       id="g9322"
-       transform="translate(-25.135403,-130.96875)">
-      <rect
-         transform="matrix(0.94594599,0.32432418,-0.94594599,0.32432418,0,0)"
-         ry="3.6888673e-006"
-         rx="3.6888673e-006"
-         y="189.47736"
-         x="277.58359"
-         height="18.355465"
-         width="18.355474"
-         id="rect9184-6-3-4"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.33777279;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9188"
-         y="158.61438"
-         x="70.845284"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1em;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           id="tspan9190"
-           style="line-height:1em;fill:#d40055;fill-opacity:1;stroke-width:0.26458332"
-           y="158.61438"
-           x="70.845284"
-           sodipodi:role="line">immediateStart</tspan></text>
-    </g>
-    <g
-       id="g9353"
-       transform="translate(-15.875002,-80.697917)">
-      <rect
-         transform="matrix(0.94594599,0.32432418,-0.94594599,0.32432418,0,0)"
-         ry="3.6888673e-006"
-         rx="3.6888673e-006"
-         y="159.70068"
-         x="238.01735"
-         height="18.355465"
-         width="18.355474"
-         id="rect9184-6-3-8"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.33777273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9188-0"
-         y="136.09689"
-         x="64.030464"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1em;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           id="tspan9190-3"
-           style="line-height:1em;stroke-width:0.26458332"
-           y="136.09689"
-           x="64.030464"
-           sodipodi:role="line">CONNECTED</tspan></text>
-    </g>
-    <g
-       id="g10108"
-       transform="translate(-42.333331,-3.1749998)">
-      <rect
-         transform="matrix(0.945946,0.32432418,-0.945946,0.32432418,0,0)"
-         ry="3.6888673e-006"
-         rx="3.6888673e-006"
-         y="50.674988"
-         x="156.96188"
-         height="18.355465"
-         width="18.355474"
-         id="rect9184-6-3"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.33777273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9188-0-3"
-         y="74.424942"
-         x="88.69355"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1em;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           id="tspan9190-3-6"
-           style="line-height:1em;fill:#d40055;fill-opacity:1;stroke-width:0.26458332"
-           y="74.424942"
-           x="88.69355"
-           sodipodi:role="line">autoReconnect</tspan></text>
-    </g>
-    <g
-       id="g9385"
-       transform="translate(-1.3229192,-84.66667)">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="164.70833"
-         x="42.333336"
-         height="7.9375019"
-         width="34.395828"
-         id="rect9134-4-7"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-7-3"
-         y="169.55531"
-         x="44.568085"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="169.55531"
-           x="44.568085"
-           id="tspan9136-4-0"
-           sodipodi:role="line">WiFi.scanNetworks</tspan></text>
-    </g>
-    <g
-       id="g1026">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="91.947906"
-         x="41.010418"
-         height="7.9375019"
-         width="34.395828"
-         id="rect9134-4-7-8"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-7-3-4"
-         y="95.511253"
-         x="42.913143"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1em;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="line-height:1em;stroke-width:0.26458332"
-           y="95.511253"
-           x="42.913143"
-           id="tspan9136-4-0-7"
-           sodipodi:role="line">Load BSSID</tspan><tspan
-           id="tspan9414"
-           style="line-height:1em;stroke-width:0.26458332"
-           y="98.686256"
-           x="42.913143"
-           sodipodi:role="line">matched credential</tspan></text>
-    </g>
-    <g
-       id="g1014">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="103.85416"
-         x="31.75"
-         height="7.9375019"
-         width="52.916668"
-         id="rect9134-4-7-5"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-7-3-3"
-         y="108.70114"
-         x="34.534584"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="108.70114"
-           x="34.534584"
-           id="tspan9136-4-0-4"
-           sodipodi:role="line">WiFi.begin(SSID,PASSWORD)</tspan></text>
-    </g>
-    <g
-       id="g9353-2"
-       transform="translate(-15.875002,-13.229167)">
-      <rect
-         transform="matrix(0.94594599,0.32432418,-0.94594599,0.32432418,0,0)"
-         ry="3.6888673e-006"
-         rx="3.6888673e-006"
-         y="159.70068"
-         x="238.01735"
-         height="18.355465"
-         width="18.355474"
-         id="rect9184-6-3-8-8"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.33777273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9188-0-2"
-         y="136.09689"
-         x="64.030464"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1em;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           id="tspan9190-3-8"
-           style="line-height:1em;stroke-width:0.26458332"
-           y="136.09689"
-           x="64.030464"
-           sodipodi:role="line">CONNECTED</tspan></text>
-    </g>
-    <g
-       id="g9622"
-       transform="translate(-68.285876,18.615978)">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="117.08333"
-         x="116.41666"
-         height="7.9375019"
-         width="19.843748"
-         id="rect9134-4-7-4-0"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-5"
-         y="122.16544"
-         x="120.13427"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="122.16544"
-           x="120.13427"
-           id="tspan9136-2"
-           sodipodi:role="line">AP_STA</tspan></text>
-    </g>
-    <g
-       id="g9633"
-       transform="translate(-33.072919,2.6458338)">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="5.958323"
-         x="82.020836"
-         height="7.9375019"
-         width="19.843748"
-         id="rect9134-4-7-4-0-9"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138"
-         y="11.081267"
-         x="88.708801"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="11.081267"
-           x="88.708801"
-           id="tspan9136"
-           sodipodi:role="line">STA</tspan></text>
-    </g>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208334,16.669815 v 3.840593"
-       id="path9639"
-       inkscape:connector-curvature="0" />
-    <g
-       id="g9714"
-       transform="translate(-78.07551,4.0638529)">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="143.5417"
-         x="119.06255"
-         height="7.9375019"
-         width="34.395828"
-         id="rect9134-4-7-4-6"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-7-3-9-0"
-         y="148.7003"
-         x="127.28582"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="148.7003"
-           x="127.28582"
-           id="tspan9136-4-0-9-8"
-           sodipodi:role="line">WiFi.softAP</tspan></text>
-    </g>
-    <g
-       id="g9746"
-       transform="translate(-19.843798,-39.555244)">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="175.2917"
-         x="108.47922"
-         height="7.9375019"
-         width="34.395828"
-         id="rect9134-4-7-4-6-0"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-7-3-9-0-6"
-         y="180.44255"
-         x="110.44085"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="180.44255"
-           x="110.44085"
-           id="tspan9136-4-0-9-8-9"
-           sodipodi:role="line">START Web Server</tspan></text>
-    </g>
-    <g
-       id="g9778"
-       transform="translate(-43.656245,-1.1906199)">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="172.64583"
-         x="84.666664"
-         height="7.9375019"
-         width="34.395828"
-         id="rect9134-4-7-4-6-0-1"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-7-3-9-0-6-5"
-         y="177.79668"
-         x="86.628296"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="177.79668"
-           x="86.628296"
-           id="tspan9136-4-0-9-8-9-7"
-           sodipodi:role="line">START DNS Server</tspan></text>
-    </g>
-    <g
-       id="g9746-3"
-       transform="translate(-67.492182,-15.779896)">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="175.2917"
-         x="108.47922"
-         height="7.9375019"
-         width="34.395828"
-         id="rect9134-4-7-4-6-0-5"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-7-3-9-0-6-3"
-         y="180.44255"
-         x="110.44085"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="180.44255"
-           x="110.44085"
-           id="tspan9136-4-0-9-8-9-2"
-           sodipodi:role="line">START Web Server</tspan></text>
-    </g>
-    <g
-       id="g9834"
-       transform="translate(-79.374976,-2.3812481)">
-      <rect
-         transform="matrix(0.94594599,0.32432418,-0.94594599,0.32432418,0,0)"
-         ry="3.6888673e-006"
-         rx="3.6888673e-006"
-         y="219.95329"
-         x="365.3985"
-         height="18.355465"
-         width="18.355474"
-         id="rect9184-6-3-8-8-4"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.33777273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9188-0-2-2"
-         y="196.68362"
-         x="126.32043"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1em;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           id="tspan9190-3-8-4"
-           style="line-height:1em;fill:#d40055;fill-opacity:1;stroke-width:0.26458332"
-           y="196.68362"
-           x="126.32043"
-           sodipodi:role="line">portalTimeout</tspan></text>
-    </g>
-    <g
-       id="g1006">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="203.33749"
-         x="39.687492"
-         height="10.583351"
-         width="37.041668"
-         id="rect9134-4-7-4-6-9"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-7-3-9-0-0"
-         y="207.53156"
-         x="41.894592"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25em;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="line-height:1.25em;stroke-width:0.26458332"
-           y="207.53156"
-           x="41.894592"
-           id="tspan9136-4-0-9-8-4"
-           sodipodi:role="line">handleClient</tspan><tspan
-           id="tspan9863"
-           style="line-height:1.25em;stroke-width:0.26458332"
-           y="211.50031"
-           x="41.894592"
-           sodipodi:role="line">processNextRequest</tspan></text>
-      <path
-         inkscape:connector-curvature="0"
-         id="path9865"
-         d="m 41.0104,203.33749 v 10.58334"
-         style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;opacity:0.66" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path9865-8"
-         d="m 75.40623,203.3375 v 10.58334"
-         style="fill:none;stroke:#000000;stroke-width:0.26458333;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;opacity:0.66" />
-    </g>
-    <g
-       id="g9353-2-8"
-       transform="translate(-15.875002,88.900003)">
-      <rect
-         transform="matrix(0.94594599,0.32432418,-0.94594599,0.32432418,0,0)"
-         ry="3.6888673e-006"
-         rx="3.6888673e-006"
-         y="159.70068"
-         x="238.01735"
-         height="18.355465"
-         width="18.355474"
-         id="rect9184-6-3-8-8-2"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.33777273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9188-0-2-8"
-         y="136.09689"
-         x="64.030464"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1em;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           id="tspan9190-3-8-5"
-           style="line-height:1em;stroke-width:0.26458332"
-           y="136.09689"
-           x="64.030464"
-           sodipodi:role="line">CONNECTED</tspan></text>
-    </g>
-    <g
-       id="g11043">
-      <rect
-         transform="matrix(0.94594599,0.32432418,-0.94594599,0.32432418,0,0)"
-         ry="3.6888673e-006"
-         rx="3.6888673e-006"
-         y="335.73843"
-         x="397.27298"
-         height="18.355465"
-         width="18.355474"
-         id="rect9184-6-3-8-8-2-6"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.33777273;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9188-0-2-8-9"
-         y="244.86855"
-         x="48.93449"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1em;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           id="tspan9190-3-8-5-7"
-           style="line-height:1em;fill:#d40055;fill-opacity:1;stroke-width:0.26458332"
-           y="244.86855"
-           x="48.93449"
-           sodipodi:role="line">retainPortal</tspan></text>
-    </g>
-    <g
-       id="g9980"
-       transform="translate(-9.2604205,-8.8635315)">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="262.60416"
-         x="50.27084"
-         height="7.9375019"
-         width="34.395828"
-         id="rect9134-4-7-4-6-0-1-2"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-7-3-9-0-6-5-3"
-         y="267.755"
-         x="53.199856"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="267.755"
-           x="53.199856"
-           id="tspan9136-4-0-9-8-9-7-5"
-           sodipodi:role="line">STOP DNS Server</tspan></text>
-    </g>
-    <g
-       id="g10054"
-       transform="translate(-1.3229224,65.748961)">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="204.13124"
-         x="41.010422"
-         height="10.583351"
-         width="37.041668"
-         id="rect9134-4-7-4-6-9-9"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-7-3-9-0-6-0"
-         y="208.92632"
-         x="43.674084"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1em;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="line-height:1em;stroke-width:0.26458332"
-           y="208.92632"
-           x="43.674084"
-           id="tspan9136-4-0-9-8-9-71"
-           sodipodi:role="line">EXIT</tspan><tspan
-           id="tspan10009"
-           style="line-height:1em;stroke-width:0.26458332"
-           y="212.10132"
-           x="43.674084"
-           sodipodi:role="line">AutoConnect::begin</tspan></text>
-    </g>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,44.322908 v 3.96875"
-       id="path9639-1-3"
-       inkscape:connector-curvature="0" />
-    <g
-       id="g9659"
-       transform="translate(-34.395836,1.3229159)">
-      <rect
-         ry="0.26458257"
-         rx="0.26458332"
-         y="35.062492"
-         x="75.406258"
-         height="7.9375019"
-         width="34.395828"
-         id="rect9134-4-7-4"
-         style="opacity:0.66000001;vector-effect:none;fill:#e7f3ff;fill-opacity:1;stroke:#000000;stroke-width:0.26458329;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill" />
-      <text
-         id="text9138-7-3-9"
-         y="39.909485"
-         x="82.932663"
-         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-         xml:space="preserve"><tspan
-           style="stroke-width:0.26458332"
-           y="39.909485"
-           x="82.932663"
-           id="tspan9136-4-0-9"
-           sodipodi:role="line">WiFi.begin()</tspan></text>
-    </g>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458335px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 105.83333,143.8064 V 265.60094 H 92.604167"
-       id="path9639-1-3-9"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458329px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 75.563113,54.244669 30.107867,-0.06083 0.0306,81.420331"
-       id="path10088"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,60.197908 v 3.96875"
-       id="path9639-1-3-1"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,76.072908 v 3.96875"
-       id="path9639-1-3-1-7"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,87.979158 v 3.96875"
-       id="path9639-1-3-1-7-9"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,99.885408 v 3.968752"
-       id="path9639-1-3-1-7-9-4"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,111.79166 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,127.66666 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.184947,143.63681 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.184947,155.54306 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3-9"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,131.63541 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-5"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 40.845696,26.549382 -17.114957,-0.09412 0.08176,105.180148 h 34.395832"
-       id="path10088-9"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker10923)"
-       d="m 24.291915,70.119854 h 16.45392"
-       id="path10088-92"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,167.48646 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3-9-5"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,179.52499 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3-9-5-1"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,199.36877 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3-9-5-1-3"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,213.92085 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3-9-5-1-3-9"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow2Mstart)"
-       d="m 57.679167,183.22916 -33.866667,0.13255 0.0073,40.48128 h 16.92604"
-       id="path10088-92-6"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,183.49374 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3-9-5-1-9"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,229.79582 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3-9-5-1-9-8"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,233.76457 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3-9-5-1-5"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker10931)"
-       d="m 58.7375,234.02852 33.866674,-0.13255 -0.0073,-40.48128 H 75.670833"
-       id="path10088-92-6-8"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,261.81041 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3-9-5-1-9-8-5"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,249.63957 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3-9-5-1-5-8"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 58.208333,265.77916 v 3.96875"
-       id="path9639-1-3-1-7-9-4-4-8-3-9-5-1-9-8-5-4"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker10937)"
-       d="m 58.7375,265.6464 33.734352,-0.0718 -0.007,-21.90474 H 75.538509"
-       id="path10088-92-6-8-3"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cccc" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="34.062004"
-       y="25.63336"
-       id="text10760"><tspan
-         sodipodi:role="line"
-         id="tspan10758"
-         x="34.062004"
-         y="25.63336"
-         style="stroke-width:0.26458332">YES</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="60.544109"
-       y="35.014442"
-       id="text10760-5"><tspan
-         sodipodi:role="line"
-         id="tspan10758-9"
-         x="60.544109"
-         y="35.014442"
-         style="stroke-width:0.26458332">NO</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="35.860859"
-       y="69.289612"
-       id="text10760-5-4"><tspan
-         sodipodi:role="line"
-         id="tspan10758-9-7"
-         x="35.860859"
-         y="69.289612"
-         style="stroke-width:0.26458332">NO</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="76.719864"
-       y="53.414608"
-       id="text10760-1"><tspan
-         sodipodi:role="line"
-         id="tspan10758-2"
-         x="76.719864"
-         y="53.414608"
-         style="stroke-width:0.26458332">YES</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="60.544109"
-       y="62.554363"
-       id="text10760-5-5"><tspan
-         sodipodi:role="line"
-         id="tspan10758-9-6"
-         x="60.544109"
-         y="62.554363"
-         style="stroke-width:0.26458332">NO</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="60.844864"
-       y="78.423164"
-       id="text10760-1-0"><tspan
-         sodipodi:role="line"
-         id="tspan10758-2-1"
-         x="60.844864"
-         y="78.423164"
-         style="stroke-width:0.26458332">YES</tspan></text>
-    <path
-       style="fill:none;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m 75.257782,121.71354 30.310608,0.13228"
-       id="path10088-92-3"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="76.719864"
-       y="120.88336"
-       id="text10760-1-3"><tspan
-         sodipodi:role="line"
-         id="tspan10758-2-13"
-         x="76.719864"
-         y="120.88336"
-         style="stroke-width:0.26458332">YES</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="60.544109"
-       y="130.02312"
-       id="text10760-5-5-6"><tspan
-         sodipodi:role="line"
-         id="tspan10758-9-6-0"
-         x="60.544109"
-         y="130.02312"
-         style="stroke-width:0.26458332">NO</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="60.544109"
-       y="201.46062"
-       id="text10760-5-5-6-4"><tspan
-         sodipodi:role="line"
-         id="tspan10758-9-6-0-0"
-         x="60.544109"
-         y="201.46062"
-         style="stroke-width:0.26458332">NO</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="76.719864"
-       y="192.32086"
-       id="text10760-1-3-5"><tspan
-         sodipodi:role="line"
-         id="tspan10758-2-13-1"
-         x="76.719864"
-         y="192.32086"
-         style="stroke-width:0.26458332">YES</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="60.844864"
-       y="231.8815"
-       id="text10760-1-3-7"><tspan
-         sodipodi:role="line"
-         id="tspan10758-2-13-5"
-         x="60.844864"
-         y="231.8815"
-         style="stroke-width:0.26458332">YES</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="35.860859"
-       y="222.74794"
-       id="text10760-5-5-6-4-8"><tspan
-         sodipodi:role="line"
-         id="tspan10758-9-6-0-0-2"
-         x="35.860859"
-         y="222.74794"
-         style="stroke-width:0.26458332">NO</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="76.719864"
-       y="242.46483"
-       id="text10760-1-3-7-8"><tspan
-         sodipodi:role="line"
-         id="tspan10758-2-13-5-2"
-         x="76.719864"
-         y="242.46483"
-         style="stroke-width:0.26458332">YES</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.17499995px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
-       x="60.544109"
-       y="251.73145"
-       id="text10760-5-5-6-4-8-0"><tspan
-         sodipodi:role="line"
-         id="tspan10758-9-6-0-0-2-9"
-         x="60.544109"
-         y="251.73145"
-         style="stroke-width:0.26458332">NO</tspan></text>
-  </g>
-</svg>




diff --git a/lib/AutoConnect-master/mkdocs/images/regexp.png b/lib/AutoConnect-master/mkdocs/images/regexp.png
deleted file mode 100644
index 2ee245b228711ec2bc5241118ddc9950e7cfb0b2..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/regexp.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/reset.png b/lib/AutoConnect-master/mkdocs/images/reset.png
deleted file mode 100644
index 7898c68c9e1cbfff991731655e60dca4a0e19bdd..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/reset.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/reset_r.png b/lib/AutoConnect-master/mkdocs/images/reset_r.png
deleted file mode 100644
index 545b67ef92f007f1e90efcdf22cd738eb6cd6937..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/reset_r.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/resetting.png b/lib/AutoConnect-master/mkdocs/images/resetting.png
deleted file mode 100644
index c8a230c811db2bd8129a59beef45cae0c24b8624..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/resetting.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/serial.png b/lib/AutoConnect-master/mkdocs/images/serial.png
deleted file mode 100644
index 0cb54a3b873cd33268b0ffaae3e8e4805f2e2527..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/serial.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/stat.png b/lib/AutoConnect-master/mkdocs/images/stat.png
deleted file mode 100644
index f722b4efa0e5b8799737e8530a5039037267340e..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/stat.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/statistics.png b/lib/AutoConnect-master/mkdocs/images/statistics.png
deleted file mode 100644
index 14fcc6afbb97b3b711849ac60ac1fd75471afa3f..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/statistics.png and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/images/upload.gif b/lib/AutoConnect-master/mkdocs/images/upload.gif
deleted file mode 100644
index 0ebbab3e3bf7a5965101466ee54fb782e87fdf5e..0000000000000000000000000000000000000000
Binary files a/lib/AutoConnect-master/mkdocs/images/upload.gif and /dev/null differ




diff --git a/lib/AutoConnect-master/mkdocs/index.md b/lib/AutoConnect-master/mkdocs/index.md
deleted file mode 100644
index cba9df33904ebbcff158adecdfbf793c6a1ccf64..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/index.md
+++ /dev/null
@@ -1,115 +0,0 @@
-# AutoConnect <small>for ESP8266/ESP32</small>
-
-An Arduino library for ESP8266/ESP32 WLAN configuration at run time with web interface.
-
-## Overview
-
-To the dynamic configuration for joining to WLAN with SSID and PSK accordingly. It an Arduino library united with *ESP8266WebServer* class for ESP8266 or *WebServer* class for ESP32.
-Easy implementing the Web interface constituting the WLAN for ESP8266/ESP32 WiFi connection. With this library to make a sketch easily which connects from ESP8266/ESP32 to the access point at runtime by the web interface without hard-coded SSID and password.
-
-<img style="display:inline-block;width:460px;margin-right:30px;" src="images/ov.png" /><span style="display:inline-block;width:182px;height:322px;border:solid 1px lightgrey;"><img data-gifffer="images/ov.gif" data-gifffer-width="180" style="width:180px;" /></span>
-
-### <i class="fa fa-arrow-circle-right" aria-hidden="true"></i> No need pre-coded SSID &amp; password
-
-<span class="lead">It is no needed hard-coding in advance the SSID and Password into the sketch to connect between ESP8266/ESP32 and WLAN. You can input SSID &amp; Password from a smartphone via the web interface at runtime.</span>
-
-### <i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Simple usage
-
-<span class="lead">AutoConnect control screen will be displayed automatically for establishing new connections. It aids by the <a href="https://en.wikipedia.org/wiki/Captive_portal">captive portal</a> when vested the connection cannot be detected.<br>By using the [AutoConnect menu](menu.md), to manage the connections convenient.</span>
-
-### <i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Store the established connection
-
-<span class="lead">The connection authentication data as credentials are saved automatically in EEPROM of ESP8266/ESP32 and You can select the past SSID from the [AutoConnect menu](menu.md).</span>
-
-### <i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Easy to embed in
-
-<span class="lead">AutoConnect can be placed easily in your sketch. It's "**begin**" and "**handleClient**" only.</span>
-
-### <i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Lives with your sketches
-
-<span class="lead">The sketches which provide the web page using ESP8266WebServer there is, AutoConnect will not disturb it. AutoConnect can use an already instantiated ESP8266WebServer object, or itself can assign it. This effect also applies to ESP32. The corresponding class for ESP32 will be the WebServer.</span>
-
-### <i class="fa fa-arrow-circle-right" aria-hidden="true"></i> Easy to add the [custom Web pages](acintro.md) <sup><sub>ENHANCED w/v0.9.7</sub></sup>
-
-<span class="lead">You can easily add your owned web pages that can consist of representative HTML elements and invoke them from the menu. Further it possible importing the custom Web pages declarations described with JSON which stored in PROGMEM, SPIFFS, or SD.</span>
-
-<div style="display:block;height:425px;">
-<img style="float:left;width:380px;" src="images/aux_json.png">
-<img style="float:left;margin-top:200px;margin-left:10px;margin-right:10px;width:32px;" src="images/arrow_right.png">
-<span style="float:left;width:242px;height:425px;border:1px solid lightgrey;"><img data-gifffer="images/aux_ov.gif" data-gifffer-width="240" data-gifffer-height="423" /></span>
-</div>
-
-## Installation
-
-### Requirements
-
-#### Supported hardware
-
-  * [X] Generic ESP8266 modules (applying the ESP8266 Community's Arduino core)
-  * [X] Adafruit HUZZAH ESP8266 (ESP-12)
-  * [X] ESP-WROOM-02
-  * [X] Heltec WiFi Kit 8
-  * [X] NodeMCU 0.9 (ESP-12) / NodeMCU 1.0 (ESP-12E)
-  * [X] Olimex MOD-WIFI-ESP8266
-  * [X] SparkFun Thing
-  * [X] SweetPea ESP-210
-  * [X] ESP32Dev Board (applying the Espressif's arduino-esp32 core)
-  * [X] SparkFun ESP32 Thing
-  * [X] WEMOS LOLIN D32
-  * [X] Ai-Thinker NodeMCU-32S
-  * [X] Heltec WiFi Kit 32
-  * [X] M5Stack
-  * [X] And other ESP8266/ESP32 modules supported by the Additional Board Manager URLs of the Arduino-IDE.
-
-!!! info "About flash size on the module"
-    The AutoConnect sketch size is relatively large. Large flash capacity is necessary. 512Kbyte (4Mbits) flash inclusion module such as ESP-01 is not recommended.
-
-#### Required libraries
-
-AutoConnect requires the following environment and libraries.
-
-<i class="fa fa-download"></i> <strong>Arduino IDE</strong>
-
-The current upstream at the 1.8 level or later is needed. Please install from the [official Arduino IDE download page](https://www.arduino.cc/en/Main/Software). This step is not required if you already have a modern version.
-
-<i class="fa fa-download"></i> <strong>ESP8266 Arduino core</strong>
-
-AutoConnect targets sketches made on the assumption of [ESP8266 Community's Arduino core](https://github.com/esp8266/Arduino). Stable 2.4.0 or higher required and the [latest release](https://github.com/esp8266/Arduino/releases/latest) is recommended.  
-Install third-party platform using the *Boards Manager* of Arduino IDE. Package URL is http://arduino.esp8266.com/stable/package_esp8266com_index.json
-
-<i class="fa fa-download"></i> <strong>ESP32 Arduino core</strong>
-
-Also, to apply AutoConnect to ESP32, the [arduino-esp32 core](https://github.com/espressif/arduino-esp32) provided by Espressif is needed. Stable 1.0.1 or required and the [latest release](https://github.com/espressif/arduino-esp32/releases/latest) is recommended.  
-Install third-party platform using the *Boards Manager* of Arduino IDE. You can add multiple URLs into *Additional Board Manager URLs* field, separating them with commas. Package URL is https://dl.espressif.com/dl/package_esp32_index.json for ESP32.
-
-<i class="fa fa-download"></i> <strong>Additional library (Required)</strong>
-
-The [PageBuilder](https://github.com/Hieromon/PageBuilder) library to build HTML for ESP8266WebServer is needed.  
-To install the PageBuilder library into your Arduino IDE, you can use the *Library Manager*. Select the board of ESP8266 series in the Arduino IDE, open the library manager and search keyword '**PageBuilder**' with the topic '**Communication**', then you can see the *PageBuilder*. The latest version is required **1.3.3** **later**.[^1]
-[^1]:Since AutoConnect v0.9.8, PageBuilder v1.3.3 later is required.
-
-<img src="images/lm.png" width="640"/>
-
-<i class="fa fa-download"></i> <strong>Additional library (Optional)</strong>
-
-By adding the [ArduinoJson](https://github.com/bblanchon/ArduinoJson) library, AutoConnect will be able to handle the [**custom Web pages**](acintro.md) described with JSON. Since AutoConnect v0.9.7 you can insert user-owned web pages that can consist of representative HTML elements as styled TEXT, INPUT, BUTTON, CHECKBOX, SELECT, SUBMIT and invoke them from the AutoConnect menu. These HTML elements can be added by sketches using the AutoConnect API. Further it possible importing the custom Web pages declarations described with JSON which stored in PROGMEM, SPIFFS, or SD. [ArduinoJson](https://arduinojson.org/) is required to use this feature.[^2] AutoConnect can work with ArduinoJson both [version 5](https://arduinojson.org/v5/doc/) and [version 6](https://arduinojson.org/v6/doc/).
-[^2]:Using the AutoConnect API natively allows you to sketch custom Web pages without JSON.
-
-### Install the AutoConnect
-
-Clone or download from the [AutoConnect GitHub repository](https://github.com/Hieromon/AutoConnect).
-
-<img src="images/gitrepo.png" width="640"/>
-
-When you select Download, you can import it to Arduino IDE immediately. After downloaded, the AutoConnect-master.zip file will be saved in your download folder. Then in the Arduino IDE, navigate to *"Sketch > Include Library"*. At the top of the drop down list, select the option to *"Add .ZIP Library..."*. Details for [Arduino official page](https://www.arduino.cc/en/Guide/Libraries#toc4).
-
-<img src="images/ins_lib.png" />
-
-!!! info "Supported by Library manager."
-    AutoConnect was added to the Arduino IDE library manager. It can be used with the PlatformIO library also.
-
-<script>
-  window.onload = function() {
-    Gifffer();
-  };
-</script>




diff --git a/lib/AutoConnect-master/mkdocs/js/gifffer.min.js b/lib/AutoConnect-master/mkdocs/js/gifffer.min.js
deleted file mode 100644
index c46ec7d28d6a45c3e383ffd3c99670aaa4407109..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/js/gifffer.min.js
+++ /dev/null
@@ -1 +0,0 @@
-(function webpackUniversalModuleDefinition(root,factory){if(typeof exports==="object"&&typeof module==="object")module.exports=factory();else if(typeof define==="function"&&define.amd)define("Gifffer",[],factory);else if(typeof exports==="object")exports["Gifffer"]=factory();else root["Gifffer"]=factory()})(this,function(){if(typeof window==="undefined"||typeof document==="undefined"){return}var d=document;var playSize=60;var Gifffer=function(options){var images,i=0,gifs=[];images=d.querySelectorAll("[data-gifffer]");for(;i<images.length;++i)process(images[i],gifs,options);return gifs};function formatUnit(v){return v+(v.toString().indexOf("%")>0?"":"px")}function parseStyles(styles){var stylesStr="";for(prop in styles)stylesStr+=prop+":"+styles[prop]+";";return stylesStr}function createContainer(w,h,el,altText,opts){var alt;var con=d.createElement("BUTTON");var cls=el.getAttribute("class");var id=el.getAttribute("id");var playButtonStyles=opts&&opts.playButtonStyles?parseStyles(opts.playButtonStyles):["width:"+playSize+"px","height:"+playSize+"px","border-radius:"+playSize/2+"px","background:rgba(0, 0, 0, 0.3)","position:absolute","top:50%","left:50%","margin:-"+playSize/2+"px"].join(";");var playButtonIconStyles=opts&&opts.playButtonIconStyles?parseStyles(opts.playButtonIconStyles):["width: 0","height: 0","border-top: 14px solid transparent","border-bottom: 14px solid transparent","border-left: 14px solid rgba(0, 0, 0, 0.5)","position: absolute","left: 26px","top: 16px"].join(";");cls?con.setAttribute("class",el.getAttribute("class")):null;id?con.setAttribute("id",el.getAttribute("id")):null;con.setAttribute("style","position:relative;cursor:pointer;background:none;border:none;padding:0;");con.setAttribute("aria-hidden","true");var play=d.createElement("DIV");play.setAttribute("class","gifffer-play-button");play.setAttribute("style",playButtonStyles);var trngl=d.createElement("DIV");trngl.setAttribute("style",playButtonIconStyles);play.appendChild(trngl);if(altText){alt=d.createElement("p");alt.setAttribute("class","gifffer-alt");alt.setAttribute("style","border:0;clip:rect(0 0 0 0);height:1px;overflow:hidden;padding:0;position:absolute;width:1px;");alt.innerText=altText+", image"}con.appendChild(play);el.parentNode.replaceChild(con,el);altText?con.parentNode.insertBefore(alt,con.nextSibling):null;return{c:con,p:play}}function calculatePercentageDim(el,w,h,wOrig,hOrig){var parentDimW=el.parentNode.offsetWidth;var parentDimH=el.parentNode.offsetHeight;var ratio=wOrig/hOrig;if(w.toString().indexOf("%")>0){w=parseInt(w.toString().replace("%",""));w=w/100*parentDimW;h=w/ratio}else if(h.toString().indexOf("%")>0){h=parseInt(h.toString().replace("%",""));h=h/100*parentDimW;w=h*ratio}return{w:w,h:h}}function process(el,gifs,options){var url,con,c,w,h,duration,play,gif,playing=false,cc,isC,durationTimeout,dims,altText;url=el.getAttribute("data-gifffer");w=el.getAttribute("data-gifffer-width");h=el.getAttribute("data-gifffer-height");duration=el.getAttribute("data-gifffer-duration");altText=el.getAttribute("data-gifffer-alt");el.style.display="block";c=document.createElement("canvas");isC=!!(c.getContext&&c.getContext("2d"));if(w&&h&&isC)cc=createContainer(w,h,el,altText,options);el.onload=function(){if(!isC)return;w=w||el.width;h=h||el.height;if(!cc)cc=createContainer(w,h,el,altText,options);con=cc.c;play=cc.p;dims=calculatePercentageDim(con,w,h,el.width,el.height);gifs.push(con);con.addEventListener("click",function(){clearTimeout(durationTimeout);if(!playing){playing=true;gif=document.createElement("IMG");gif.setAttribute("style","width:100%;height:100%;");gif.setAttribute("data-uri",Math.floor(Math.random()*1e5)+1);setTimeout(function(){gif.src=url},0);con.removeChild(play);con.removeChild(c);con.appendChild(gif);if(parseInt(duration)>0){durationTimeout=setTimeout(function(){playing=false;con.appendChild(play);con.removeChild(gif);con.appendChild(c);gif=null},duration)}}else{playing=false;con.appendChild(play);con.removeChild(gif);con.appendChild(c);gif=null}});c.width=dims.w;c.height=dims.h;c.getContext("2d").drawImage(el,0,0,dims.w,dims.h);con.appendChild(c);con.setAttribute("style","position:relative;cursor:pointer;width:"+dims.w+"px;height:"+dims.h+"px;background:none;border:none;padding:0;");c.style.width="100%";c.style.height="100%";if(w.toString().indexOf("%")>0&&h.toString().indexOf("%")>0){con.style.width=w;con.style.height=h}else if(w.toString().indexOf("%")>0){con.style.width=w;con.style.height="inherit"}else if(h.toString().indexOf("%")>0){con.style.width="inherit";con.style.height=h}else{con.style.width=dims.w+"px";con.style.height=dims.h+"px"}};el.src=url}return Gifffer});
\ No newline at end of file




diff --git a/lib/AutoConnect-master/mkdocs/license.md b/lib/AutoConnect-master/mkdocs/license.md
deleted file mode 100644
index 2fb88ba79e362e662d21af52d083582e3d7af9d4..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/license.md
+++ /dev/null
@@ -1,17 +0,0 @@
-**MIT License**
-
-Copyright &copy; 2018-2019 Hieromon Ikasamo
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-IN THE SOFTWARE.
-
-**Acknowledgments**
-
-Each of the following libraries used by AutoConnect is under its license:
-
-- The **Luxbar** is licensed under the MIT License. https://github.com/balzss/luxbar
-- **ArduinoJson** is licensed under the MIT License. https://arduinojson.org/




diff --git a/lib/AutoConnect-master/mkdocs/lsbegin.md b/lib/AutoConnect-master/mkdocs/lsbegin.md
deleted file mode 100644
index 0c63726374ca119932517eda137841ec60b18635..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/lsbegin.md
+++ /dev/null
@@ -1,23 +0,0 @@
-## AutoConnect::begin logic sequence
-
-Several parameters as follows of [AutoConnectConfig](apiconfig.md) affect the behavior of [AutoConnect::begin](api.md#begin) function. Each parameter affects the behaves in interacted order with the priority and apply to the logic sequence of [AutoConnect::begin](api.md#begin).
-
-- [immediateStart](apiconfig.md#immediatestart) : The captive portal start immediately, without first WiFi.begin.
-- [autoReconenct](apiconfig.md#autoreconnect) : Attempt re-connect with past SSID by saved credential.
-- [portalTimeout](apiconfig.md#portaltimeout) : Time out limit for the portal.
-- [retainPortal](apiconfig.md#retainportal) : Keep DNS server functioning for the captive portal.
-
-You can use these parameters in combination with sketch requirements and need to understand correctly the behavior caused by the parameters. The following chart shows the AutoConnect::begin logic sequence including the effect of these parameters.
-
-<img align="center" src="images/process_begin.svg">
-
-For example, [AutoConnect::begin](api.md#begin) will not exits without the [**portalTimeout**](apiconfig.md#portaltimeout) while the connection not establishes, but WebServer will start to work. A DNS server that detects the probe of the captive portal is also effective. So, your sketch may work seemingly, but it will close with inside a loop of the [AutoConnect::begin](api.md#begin) function. Especially when invoking [AutoConnect::begin](api.md#begin) in the **setup()**, execution control does not pass to the **loop()**.
-
-As different scenes, you may use the [**immediateStart**](apiconfig.md#immediatestart) effectively. Equipped the external switch to activate the captive portal with the ESP module, combined with the [**portalTime**](apiconfig.md#portaltimeout) and the [**retainPortal**](apiconfig.md#retainportal) it will become WiFi active connection feature. You can start [AutoConnect::begin](api.md#begin) at any point in the **loop()**, which allows your sketch can behave both the offline mode and the online mode.
-
-The [**retainPortal**](apiconfig.md#retainportal) option allows the DNS server to continue operation after exiting from [AutoConnect::begin](api.md#begin). AutoConnect traps captive portal detection from the client and redirects it to the AutoConnect menu. That trap will answer all unresolved addresses with SoftAP's IP address. If the URI handler for the source request is undefined, it returns a 302 response with `SoftAPIP/_ac` to the client. This is the mechanism of AutoConnect's captive portal. Captive portal probes will frequently occur while you are attempting on the client device's WiFi connection Apps and these implementations are varied each OS, so it not realistic to identify all probing URIs. Therefore, while retainPortal is enabled, it is not preferable to executing the sketch under the WiFi connection Apps on the client device. (Probably not work correctly) You need to exit from the WiFi connection Apps once.
-
-Please consider these kinds of influence when you make sketches.
-
-!!! info "The AutoConnect::begin 3rd parameter"
-    Another parameter as the [3rd parameter](api.md#begin) of AutoConnect::begin related to timeout constrains the connection wait time after WiFi.begin. It is the **CONNECTED** judgment of the above chart that it has an effect.




diff --git a/lib/AutoConnect-master/mkdocs/menu.md b/lib/AutoConnect-master/mkdocs/menu.md
deleted file mode 100644
index 5851450e1f4311e61ab2eb85a965d908f892c6c3..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/menu.md
+++ /dev/null
@@ -1,74 +0,0 @@
-!!! info "Luxbar"
-    The AutoConnect menu is developed using the [LuxBar](https://github.com/balzss/luxbar) which is licensed under the MIT License. See the [License](license.md).
-
-## <i class="fa fa-external-link"></i> Where the from
-
-The AutoConnect menu appears when you access the **AutoConnect root path**. It is assigned "**/_ac**" located on the *local IP address* of ESP8266/ESP32 module by default. This location can be changed in the sketch. The following screen will appear at access to `http://{localIP}/_ac` as the root path. This is the statistics of the current WiFi connection. You can access the menu from the here, to invoke it tap <i class="fa fa-bars"></i> at right on top. (e.g. `http://192.168.244.1/_ac` for SoftAP mode.)
-
-<img src="images/ac.png" style="border-style:solid;border-width:1px;border-color:lightgrey;width:280px;" />
-
-!!! note "What's the local IP?"
-    A local IP means Local IP at connection established or SoftAP's IP.
-
-## <i class="fa fa-bars"></i> Right on top
-
-Currently, AutoConnect supports four menus. Undermost menu as "HOME" returns to the home path of its sketch.
-
-- **Configure new AP**: Configure SSID and Password for new access point.
-- **Open SSIDs**: Opens the past SSID which has been established connection from EEPROM.
-- **Disconnect**: Disconnects current connection.
-- **Reset...**: Rest the ESP8266/ESP32 module.
-- **HOME**: Return to user home page.
-
-<img src="images/menu.png" style="width:280px;" />
-
-## <i class="fa fa-bars"></i> Configure new AP
-
-Scan all available access point in the vicinity and display it. Strength and security of the detected AP are marked. The <i class="fa fa-lock"></i> is indicated for the SSID that needs a security key. "**Hidden:**" means the number of hidden SSIDs discovered.  
-Enter SSID and Passphrase and tap "**apply**" to starts WiFi connection. 
-
-<img src="images/newap.png" style="border-style:solid;border-width:1px;border-color:lightgrey;width:280px;" />
-
-## <i class="fa fa-bars"></i> Open SSIDs
-
-Once it was established WiFi connection, its SSID and password will be saved in EEPROM of ESP8266/ESP32 automatically. The **Open SSIDs** menu reads the saved SSID credentials from the EEPROM. The stored credential data are listed by the SSID as shown below. Its label is a clickable button. Tap the SSID button, starts WiFi connection it.
-
-<img src="images/open.png" style="border-style:solid;border-width:1px;border-color:lightgrey;width:280px;" />
-
-## <i class="fa fa-bars"></i> Disconnect
-
-Disconnect ESP8266/ESP32 from the current connection. It can also reset the ESP8266/ESP32 automatically after disconnection by instructing with using [API](api.md#autoreset) in the sketch.
-
-After tapping "Disconnect", you will not be able to reach the AutoConnect menu. Once disconnected, you will need to set the SSID again for connecting the WLAN. 
-
-## <i class="fa fa-bars"></i> Reset...
-
-Reset the ESP8266/ESP32 module, it will start rebooting. After rebooting complete, the ESP8266/ESP32 module begins establishing the previous connection with WIFI_STA mode, and *esp8266ap* or *esp32ap* of an access point will disappear from WLAN.
-
-<img src="images/resetting.png" style="width:280px;" />
-
-!!! warning "Not every ESP8266 module will be rebooted normally"
-    The Reset menu is using the **ESP.reset()** function for ESP8266. This is an almost hardware reset. In order to resume the sketch normally, the [state of GPIO0](https://github.com/esp8266/esp8266-wiki/wiki/Boot-Process#esp-boot-modes) is important. Since this depends on the circuit implementation for each module, not every module will be rebooted normally. See also [FAQ](faq.md#hang-up-after-reset).
-
-## <i class="fa fa-bars"></i> Custom menu items
-
-The menu items of the custom Web page line up at the below in the AutoConnect menu if the custom Web pages are joined. Details for [Custom Web pages in AutoConnect menu](acintro.md#custom-web-pages-in-autoconnectmenu).
-
-## <i class="fa fa-bars"></i> HOME
-
-A **HOME** item located at the bottom of the menu list is a link to the home path. The URI as the home path is `/` by default, and it is defined by `AUTOCONNECT_HOMEURI` with **AutoConnectDefs.h** file.
-
-```cpp
-#define AUTOCONNECT_HOMEURI     "/"
-```
-
-You can change the HOME path using the AutoConnect API. The [**AutoConnect::home**](api.md#home) function sets the URI as a link of the HOME item of the AutoConnect menu.
-
-## <i class="fa fa-bars"></i> by attaching AutoConnect menu
-
-The AutoConnect menu can contain HTML pages of your owns sketch as custom items. It works for HTML pages implemented by **ESP8266WebServer::on** handler or **WebServer::on** handler for ESP32. That is, you can make it as menu items to invoke the legacy web page. The below screenshot is the result of adding an example sketch for the ESP8266WebServer library known as [FSBrowser](https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WebServer/examples/FSBrowser) to the AutoConnect menu item. It adds Edit and List items with little modification to the legacy sketch code.
-
-<div style="float:left;width:auto;height:420px;"><img style="width:auto;height:420px;" src="images/fsbmenu.png"></div>
-<img style="margin-left:70px;width:auto;height:420px;" src="images/fsbmenu_expand.png">
-
-You can extend the AutoConnect menu to improve the original sketches and according to the procedure described in section [*Advanced Usage*](advancedusage.md#casts-the-html-pages-to-be-add-on-into-the-menu).




diff --git a/lib/AutoConnect-master/mkdocs/menuize.md b/lib/AutoConnect-master/mkdocs/menuize.md
deleted file mode 100644
index 21cdaaafcde23df1e2ecaf74161f9f7caec9e2be..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/menuize.md
+++ /dev/null
@@ -1,53 +0,0 @@
-## What menus can be made using AutoConnect
-
-AutoConnect generates a menu dynamically depending on the instantiated [AutoConnectAux](acintro.md#how-it-works) at the sketch executing time. Usually, it is a collection of [AutoConnectElement](acelements.md). In addition to this, you can generate a menu from only AutoConnectAux, without AutoConnectElements.<br>In other words, you can easily create a built-in menu featuring the WiFi connection facility embedding the legacy web pages.
-
-## Basic mechanism of menu generation
-
-The sketch can display the [AutoConnect menu](menu.md) by following three patterns depending on AutoConnect-API usage.
-
-<i class="fa fa-desktop"></i>&ensp;**Basic menu**
-:    It is the most basic menu for only connecting WiFi. Sketch can automatically display this menu with the basic call sequence of the AutoConnect API which invokes [AutoConnect::begin](api.md#begin) and [AutoConnect::handleClient](api.md#handleclient).
-
-<i class="fa fa-desktop"></i>&ensp;**Extra menu with custom Web pages which is consisted by [AutoConnectElements](acelements.md)**
-:    It is an extended menu that appears when the sketch consists of the custom Web pages with [AutoConnectAux](acintro.md#how-it-works) and AutoConnectElements. Refer to section [*Custom Web pages section*](acintro.md#custom-web-pages-in-autoconnect-menu).
-
-<i class="fa fa-desktop"></i>&ensp;**Extra menu which contains legacy pages**
-:    It is for the legacy sketches using the **on** handler of ESP8266WebServer/WebServer(for ESP32) class natively and looks the same as the extra menu as above.
-
-The mechanism to generate the AutoConnect menu is simple. It will insert the item as `<li>` tag generated from the [**title**](apiaux.md#autoconnectaux) and [**uri**](apiaux.md#autoconnectaux) member variable of the AutoConnectAux object to the menu list of AutoConnect's built-in HTML. Therefore, the legacy sketches can invoke the web pages from the AutoConnect menu with just declaration the title and URI to AutoConnectAux.
-
-## Place the item for the legacy sketches on the menu
-
-To implement this with your sketch, use only the [AutoConnectAux](apiaux.md#autoconnectaux) constructed with the title and URI of that page. [AutoConnectElements](acelements.md) is not required.
-
-The AutoConnect library package contains an example sketch for ESP8266WebServer known as FSBrowser. Its example is a sample implementation that supports AutoConnect without changing the structure of the original FSBrowser and has the menu item for **Edit** and **List**.
-
-<span style="display:block;margin-left:auto;margin-right:auto;width:282px;height:492px;border:1px solid lightgrey;"><img data-gifffer="images/aux_fsbrowser.gif" data-gifffer-height="490" data-gifffer-width="280" /></span>
-
-The changes I made to adapt the FSBrowser to the AutoConnect menu are slight as follows:
-
-1. Add AutoConnect declaration.
-2. Add the menu item named "**Edit**" and "**List**" of AutoConnectAux as each page.
-3. Replace the instance of ESP8266WebServer to AutoConnect.
-4. Change the menu title to FSBrowser using [AutoConnectConfig::title](apiconfig.md#title).
-5. Join the legacy pages to AutoConnect declared at step #1 using [AutoConnect::join](api.md#join).<br>Joining multiple at one time with the [list initialization](https://en.cppreference.com/w/cpp/language/list_initialization) for [std::vector](https://ja.cppreference.com/w/cpp/container/vector/vector).
-6. According to the basic procedure of AutoConnect.<br>Establish a connection with [AutoConnect::begin](api.md#begin) and perform [AutoConnect::handleClient](api.md#handleclient) in **loop()**.
-
-<i class="fa fa-code"></i>&ensp;**Modification for FSBrowser** <small>(a part  of sketch code)</small>
-
-<div style="overflow:auto"><img style="width:auto;max-width:none;height:840px" src="images/fsbrowser_ba.svg" /></div>
-
-... and embeds a hyperlink with an [icon](apiextra.md#icons) in the bottom of the body section of *index.htm* contained in the data folder to jump to the AutoConnect menu.
-
-```html
-<p style="padding-top:15px;text-align:center">
-  <a href="/_ac"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAC2klEQVRIS61VvWsUQRSfmU2pon9BUIkQUaKFaCBKgooSb2d3NSSFKbQR/KrEIiIKBiGF2CgRxEpjQNHs7mwOUcghwUQ7g58IsbGxEBWsb2f8zR177s3t3S2cA8ftzPu993vzvoaSnMu2vRKlaqgKp74Q/tE8qjQPyHGcrUrRjwlWShmDbFMURd/a6TcQwNiYUmpFCPElUebcuQ2vz6aNATMVReHEPwzfSSntDcNwNo2rI+DcvQzhpAbA40VKyV0p1Q9snzBG1qYVcYufXV1sREraDcxpyHdXgkfpRBj6Uwm2RsC5dxxmZ9pdOY9cKTISRcHTCmGiUCh4fYyplTwG2mAUbtMTBMHXOgK9QfyXEZr+TkgQ1oUwDA40hEgfIAfj+HuQRaBzAs9eKyUZ5Htx+T3ZODKG8DzOJMANhmGomJVMXPll+hx9UUAlzZrJJ4QNCDG3VEfguu7mcpmcB/gkBOtShhQhchAlu5jlLUgc9ENgyP5gf9+y6LTv+58p5zySkgwzLNOIGc8sEoT1Lc53NMlbCQQuvMxeCME1NNPVVkmH/i3IzzXDtCSA0qQQwZWOCJDY50jsQRjJmkslEOxvTcDRO6zPxOh5xZglKkYLhWM9jMVnkIsTyMT6NBj7IbOCEjm6HxNVVTo2WXqEWJZ1T8rytB6GxizyDkPhWVpBqfiXUtbo/HywYJSpA9kMamNNPZ71R9Hcm+TMHHZNGw3EuraXEUldbfvw25UdOjqOt+JhMwJd7+jSTpZaEiIcaCDwPK83jtWnTkwnunFMtxeL/ge9r4XItt1RNNaj/0GAcV2bR3U5sG3nEh6M61US+Qrfd9Bs31GGulI2GOS/8dgcQZV1w+ApjIxB7TDwF9GcNzJzoA+rD0/8HvPnXQJCt2qFCwbBTfRI7UyXumWVt+HJ9NO4XI++bdsb0YyrqXmlh+AWOLHaLqS5CLQR5EggR3YlcVS9gKeH2hnX8r8Kmi1CAsl36QAAAABJRU5ErkJggg==" border="0" title="AutoConnect menu" alt="AutoConnect menu"/></a>
-</p>
-```
-
-<script>
-  window.onload = function() {
-    Gifffer();
-  };
-</script>




diff --git a/lib/AutoConnect-master/mkdocs/wojson.md b/lib/AutoConnect-master/mkdocs/wojson.md
deleted file mode 100644
index 688abbe8b30557a743e9e9de7a0c9745db60dfbb..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs/wojson.md
+++ /dev/null
@@ -1,204 +0,0 @@
-## Suppress increase in memory consumption
-
-Custom Web page processing consumes a lot of memory. AutoConnect will take a whole string of the JSON document for the custom Web pages into memory. The required buffer size for the JSON document of example sketch *mqttRSSI* reaches approximately 3000 bytes. And actually, it needs twice the heap area. Especially this constraint will be a problem with the ESP8266 which has a heap size poor.
-
-AutoConnect can handle custom Web pages without using JSON. In that case, since the ArduinoJson library will not be bound, the sketch size will also be reduced.
-
-## Writing the custom Web pages without JSON
-
-To handle the custom Web pages without using JSON, follow the steps below.
-
-1. Create or define [AutoConnectAux](apiaux.md) for each page.
-2. Create or define [AutoConnectElement(s)](acelements.md).
-3. Add [AutoConnectElement(s)](acelements.md) to AutoConnectAux.
-4. Create more AutoConnectAux containing [AutoConnectElement(s)](acelements.md), if necessary.
-5. Register the request handlers for the custom Web pages.
-6. [Join](api.md#join) prepared AutoConnectAux(s) to AutoConnect.
-7. Invoke [AutoConnect::begin()](api.md#begin).
-
-In addition to the above procedure, to completely cut off for binding with the ArduinoJson library, turn off the ArduinoJson use indicator which is declared by the [AutoConnect definitions](api.md#defined-macros). Its declaration is in **AutoConnectDefs.h** file.[^1]
-
-[^1]:Detaching the ArduinoJson library reduces the sketch size by approximately 10K bytes.
-
-```cpp
-// Comment out the AUTOCONNECT_USE_JSON macro to detach the ArduinoJson.
-#define AUTOCONNECT_USE_JSON
-```
-
-!!! caution "JSON processing will be disabled"
-    Commenting out the **AUTOCONNECT_USE_JSON** macro invalidates all functions related to JSON processing. If the sketch is using the JSON function, it will result in a compile error.
-
-## Implementation example without ArduinoJson
-
-The code excluding JSON processing from the mqttRSSI sketch attached to the library is as follows. <small>(It is a part of code. Refer to mqttRSSI_NA.ino for the whole sketch.)</small>
-
-<i class="fa fa-code"></i> The JSON document for mqttRSSI
-
-```json
-[
-  {
-    "title": "MQTT Setting",
-    "uri": "/mqtt_setting",
-    "menu": true,
-    "element": [
-      {
-        "name": "header",
-        "type": "ACText",
-        "value": "<h2>MQTT broker settings</h2>",
-        "style": "text-align:center;color:#2f4f4f;padding:10px;"
-      },
-      {
-        "name": "caption",
-        "type": "ACText",
-        "value": "Publishing the WiFi signal strength to MQTT channel. RSSI value of ESP8266 to the channel created on ThingSpeak",
-        "style": "font-family:serif;color:#4682b4;"
-      },
-      {
-        "name": "mqttserver",
-        "type": "ACInput",
-        "value": "",
-        "label": "Server",
-        "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$",
-        "placeholder": "MQTT broker server"
-      },
-      {
-        "name": "channelid",
-        "type": "ACInput",
-        "label": "Channel ID",
-        "pattern": "^[0-9]{6}$"
-      },
-      {
-        "name": "userkey",
-        "type": "ACInput",
-        "label": "User Key"
-      },
-      {
-        "name": "apikey",
-        "type": "ACInput",
-        "label": "API Key"
-      },
-      {
-        "name": "newline",
-        "type": "ACElement",
-        "value": "<hr>"
-      },
-      {
-        "name": "uniqueid",
-        "type": "ACCheckbox",
-        "value": "unique",
-        "label": "Use APID unique",
-        "checked": false
-      },
-      {
-        "name": "period",
-        "type": "ACRadio",
-        "value": [
-          "30 sec.",
-          "60 sec.",
-          "180 sec."
-        ],
-        "label": "Update period",
-        "arrange": "vertical",
-        "checked": 1
-      },
-      {
-        "name": "newline",
-        "type": "ACElement",
-        "value": "<hr>"
-      },
-      {
-        "name": "hostname",
-        "type": "ACInput",
-        "value": "",
-        "label": "ESP host name",
-        "pattern": "^([a-zA-Z0-9]([a-zA-Z0-9-])*[a-zA-Z0-9]){1,32}$"
-      },
-      {
-        "name": "save",
-        "type": "ACSubmit",
-        "value": "Save&amp;Start",
-        "uri": "/mqtt_save"
-      },
-      {
-        "name": "discard",
-        "type": "ACSubmit",
-        "value": "Discard",
-        "uri": "/"
-      }
-    ]
-  },
-  {
-    "title": "MQTT Setting",
-    "uri": "/mqtt_save",
-    "menu": false,
-    "element": [
-      {
-        "name": "caption",
-        "type": "ACText",
-        "value": "<h4>Parameters saved as:</h4>",
-        "style": "text-align:center;color:#2f4f4f;padding:10px;"
-      },
-      {
-        "name": "parameters",
-        "type": "ACText"
-      },
-      {
-        "name": "clear",
-        "type": "ACSubmit",
-        "value": "Clear channel",
-        "uri": "/mqtt_clear"
-      }
-    ]
-  }
-]
-```
-<span style="margin-right:6px;margin-top:2px;"><img align="middle" width="32" height="32" src="images/arrow_down.png"></span><i class="fa fa-code"></i> Exclude the JSON and replace to the AutoConnectElements natively
-
-```cpp
-// In the declaration,
-// Declare AutoConnectElements for the page asf /mqtt_setting
-ACText(header, "<h2>MQTT broker settings</h2>", "text-align:center;color:#2f4f4f;padding:10px;");
-ACText(caption, "Publishing the WiFi signal strength to MQTT channel. RSSI value of ESP8266 to the channel created on ThingSpeak", "font-family:serif;color:#4682b4;");
-ACInput(mqttserver, "", "Server", "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$", "MQTT broker server");
-ACInput(channelid, "", "Channel ID", "^[0-9]{6}$");
-ACInput(userkey, "", "User Key");
-ACInput(apikey, "", "API Key");
-ACElement(newline, "<hr>");
-ACCheckbox(uniqueid, "unique", "Use APID unique");
-ACRadio(period, { "30 sec.", "60 sec.", "180 sec." }, "Update period", AC_Vertical, 1);
-ACSubmit(save, "Start", "mqtt_save");
-ACSubmit(discard, "Discard", "/");
-
-// Declare the custom Web page as /mqtt_setting and contains the AutoConnectElements
-AutoConnectAux mqtt_setting("/mqtt_setting", "MQTT Setting", true, {
-  header,
-  caption,
-  mqttserver,
-  channelid,
-  userkey,
-  apikey,
-  newline,
-  uniqueid,
-  period,
-  newline,
-  save,
-  discard
-});
-
-// Declare AutoConnectElements for the page as /mqtt_save
-ACText(caption2, "<h4>Parameters available as:</h4>", "text-align:center;color:#2f4f4f;padding:10px;");
-ACText(parameters);
-ACSubmit(clear, "Clear channel", "/mqtt_clear");
-
-// Declare the custom Web page as /mqtt_save and contains the AutoConnectElements
-AutoConnectAux mqtt_save("/mqtt_save", "MQTT Setting", false, {
-  caption2,
-  parameters,
-  clear
-});
-
-// In the setup(),
-// Join the custom Web pages and performs begin
-  portal.join({ mqtt_setting, mqtt_save });
-  portal.begin();
-```
\ No newline at end of file




diff --git a/lib/AutoConnect-master/mkdocs.yml b/lib/AutoConnect-master/mkdocs.yml
deleted file mode 100644
index 2af3dc5164091d77bfd440b4e0a0cce7ec696387..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/mkdocs.yml
+++ /dev/null
@@ -1,108 +0,0 @@
-# Project information
-site_name: 'AutoConnect for ESP8266/ESP32'
-site_description: 'ESP8266/ESP32 WLAN configuration at run time with web interface'
-site_author: 'Hieromon Ikasamo'
-site_url: 'https://Hieromon.github.io/AutoConnect/'
-
-# Docs
-docs_dir: 'mkdocs'
-
-# Pages
-nav:
-  - 'Overview' : index.md
-  - 'Getting started' : gettingstarted.md
-  - 'AutoConnect menu' : menu.md
-  - 'Basic usage' : basicusage.md
-  - 'Advanced usage' : advancedusage.md
-  - 'Custom Web pages' :
-    - 'Custom Web pages with AutoConnect' : acintro.md
-    - 'AutoConnectElements' : acelements.md
-    - 'Custom Web pages with JSON' : acjson.md
-    - 'Handling the custom Web pages' : achandling.md
-  - 'Library APIs' :
-    - 'AutoConnect API': api.md
-    - 'AutoConnectAux API': apiaux.md
-    - 'AutoConnectConfig API': apiconfig.md
-    - 'AutoConnectElements API': apielements.md
-    - 'Something extra': apiextra.md
-  - 'Examples' :
-    - 'How to embed': howtoembed.md
-    - 'Tips for data conversion': datatips.md
-    - 'Attach the menu': menuize.md
-    - 'Custom Web pages w/o JSON': wojson.md
-  - 'Appendix':
-    - 'Inside AutoConnect::begin': lsbegin.md
-    - 'Saved credentail access': credit.md
-    - 'File upload handler': acupload.md
-    - 'Custom colorized': colorized.md
-  - 'FAQ' : faq.md
-  - 'Change log' : changelog.md
-  - 'License' : license.md
-
-# Repository
-repo_name: 'Hieromon/AutoConnect'
-repo_url: 'https://github.com/Hieromon/AutoConnect'
-edit_uri: ""
-
-# Copyright
-copyright: 'Copyright &copy; 2018-2019 Hieromon Ikasamo'
-
-# Configuration
-use_directory_urls: false
-theme:
-  name: 'material'
-  feature:
-    tabs: false
-  language: 'en'
-  logo: 'images/arduino-logo.svg'
-  palette:
-    primary: 'indigo'
-    accent: 'indigo'
-  font:
-    text: 'Roboto'
-    code: 'Roboto Mono'
-
-# Customization
-extra_css:
-  - 'css/paragraph.css'
-  - 'css/extra.css'
-  - 'https://use.fontawesome.com/releases/v5.6.1/css/all.css'
-extra_javascript:
-  - 'js/gifffer.min.js'
-extra:
-  social:
-    - type: 'github'
-      link: 'https://github.com/Hieromon'
-    - type: 'twitter'
-      link: 'https://twitter.com/hieromon'
-
-# Google Analytics
-google_analytics:
-  - !!python/object/apply:os.getenv ["GOOGLE_ANALYTICS_KEY"]
-  - 'auto'
-
-# Extensions
-markdown_extensions:
-  - admonition
-  - attr_list
-  - def_list
-  - codehilite:
-      guess_lang: false
-      linenums: none
-      noclasses: true
-      use_pygments: true
-      pygments_style: monokai
-  - footnotes
-  - pymdownx.betterem:
-      smart_enable: all
-  - pymdownx.caret
-  - pymdownx.critic
-  - pymdownx.details
-  - pymdownx.inlinehilite
-  - pymdownx.magiclink
-  - pymdownx.mark
-  - pymdownx.smartsymbols
-  - pymdownx.superfences
-  - pymdownx.tasklist
-  - toc:
-      permalink: true




diff --git a/lib/AutoConnect-master/src/AutoConnect.cpp b/lib/AutoConnect-master/src/AutoConnect.cpp
deleted file mode 100644
index ece24546f654933cb958bcc0816b3d80b87a484e..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/src/AutoConnect.cpp
+++ /dev/null
@@ -1,989 +0,0 @@
-/**
- *  AutoConnect class implementation.
- *  @file   AutoConnect.cpp
- *  @author [email protected]
- *  @version    0.9.9
- *  @date   2019-05-25
- *  @copyright  MIT license.
- */
-
-#include "AutoConnect.h"
-#ifdef ARDUINO_ARCH_ESP32
-#include <esp_wifi.h>
-#endif
-/**
- *  An actual reset function dependent on the architecture
- */
-#if defined(ARDUINO_ARCH_ESP8266)
-#define SOFT_RESET()  ESP.reset()
-#define SET_HOSTNAME(x) do { WiFi.hostname(x); } while(0)
-#elif defined(ARDUINO_ARCH_ESP32)
-#define SOFT_RESET()  ESP.restart()
-#define	SET_HOSTNAME(x)	do { WiFi.setHostname(x); } while(0)
-#endif
-
-/**
- *  AutoConnect default constructor. This entry activates WebServer
- *  internally and the web server is allocated internal.
- */
-AutoConnect::AutoConnect() {
-  _initialize();
-  _webServer.reset(nullptr);
-  _dnsServer.reset(nullptr);
-  _webServerAlloc = AC_WEBSERVER_HOSTED;
-}
-
-/**
- *  Run the AutoConnect site using the externally ensured ESP 8266 WebServer.
- *  User's added URI handler response can be included in handleClient method.
- *  @param  webServer   A reference of ESP8266WebServer instance.
- */
-AutoConnect::AutoConnect(WebServerClass& webServer) {
-  _initialize();
-  _webServer.reset(&webServer);
-  _dnsServer.reset(nullptr);
-  _webServerAlloc = AC_WEBSERVER_PARASITIC;
-}
-
-void AutoConnect::_initialize(void) {
-  _rfConnect = false;
-  _rfReset = false;
-  _responsePage = nullptr;
-  _currentPageElement = nullptr;
-  _menuTitle = _apConfig.title;
-  _connectTimeout = AUTOCONNECT_TIMEOUT;
-  _scanCount = 0;
-  memset(&_credential, 0x00, sizeof(struct station_config));
-#ifdef ARDUINO_ARCH_ESP32
-  _disconnectEventId = -1;  // The member available for ESP32 only
-#endif
-  _aux.release();
-  _auxUri = String("");
-}
-
-/**
- *  A destructor. Free AutoConnect web pages and release Web server.
- *  When the server is hosted it will be purged.
- */
-AutoConnect::~AutoConnect() {
-  end();
-}
-
-/**
- *  Starts establishing WiFi connection without SSID and password.
- */
-bool AutoConnect::begin(void) {
-  return begin(nullptr, nullptr);
-}
-
-/**
- *  Starts establishing WiFi connection.
- *  Before establishing, start the Web server and DNS server for the captive
- *  portal. Then begins connection establishment in WIFI_STA mode. If
- *  connection can not established with the specified SSID and password,
- *  switch to WIFI_AP_STA mode and activate SoftAP.
- *  @param  ssid        SSID to be connected.
- *  @param  passphrase  Password for connection.
- *  @param  timeout     A time out value in milliseconds for waiting connection.
- *  @return true        Connection established, AutoConnect service started with WIFI_STA mode.
- *  @return false       Could not connected, Captive portal started with WIFI_AP_STA mode.
- */
-bool AutoConnect::begin(const char* ssid, const char* passphrase, unsigned long timeout) {
-  bool  cs;
-
-  // Overwrite for the current timeout value.
-  _connectTimeout = timeout;
-
-  // Start WiFi connection with station mode.
-  WiFi.softAPdisconnect(true);
-  WiFi.mode(WIFI_STA);
-  delay(100);
-
-  // Set host name
-  if (_apConfig.hostName.length())
-    SET_HOSTNAME(_apConfig.hostName.c_str());
-
-  // Advance configuration for STA mode.
-#ifdef AC_DEBUG
-  String staip_s = _apConfig.staip.toString();
-  String staGateway_s = _apConfig.staGateway.toString();
-  String staNetmask_s = _apConfig.staNetmask.toString();
-  String dns1_s = _apConfig.dns1.toString();
-  String dns2_s = _apConfig.dns2.toString();
-  AC_DBG("WiFi.config(IP=%s, Gateway=%s, Subnetmask=%s, DNS1=%s, DNS2=%s)\n", staip_s.c_str(), staGateway_s.c_str(), staNetmask_s.c_str(), dns1_s.c_str(), dns2_s.c_str());
-#endif
-  if (!WiFi.config(_apConfig.staip, _apConfig.staGateway, _apConfig.staNetmask, _apConfig.dns1, _apConfig.dns2)) {
-    AC_DBG("failed\n");
-    return false;
-  }
-#ifdef ARDUINO_ARCH_ESP8266
-  AC_DBG("DHCP client(%s)\n", wifi_station_dhcpc_status() == DHCP_STOPPED ? "STOPPED" : "STARTED");
-#endif
-
-  // If the portal is requested promptly skip the first WiFi.begin and
-  // immediately start the portal.
-  if (_apConfig.immediateStart) {
-    cs = false;
-    _apConfig.autoReconnect = false;
-    AC_DBG("Start the portal immediately\n");
-  }
-  else {
-    // Try to connect by STA immediately.
-    if (ssid == nullptr && passphrase == nullptr)
-      WiFi.begin();
-    else {
-      _disconnectWiFi(false);
-      WiFi.begin(ssid, passphrase);
-    }
-    AC_DBG("WiFi.begin(%s%s%s)\n", ssid == nullptr ? "" : ssid, passphrase == nullptr ? "" : ",", passphrase == nullptr ? "" : passphrase);
-    cs = _waitForConnect(_connectTimeout) == WL_CONNECTED;
-  }
-
-  // Reconnect with a valid credential as the autoReconnect option is enabled.
-  if (!cs && _apConfig.autoReconnect && (ssid == nullptr && passphrase == nullptr)) {
-    // Load a valid credential.
-    if (_loadAvailCredential()) {
-      // Try to reconnect with a stored credential.
-      AC_DBG("autoReconnect loaded SSID:%s\n", reinterpret_cast<const char*>(_credential.ssid));
-      const char* psk = strlen(reinterpret_cast<const char*>(_credential.password)) ? reinterpret_cast<const char*>(_credential.password) : nullptr;
-      WiFi.begin(reinterpret_cast<const char*>(_credential.ssid), psk);
-      AC_DBG("WiFi.begin(%s%s%s)\n", _credential.ssid, psk == nullptr ? "" : ",", psk == nullptr ? "" : psk);
-      cs = _waitForConnect(_connectTimeout) == WL_CONNECTED;
-    }
-  }
-  _currentHostIP = WiFi.localIP();
-
-  // Rushing into the portal.
-  if (!cs) {
-
-    // The captive portal is effective at the autoRise is valid only.
-    if (_apConfig.autoRise) {
-
-      // Change WiFi working mode, Enable AP with STA
-      WiFi.setAutoConnect(false);
-      _disconnectWiFi(false);
-
-      // Activate the AP mode with configured softAP and start the access point.
-      WiFi.mode(WIFI_AP_STA);
-      while (WiFi.getMode() != WIFI_AP_STA) {
-        delay(1);
-        yield();
-      }
-
-      // Connection unsuccessful, launch the captive portal.
-#if defined(ARDUINO_ARCH_ESP8266)
-      if (!(_apConfig.apip == IPAddress(0, 0, 0, 0) || _apConfig.gateway == IPAddress(0, 0, 0, 0) || _apConfig.netmask == IPAddress(0, 0, 0, 0))) {
-        _config();
-      }
-#endif
-      WiFi.softAP(_apConfig.apid.c_str(), _apConfig.psk.c_str(), _apConfig.channel, _apConfig.hidden);
-      do {
-        delay(100);
-        yield();
-      } while (WiFi.softAPIP() == IPAddress(0, 0, 0, 0));
-#if defined(ARDUINO_ARCH_ESP32)
-      if (!(_apConfig.apip == IPAddress(0, 0, 0, 0) || _apConfig.gateway == IPAddress(0, 0, 0, 0) || _apConfig.netmask == IPAddress(0, 0, 0, 0))) {
-        _config();
-      }
-#endif
-      if (_apConfig.apip != IPAddress(0, 0, 0, 0)) {
-        do {
-          delay(100);
-          yield();
-        } while (WiFi.softAPIP() != _apConfig.apip);
-      }
-      _currentHostIP = WiFi.softAPIP();
-      AC_DBG("SoftAP %s/%s Ch(%d) IP:%s %s\n", _apConfig.apid.c_str(), _apConfig.psk.c_str(), _apConfig.channel, _currentHostIP.toString().c_str(), _apConfig.hidden ? "hidden" : "");
-
-      // Fork to the exit routine that starts captive portal.
-      cs = _onDetectExit ? _onDetectExit(_currentHostIP) : true;
-
-      // Start Web server when TCP connection is enabled.
-      _startWebServer();
-
-      // Start captive portal without cancellation by DetectExit.
-      if (cs) {
-        // Prepare for redirecting captive portal detection.
-        // Pass all URL requests to _captivePortal to disguise the captive portal.
-        _startDNSServer();
-
-        // Start the captive portal to make a new connection
-        bool  hasTimeout = false;
-        _portalAccessPeriod = millis();
-        while (WiFi.status() != WL_CONNECTED && !_rfReset) {
-          handleClient();
-          // Force execution of queued processes.
-          yield();
-          // Check timeout
-          if ((hasTimeout = _hasTimeout(_apConfig.portalTimeout))) {
-            AC_DBG("CP timeout exceeded:%ld\n", millis() - _portalAccessPeriod);
-            break;
-          }
-        }
-        cs = WiFi.status() == WL_CONNECTED;
-
-        // If WLAN successfully connected, release DNS server.
-        if (cs) {
-          _dnsServer->stop();
-          _dnsServer.reset();
-          AC_DBG("DNS server stopped\n");
-        }
-        // Captive portal staying time exceeds timeout,
-        // Close the portal if an option for keeping the portal is false.
-        else if (hasTimeout) {
-          if (_apConfig.retainPortal) {
-            _purgePages();
-            AC_DBG("Maintain portal\n");
-          }
-          else {
-            _stopPortal();
-          }
-        }
-      }
-    }
-    else {
-      AC_DBG("Suppress autoRise\n");
-    }
-  }
-
-  // It doesn't matter the connection status for launching the Web server.
-  if (!_responsePage)
-    _startWebServer();
-
-  return cs;
-}
-
-/**
- *  Configure AutoConnect portal access point.
- *  @param  ap      SSID for access point.
- *  @param  psk     Password for access point.
- */
-bool AutoConnect::config(const char* ap, const char* password) {
-  _apConfig.apid = String(ap);
-  _apConfig.psk = String(password);
-  return _config();
-}
-
-/**
- *  Configure AutoConnect portal access point.
- *  @param  Config  AutoConnectConfig class instance.
- */
-bool AutoConnect::config(AutoConnectConfig& Config) {
-  _apConfig = Config;
-  return _config();
-}
-
-/**
- *  Configure access point.
- *  Set up access point with internal AucoConnectConfig parameter corrected
- *  by Config method.
- */
-bool AutoConnect::_config(void) {
-  bool  rc = WiFi.softAPConfig(_apConfig.apip, _apConfig.gateway, _apConfig.netmask);
-  AC_DBG("SoftAP configure %s, %s, %s %s\n", _apConfig.apip.toString().c_str(), _apConfig.gateway.toString().c_str(), _apConfig.netmask.toString().c_str(), rc ? "" : "failed");
-  return rc;
-}
-
-/**
- *  Put a user site's home URI.
- *  The URI specified by home is linked from "HOME" in the AutoConnect
- *  portal menu.
- *  @param  uri   A URI string of user site's home.
- */
-void AutoConnect::home(const String& uri) {
-  _apConfig.homeUri = uri;
-}
-
-/**
- *  Stops AutoConnect captive portal service.
- */
-void AutoConnect::end(void) {
-  if (_responsePage != nullptr) {
-    _responsePage->~PageBuilder();
-    delete _responsePage;
-    _responsePage = nullptr;
-  }
-  if (_currentPageElement != nullptr) {
-    _currentPageElement->~PageElement();
-    _currentPageElement = nullptr;
-  }
-
-  _stopPortal();
-  if (_webServer) {
-    switch (_webServerAlloc) {
-    case AC_WEBSERVER_HOSTED:
-      if (_dnsServer) {
-        _dnsServer->stop();
-        _dnsServer.reset();
-      }
-      _webServer.reset();
-      break;
-    case AC_WEBSERVER_PARASITIC:
-      _webServer.release();
-      break;
-    }
-  }
-}
-
-/**
- *  Returns the current hosted ESP8266WebServer.
- */
-WebServerClass& AutoConnect::host(void) {
-  return  *_webServer;
-}
-
-/**
- *  Returns AutoConnectAux instance of specified.
- *  @param  uri  An uri string.
- *  @return A pointer of AutoConnectAux instance.
- */
-AutoConnectAux* AutoConnect::aux(const String& uri) const {
-  AutoConnectAux* aux_p = _aux.get();
-  while (aux_p) {
-    if (!strcmp(aux_p->uri(), uri.c_str()))
-      break;
-    aux_p = aux_p->_next.get();
-  }
-  return aux_p;
-}
-
-/**
- *  Append auxiliary pages made up with AutoConnectAux.
- *  @param  aux A reference to AutoConnectAux that made up
- *  the auxiliary page to be added.
- */
-void AutoConnect::join(AutoConnectAux& aux) {
-  if (_aux)
-    _aux->_concat(aux);
-  else
-    _aux.reset(&aux);
-  aux._join(*this);
-  AC_DBG("%s on hands\n", aux.uri());
-}
-
-/**
- *  Append auxiliary pages made up with AutoConnectAux.
- *  @param  aux A vector of reference to AutoConnectAux that made up
- *  the auxiliary page to be added.
- */
-void AutoConnect::join(AutoConnectAuxVT auxVector) {
-  for (std::reference_wrapper<AutoConnectAux> aux : auxVector)
-    join(aux.get());
-}
-
-/**
- *  Starts Web server for AutoConnect service.
- */
-void AutoConnect::_startWebServer(void) {
-  // Boot Web server
-  if (!_webServer) {
-    // Only when hosting WebServer internally
-    _webServer.reset(new WebServerClass(AUTOCONNECT_HTTPPORT));
-    _webServerAlloc = AC_WEBSERVER_HOSTED;
-    AC_DBG("WebServer allocated\n");
-  }
-  // Discard the original the not found handler to redirect captive portal detection.
-  // It is supposed to evacuate but ESP8266WebServer::_notFoundHandler is not accessible.
-  _webServer->onNotFound(std::bind(&AutoConnect::_handleNotFound, this));
-  // here, Prepare PageBuilders for captive portal
-  if (!_responsePage) {
-    _responsePage = new PageBuilder();
-    _responsePage->exitCanHandle(std::bind(&AutoConnect::_classifyHandle, this, std::placeholders::_1, std::placeholders::_2));
-    _responsePage->onUpload(std::bind(&AutoConnect::_handleUpload, this, std::placeholders::_1, std::placeholders::_2));
-    _responsePage->insert(*_webServer);
-
-    _webServer->begin();
-    AC_DBG("http server started\n");
-  }
-  else {
-    AC_DBG("http server readied\n");
-  }
-}
-
-/**
- *  Starts DNS server for Captive portal.
- */
-void AutoConnect::_startDNSServer(void) {
-  // Boot DNS server, set up for captive portal redirection.
-  if (!_dnsServer) {
-    _dnsServer.reset(new DNSServer());
-    _dnsServer->setErrorReplyCode(DNSReplyCode::NoError);
-    _dnsServer->start(AUTOCONNECT_DNSPORT, "*", WiFi.softAPIP());
-    AC_DBG("DNS server started\n");
-  }
-}
-
-/**
- *  Handling for the AutoConnect web interface.
- *  Invoke the handleClient of parent web server to process client request of
- *  AutoConnect WEB interface.
- *  No effects when the web server is not available.
- */
-void AutoConnect::handleClient(void) {
-  // Is there DNS Server process next request?
-  if (_dnsServer)
-    _dnsServer->processNextRequest();
-  // handleClient valid only at _webServer activated.
-  if (_webServer)
-    _webServer->handleClient();
-
-  handleRequest();
-}
-
-/**
- *  Handling for the AutoConnect menu request.
- */
-void AutoConnect::handleRequest(void) {
-  // Handling processing requests to AutoConnect.
-  if (_rfConnect) {
-    // Leave from the AP currently.
-    if (WiFi.status() == WL_CONNECTED)
-      _disconnectWiFi(true);
-
-    // An attempt to establish a new AP.
-    int32_t ch = _connectCh == 0 ? _apConfig.channel : _connectCh;
-    AC_DBG("Attempt:%s Ch(%d)\n", reinterpret_cast<const char*>(_credential.ssid), (int)ch);
-    WiFi.begin(reinterpret_cast<const char*>(_credential.ssid), reinterpret_cast<const char*>(_credential.password), ch);
-    if (_waitForConnect(_connectTimeout) == WL_CONNECTED) {
-      if (WiFi.BSSID() != NULL) {
-        memcpy(_credential.bssid, WiFi.BSSID(), sizeof(station_config::bssid));
-        _currentHostIP = WiFi.localIP();
-        _redirectURI = String(F(AUTOCONNECT_URI_SUCCESS));
-
-        // Save current credential
-        if (_apConfig.autoSave == AC_SAVECREDENTIAL_AUTO) {
-          AutoConnectCredential credit(_apConfig.boundaryOffset);
-          credit.save(&_credential);
-          AC_DBG("%s credential saved\n", reinterpret_cast<const char*>(_credential.ssid));
-        }
-
-        // Ensures that keeps a connection with the current AP while the portal behaves.
-        _setReconnect(AC_RECONNECT_SET);
-      }
-      else
-        AC_DBG("%s has no BSSID, saving is unavailable\n", reinterpret_cast<const char*>(_credential.ssid));
-    }
-    else {
-      _currentHostIP = WiFi.softAPIP();
-      _redirectURI = String(F(AUTOCONNECT_URI_FAIL));
-      _rsConnect = WiFi.status();
-      _disconnectWiFi(false);
-      while (WiFi.status() != WL_IDLE_STATUS && WiFi.status() != WL_DISCONNECTED) {
-        delay(1);
-        yield();
-      }
-    }
-    _rfConnect = false;
-  }
-
-  if (_rfReset) {
-    // Reset or disconnect by portal operation result
-    _stopPortal();
-    AC_DBG("Reset\n");
-    delay(1000);
-    SOFT_RESET();
-    delay(1000);
-  }
-
-  if (_rfDisconnect) {
-    // Disconnect from the current AP.
-//    _waitForEndTransmission();
-    _stopPortal();
-    _disconnectWiFi(false);
-    while (WiFi.status() == WL_CONNECTED) {
-      delay(10);
-      yield();
-    }
-    AC_DBG("Disconnected\n");
-    // Reset disconnection request
-    _rfDisconnect = false;
-
-    if (_apConfig.autoReset) {
-      delay(1000);
-      SOFT_RESET();
-      delay(1000);
-    }
-  }
-}
-
-/**
- *  Register the exit routine for AutoConnectAux.
- *  @param  uri     Specify the URI of the AutoConnectAux page that
- *  registers the exit routine.
- *  @param  handler A handler function of the exit routine.
- *  @param  order   Specify an enumeration type of
- *  AutoConnectExitOrder_t for the call timing of the exit routine.
- *  @return true    An exit routine registered.
- *  @return false   AutoConnectAux page for the specified URI is not
- *  registered.
- */
-bool AutoConnect::on(const String& uri, const AuxHandlerFunctionT handler, AutoConnectExitOrder_t order) {
-  AutoConnectAux* aux = _aux.get();
-  while (aux) {
-    if (!strcmp(uri.c_str(), aux->uri())) {
-      aux->on(handler, order);
-      return true;
-    }
-    aux = aux->_next.get();
-  }
-  return false;
-}
-
-/**
- *  Register the exit routine for the starting captive portal.
- *  @param  fn  A function of the exit routine.
- */
-void AutoConnect::onDetect(DetectExit_ft fn) {
-  _onDetectExit = fn;
-}
-
-/**
- *  Register the handler function for undefined url request detected.
- *  @param  fn  A function of the not found handler.
- */
-void AutoConnect::onNotFound(WebServerClass::THandlerFunction fn) {
-  _notFoundHandler = fn;
-}
-
-/**
- *  Load stored credentials that match nearby WLANs.
- *  @return true  A matched credential of BSSID was loaded.
- */
-bool AutoConnect::_loadAvailCredential(void) {
-  AutoConnectCredential credential(_apConfig.boundaryOffset);
-
-  if (credential.entries() > 0) {
-    // Scan the vicinity only when the saved credentials are existing.
-    WiFi.scanDelete();
-    int8_t  nn = WiFi.scanNetworks(false, true);
-    AC_DBG("%d network(s) found\n", (int)nn);
-    if (nn > 0) {
-      // Determine valid credentials by BSSID.
-      for (uint8_t i = 0; i < credential.entries(); i++) {
-        credential.load(i, &_credential);
-        for (uint8_t n = 0; n < nn; n++) {
-          if (!memcmp(_credential.bssid, WiFi.BSSID(n), sizeof(station_config::bssid)))
-            return true;
-        }
-      }
-    }
-  }
-  return false;
-}
-
-/**
- *  Disconnect from the AP and stop the AutoConnect portal.
- *  Stops DNS server and flush tcp sending.
- */
-void AutoConnect::_stopPortal(void) {
-  if (_dnsServer && _webServerAlloc == AC_WEBSERVER_HOSTED)
-    _dnsServer->stop();
-
-  if (_webServer) {
-    _webServer->client().stop();
-    delay(1000);
-  }
-
-  _setReconnect(AC_RECONNECT_RESET);
-  WiFi.softAPdisconnect(false);
-  AC_DBG("Portal stopped\n");
-}
-
-/**
- *  Redirect to captive portal if we got a request for another domain.
- *  Return true in that case so the page handler do not try to handle the request again.
- */
-bool AutoConnect::_captivePortal(void) {
-  String  hostHeader = _webServer->hostHeader();
-  if (!_isIP(hostHeader) && (hostHeader != WiFi.localIP().toString()) && (!hostHeader.endsWith(F(".local")))) {
-    AC_DBG("Detected application, %s, %s\n", hostHeader.c_str(), WiFi.localIP().toString().c_str());
-    String location = String(F("http://")) + _webServer->client().localIP().toString() + String(AUTOCONNECT_URI);
-    _webServer->sendHeader(String(F("Location")), location, true);
-    _webServer->send(302, String(F("text/plain")), _emptyString);
-    _webServer->client().flush();
-    _webServer->client().stop();
-    return true;
-  }
-  return false;
-}
-
-/**
- *  Check whether the stay-time in the captive portal has a timeout.
- *  If the station is connected, the time measurement will be reset.
- *  @param  timeout The time limit for keeping the captive portal.
- *  @return true    There is no connection from the station even the time limit exceeds.
- *  @return false   Connectionless duration has not exceeded yet.
- */
-bool AutoConnect::_hasTimeout(unsigned long timeout) {
-  uint8_t staNum;
-
-  if (!_apConfig.portalTimeout)
-    return false;
-
-#if defined(ARDUINO_ARCH_ESP8266)
-  staNum = 0;
-  struct station_info* station = wifi_softap_get_station_info();
-  while (station) {
-    staNum++;
-    station = STAILQ_NEXT(station, next);
-  }
-  wifi_softap_free_station_info();
-#elif defined(ARDUINO_ARCH_ESP32)
-  staNum = WiFi.softAPgetStationNum();
-#endif
-  if (staNum)
-    _portalAccessPeriod = millis();
-
-  return (millis() - _portalAccessPeriod > timeout) ? true : false;
-}
-
-/**
- *  A handler that redirects access to the captive portal to the connection
- *  configuration page.
- */
-void AutoConnect::_handleNotFound(void) {
-  if (!_captivePortal()) {
-    if (_notFoundHandler) {
-      _notFoundHandler();
-    }
-    else {
-      PageElement page404(_PAGE_404, { { String(F("HEAD")), std::bind(&AutoConnect::_token_HEAD, this, std::placeholders::_1) } });
-      String html = page404.build();
-      _webServer->sendHeader(String(F("Cache-Control")), String(F("no-cache, no-store, must-revalidate")), true);
-      _webServer->sendHeader(String(F("Pragma")), String(F("no-cache")));
-      _webServer->sendHeader(String(F("Expires")), String("-1"));
-      _webServer->sendHeader(String(F("Content-Length")), String(html.length()));
-      _webServer->send(404, String(F("text/html")), html);
-    }
-  }
-}
-
-/**
- *  Reset the ESP8266 module.
- *  It is called from the PageBuilder of the disconnect page and indicates
- *  the request for disconnection. It will be into progress after handleClient.
- */
-String AutoConnect::_induceReset(PageArgument& args) {
-  AC_UNUSED(args);
-  _rfReset = true;
-  return String(F(AUTOCONNECT_BUTTONLABEL_RESET " in progress..."));
-}
-
-/**
- *  Disconnect from AP.
- *  It is called from the PageBuilder of the disconnect page and indicates
- *  the request for disconnection. It will be into progress after handleClient.
- */
-String AutoConnect::_induceDisconnect(PageArgument& args) {
-  AC_UNUSED(args);
-  _rfDisconnect = true;
-  return _emptyString;
-}
-
-/**
- *  Indicates a connection establishment request and returns a redirect
- *  response to the waiting for connection page. This is called from
- *  handling of the current request by PageBuilder triggered by handleClient().
- *  If "Credential" exists in POST parameter, it reads from EEPROM.
- *  @param  args  http request arguments.
- *  @return A redirect response including "Location:" header.
- */
-String AutoConnect::_induceConnect(PageArgument& args) {
-  // Retrieve credential from the post method content.
-  if (args.hasArg(String(F(AUTOCONNECT_PARAMID_CRED)))) {
-    // Read from EEPROM
-    AutoConnectCredential credential(_apConfig.boundaryOffset);
-    struct station_config entry;
-    credential.load(args.arg(String(F(AUTOCONNECT_PARAMID_CRED))).c_str(), &entry);
-    strncpy(reinterpret_cast<char*>(_credential.ssid), reinterpret_cast<const char*>(entry.ssid), sizeof(_credential.ssid));
-    strncpy(reinterpret_cast<char*>(_credential.password), reinterpret_cast<const char*>(entry.password), sizeof(_credential.password));
-    AC_DBG("Credential loaded:%s\n", _credential.ssid);
-  }
-  else {
-    AC_DBG("Queried SSID:%s\n", args.arg(AUTOCONNECT_PARAMID_SSID).c_str());
-    // Credential had by the post parameter.
-    strncpy(reinterpret_cast<char*>(_credential.ssid), args.arg(String(F(AUTOCONNECT_PARAMID_SSID))).c_str(), sizeof(_credential.ssid));
-    strncpy(reinterpret_cast<char*>(_credential.password), args.arg(String(F(AUTOCONNECT_PARAMID_PASS))).c_str(), sizeof(_credential.password));
-  }
-
-  // Determine the connection channel based on the scan result.
-  _connectCh = 0;
-  for (uint8_t nn = 0; nn < _scanCount; nn++) {
-    String  ssid = WiFi.SSID(nn);
-    if (!strcmp(ssid.c_str(), reinterpret_cast<const char*>(_credential.ssid))) {
-      _connectCh = WiFi.channel(nn);
-      break;
-    }
-  }
-
-  // Turn on the trigger to start WiFi.begin().
-  _rfConnect = true;
-
-// Since v0.9.7, the redirect method changed from a 302 response to the
-// meta tag with refresh attribute.
-// This approach for ESP32 makes an inefficient choice. The waiting
-// procedure for a connection attempt should be the server side. Also,
-// the proper value of waiting time until refreshing is unknown. But
-// AutoConnect cannot avoid the following error as affairs stand now
-// that occurs at connection establishment.
-// [WiFiClient.cpp:463] connected(): Disconnected: RES: 0, ERR: 128
-// When connecting as a station, TCP reset caused by switching of the
-// radio channel occurs. Although the Espressif's view is true. However,
-// the actual TCP reset occurs not at the time of switching the channel.
-// It occurs at the connection from the ESP32 to the AP is established
-// and it is possible that TCP reset is occurring in other situations.
-// So, it may not be the real cause. Client-origin redirects with HTML
-// refresh depend on the behavior of the arduino-esp32 library. Thus,
-// the implementations for redirects with HTML will continue until
-// the arduino-esp32 core supports reconnection.
-
-  // Redirect to waiting URI while executing connection request.
-  // String url = String(F("http://")) + _webServer->client().localIP().toString() + String(AUTOCONNECT_URI_RESULT);
-  // _webServer->sendHeader(F("Location"), url, true);
-  // _webServer->send(302, F("text/plain"), "");
-  // _webServer->client().flush();
-  // _webServer->client().stop();
-  // _responsePage->cancel();
-  return _emptyString;
-}
-
-/**
- *  Responds response as redirect to the connection result page.
- *  A destination as _redirectURI is indicated by loop to establish connection.
- */
-String AutoConnect::_invokeResult(PageArgument& args) {
-  AC_UNUSED(args);
-  String redirect = String(F("http://"));
-  // The host address to which the connection result for ESP32 responds
-  // changed from v0.9.7. This change is a measure according to the
-  // implementation of the arduino-esp32 1.0.1.
-#if defined(ARDUINO_ARCH_ESP32)
-  // In ESP32, the station IP address just established could not be reached.
-  redirect += _webServer->client().localIP().toString();
-#elif defined(ARDUINO_ARCH_ESP8266)
-  // In ESP8266, the host address that responds for the connection
-  // successful is the IP address of ESP8266 as a station.
-  // This is the specification as before.
-  redirect += _currentHostIP.toString();
-#endif
-  redirect += _redirectURI;
-  _webServer->sendHeader(String(F("Location")), redirect, true);
-  _webServer->send(302, String(F("text/plain")), _emptyString);
-  _webServer->client().flush();
-  _webServer->client().stop();
-  _waitForEndTransmission();  // Wait for response transmission complete
-  _responsePage->cancel();
-  return _emptyString;
-}
-
-/**
- *  Classify the requested URI to responsive page builder.
- *  There is always only one PageBuilder instance that can exist in
- *  AutoConnect for saving RAM. Invokes a subordinate function that
- *  dynamically generates a response page at handleRequest. This is
- *  a part of the handling of http request originated from handleClient.
- */
-bool AutoConnect::_classifyHandle(HTTPMethod method, String uri) {
-  AC_UNUSED(method);
-  _portalAccessPeriod = millis();
-  AC_DBG("Host:%s,URI:%s", _webServer->hostHeader().c_str(), uri.c_str());
-
-  // Here, classify requested uri
-  if (uri == _uri) {
-    AC_DBG_DUMB(",already allocated\n");
-    return true;  // The response page already exists.
-  }
-
-  // Dispose decrepit page
-  if (_uri.length())
-    _prevUri = _uri;   // Save current uri for the upload request
-  _purgePages();
-
-  // Create the page dynamically
-  if ((_currentPageElement = _setupPage(uri)) == nullptr)
-    if (_aux) {
-      // Requested URL is not a normal page, exploring AUX pages
-      _currentPageElement = _aux->_setupPage(uri);
-    }
-  if (_currentPageElement != nullptr) {
-    AC_DBG_DUMB(",generated:%s", uri.c_str());
-    _uri = uri;
-    _responsePage->addElement(*_currentPageElement);
-    _responsePage->setUri(_uri.c_str());
-  }
-  AC_DBG_DUMB(",%s\n", _currentPageElement != nullptr ? " allocated" : "ignored");
-  return _currentPageElement != nullptr ? true : false;
-}
-
-/**
- *  A wrapper of the upload function for the WebServerClass. Invokes the
- *  upload function of the AutoConnectAux which has a destination URI.
- */
-void AutoConnect::_handleUpload(const String& requestUri, const HTTPUpload& upload) {
-  AutoConnectAux* aux = _aux.get();
-  while (aux) {
-    if (aux->_uriStr == requestUri) {
-      aux->upload(_prevUri, upload);
-      break;
-    }
-    aux = aux->_next.get();
-  }
-}
-
-/**
- *  Purge allocated pages. 
- */
-void AutoConnect::_purgePages(void) {
-  _responsePage->clearElement();
-  if (_currentPageElement != nullptr) {
-    delete _currentPageElement;
-    _currentPageElement = nullptr;
-    _uri = String("");
-  }
-}
-
-/**
- *  It checks whether the specified character string is a valid IP address.
- *  @param  ipStr   IP string for validation.
- *  @return true    Valid.
- */
-bool AutoConnect::_isIP(String ipStr) {
-  for (uint8_t i = 0; i < ipStr.length(); i++) {
-    char c = ipStr.charAt(i);
-    if (c != '.' && (c < '0' || c > '9'))
-      return false;
-  }
-  return true;
-}
-
-/**
- *  Convert MAC address in uint8_t array to Sting XX:XX:XX:XX:XX:XX format.
- *  @param  mac   Array of MAC address 6 bytes.
- *  @return MAC address string in XX:XX:XX:XX:XX:XX format.
- */
-String AutoConnect::_toMACAddressString(const uint8_t mac[]) {
-  String  macAddr = String("");
-  for (uint8_t i = 0; i < 6; i++) {
-    char buf[3];
-    sprintf(buf, "%02X", mac[i]);
-    macAddr += buf;
-    if (i < 5)
-      macAddr += ':';
-  }
-  return macAddr;
-}
-
-/**
- *  Convert dBm to the wifi signal quality.
- *  @param  rssi  dBm.
- *  @return A signal quality percentage.
- */
-unsigned int AutoConnect::_toWiFiQuality(int32_t rssi) {
-  unsigned int  qu;
-  if (rssi == 31)   // WiFi signal is weak and RSSI value is unreliable.
-    qu = 0;
-  else if (rssi <= -100)
-    qu = 0;
-  else if (rssi >= -50)
-    qu = 100;
-  else
-    qu = 2 * (rssi + 100);
-  return qu;
-}
-
-/**
- *  Wait for establishment of the connection until the specified time expires.
- *  @param  timeout Expiration time by millisecond unit.
- *  @return wl_status_t
- */
-wl_status_t AutoConnect::_waitForConnect(unsigned long timeout) {
-  wl_status_t wifiStatus;
-
-  AC_DBG("Connecting");
-  unsigned long st = millis();
-  while ((wifiStatus = WiFi.status()) != WL_CONNECTED) {
-    if (timeout) {
-      if (millis() - st > timeout)
-        break;
-    }
-    AC_DBG_DUMB("%c", '.');
-    delay(300);
-  }
-  AC_DBG_DUMB("%s IP:%s\n", wifiStatus == WL_CONNECTED ? "established" : "time out", WiFi.localIP().toString().c_str());
-  return wifiStatus;
-}
-
-/**
- *  Control the automatic reconnection behaves. Reconnection behavior
- *  to the AP connected during captive portal operation is activated
- *  by an order as the argument.
- *  @param  order  AC_RECONNECT_SET or AC_RECONNECT_RESET
- */
-void AutoConnect::_setReconnect(const AC_STARECONNECT_t order) {
-#if defined(ARDUINO_ARCH_ESP32)
-  if (order == AC_RECONNECT_SET) {
-    _disconnectEventId = WiFi.onEvent([](WiFiEvent_t e, WiFiEventInfo_t info) {
-      AC_DBG("STA lost connection:%d\n", info.disconnected.reason);
-      bool  rst = WiFi.reconnect();
-      AC_DBG("STA connection %s\n", rst ? "restored" : "failed");
-    }, WiFiEvent_t::SYSTEM_EVENT_AP_STADISCONNECTED);
-    AC_DBG("Event<%d> handler registered\n", static_cast<int>(WiFiEvent_t::SYSTEM_EVENT_AP_STADISCONNECTED));
-  }
-  else if (order == AC_RECONNECT_RESET) {
-    if (_disconnectEventId) {
-      WiFi.removeEvent(_disconnectEventId);
-      AC_DBG("Event<%d> handler released\n", static_cast<int>(WiFiEvent_t::SYSTEM_EVENT_AP_STADISCONNECTED));
-    }
-  }
-#elif defined(ARDUINO_ARCH_ESP8266)
-  bool  strc = order == AC_RECONNECT_SET ? true : false;
-  WiFi.setAutoReconnect(strc);
-  AC_DBG("STA reconnection:%s\n", strc ? "EN" : "DIS");
-#endif
-}
-
-/**
- * Wait for the end of transmission of the http response by closed
- * from the http client. 
- */
-void AutoConnect::_waitForEndTransmission(void) {
-#ifdef AC_DEBUG
-  AC_DBG("Leaves:");
-  unsigned long lt = millis();
-#endif
-  while (_webServer->client().connected()) {
-    delay(1);
-    yield();
-  }
-#ifdef AC_DEBUG
-  // Notifies of the time taken to end the session. If the http client 
-  // times out, AC_DEBUG must be enabled and it is necessary to confirm
-  // that the http response is being transmitted correctly.
-  // To trace the correctness the close sequence of TCP connection,
-  // enable the debug log of the Arduino core side. If the normal,
-  // a message of closed the TCP connection will be logged between
-  // "Leaves:" and "the time taken to end the session" of the log.
-  AC_DBG_DUMB("%d[ms]\n", static_cast<int>(millis() - lt));
-#endif
-}
-
-/**
- *  Disconnects the station from an associated access point.
- *  @param  wifiOff The station mode turning switch.
- */
-void AutoConnect::_disconnectWiFi(bool wifiOff) {
-#if defined(ARDUINO_ARCH_ESP8266)
-  WiFi.disconnect(wifiOff);
-#elif defined(ARDUINO_ARCH_ESP32)
-  WiFi.disconnect(wifiOff, true);
-#endif
-  while (WiFi.status() == WL_CONNECTED) {
-    delay(1);
-    yield();
-  }
-}
-
-/**
- *  Initialize an empty string to allow returning const String& with nothing.
- */
-const String AutoConnect::_emptyString = String("");




diff --git a/lib/AutoConnect-master/src/AutoConnect.h b/lib/AutoConnect-master/src/AutoConnect.h
deleted file mode 100644
index 78e94c32d5bf23ddae21efcbb003108c67319537..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/src/AutoConnect.h
+++ /dev/null
@@ -1,373 +0,0 @@
-/**
- *	Declaration of AutoConnect class and accompanying AutoConnectConfig class.
- *	@file	AutoConnect.h
- *	@author	[email protected]
- *	@version	0.9.9
- *	@date	2019-05-25
- *	@copyright	MIT license.
- */
-
-#ifndef _AUTOCONNECT_H_
-#define _AUTOCONNECT_H_
-
-#include <vector>
-#include <memory>
-#include <functional>
-#include <DNSServer.h>
-#if defined(ARDUINO_ARCH_ESP8266)
-#include <ESP8266WiFi.h>
-#include <ESP8266WebServer.h>
-extern "C" {
-#include <user_interface.h>
-}
-using WebServerClass = ESP8266WebServer;
-#elif defined(ARDUINO_ARCH_ESP32)
-#include <WiFi.h>
-#include <WebServer.h>
-using WebServerClass = WebServer;
-#endif
-#include <EEPROM.h>
-#include <PageBuilder.h>
-#include "AutoConnectDefs.h"
-#include "AutoConnectPage.h"
-#include "AutoConnectCredential.h"
-#include "AutoConnectAux.h"
-
-/**< A type to save established credential at WiFi.begin automatically. */
-typedef enum AC_SAVECREDENTIAL {
-  AC_SAVECREDENTIAL_NEVER,
-  AC_SAVECREDENTIAL_AUTO
-} AC_SAVECREDENTIAL_t;
-
-typedef enum AC_ONBOOTURI {
-  AC_ONBOOTURI_ROOT,
-  AC_ONBOOTURI_HOME
-} AC_ONBOOTURI_t;
-
-class AutoConnectConfig {
- public:
-  /**
-   *  AutoConnectConfig default constructor.
-   *  SSID for the captive portal access point assumes AUTOCONNECT_APID which
-   *  assigned from macro. Password is same as above too.
-   */
-  AutoConnectConfig() :
-    apip(AUTOCONNECT_AP_IP),
-    gateway(AUTOCONNECT_AP_GW),
-    netmask(AUTOCONNECT_AP_NM),
-    apid(String(AUTOCONNECT_APID)),
-    psk(String(AUTOCONNECT_PSK)),
-    channel(AUTOCONNECT_AP_CH),
-    hidden(0),
-    autoSave(AC_SAVECREDENTIAL_AUTO),
-    bootUri(AC_ONBOOTURI_ROOT),
-    boundaryOffset(AC_IDENTIFIER_OFFSET),
-    uptime(AUTOCONNECT_STARTUPTIME),
-    autoRise(true),
-    autoReset(true),
-    autoReconnect(false),
-    immediateStart(false),
-    retainPortal(false),
-    portalTimeout(AUTOCONNECT_CAPTIVEPORTAL_TIMEOUT),
-    hostName(String("")),
-    homeUri(AUTOCONNECT_HOMEURI),
-    title(AUTOCONNECT_MENU_TITLE),
-    staip(0U),
-    staGateway(0U),
-    staNetmask(0U),
-    dns1(0U),
-    dns2(0U) {}
-  /**
-   *  Configure by SSID for the captive portal access point and password.
-   */
-  AutoConnectConfig(const char* ap, const char* password, const unsigned long portalTimeout = 0, const uint8_t channel = AUTOCONNECT_AP_CH) :
-    apip(AUTOCONNECT_AP_IP),
-    gateway(AUTOCONNECT_AP_GW),
-    netmask(AUTOCONNECT_AP_NM),
-    apid(String(ap)),
-    psk(String(password)),
-    channel(channel),
-    hidden(0),
-    autoSave(AC_SAVECREDENTIAL_AUTO),
-    bootUri(AC_ONBOOTURI_ROOT),
-    boundaryOffset(AC_IDENTIFIER_OFFSET),
-    uptime(AUTOCONNECT_STARTUPTIME),
-    autoRise(true),
-    autoReset(true),
-    autoReconnect(false),
-    immediateStart(false),
-    retainPortal(false),
-    portalTimeout(portalTimeout),
-    hostName(String("")),
-    homeUri(AUTOCONNECT_HOMEURI),
-    title(AUTOCONNECT_MENU_TITLE),
-    staip(0U),
-    staGateway(0U),
-    staNetmask(0U),
-    dns1(0U),
-    dns2(0U) {}
-
-  ~AutoConnectConfig() {}
-
-  AutoConnectConfig& operator=(const AutoConnectConfig& o) {
-    apip = o.apip;
-    gateway = o.gateway;
-    netmask = o.netmask;
-    apid = o.apid;
-    psk = o.psk;
-    channel = o.channel;
-    hidden = o.hidden;
-    autoSave = o.autoSave;
-    bootUri = o.bootUri;
-    boundaryOffset = o.boundaryOffset;
-    uptime = o.uptime;
-    autoRise = o.autoRise;
-    autoReset = o.autoReset;
-    autoReconnect = o.autoReconnect;
-    immediateStart = o.immediateStart;
-    retainPortal = o.retainPortal;
-    portalTimeout = o.portalTimeout;
-    hostName = o.hostName;
-    homeUri = o.homeUri;
-    title = o.title;
-    staip = o.staip;
-    staGateway = o.staGateway;
-    staNetmask = o.staNetmask;
-    dns1 = o.dns1;
-    dns2 = o.dns2;
-    return *this;
-  }
-
-  IPAddress apip;               /**< SoftAP IP address */
-  IPAddress gateway;            /**< SoftAP gateway address */
-  IPAddress netmask;            /**< SoftAP subnet mask */
-  String    apid;               /**< SoftAP SSID */
-  String    psk;                /**< SoftAP password */
-  uint8_t   channel;            /**< SoftAP used wifi channel */
-  uint8_t   hidden;             /**< SoftAP SSID hidden */
-  AC_SAVECREDENTIAL_t  autoSave;  /**< Auto save credential */
-  AC_ONBOOTURI_t  bootUri;      /**< An uri invoking after reset */
-  uint16_t  boundaryOffset;     /**< The save storage offset of EEPROM */
-  int       uptime;             /**< Length of start up time */
-  bool      autoRise;           /**< Automatic starting the captive portal */
-  bool      autoReset;          /**< Reset ESP8266 module automatically when WLAN disconnected. */
-  bool      autoReconnect;      /**< Automatic reconnect with past SSID */
-  bool      immediateStart;     /**< Skips WiFi.begin(), start portal immediately */
-  bool      retainPortal;       /**< Even if the captive portal times out, it maintains the portal state. */
-  unsigned long portalTimeout;  /**< Timeout value for stay in the captive portal */
-  String    hostName;           /**< host name */
-  String    homeUri;            /**< A URI of user site */
-  String    title;              /**< Menu title */
-  IPAddress staip;              /**< Station static IP address */
-  IPAddress staGateway;         /**< Station gateway address */
-  IPAddress staNetmask;         /**< Station subnet mask */
-  IPAddress dns1;               /**< Primary DNS server */
-  IPAddress dns2;               /**< Secondary DNS server */
-};
-
-typedef std::vector<std::reference_wrapper<AutoConnectAux>> AutoConnectAuxVT;
-
-class AutoConnect {
- public:
-  AutoConnect();
-  AutoConnect(WebServerClass& webServer);
-  ~AutoConnect();
-  AutoConnectAux* aux(const String& uri) const;
-  bool  config(AutoConnectConfig& Config);
-  bool  config(const char* ap, const char* password = nullptr);
-  void  home(const String& uri);
-  bool  begin(void);
-  bool  begin(const char* ssid, const char* passphrase = nullptr, unsigned long timeout = AUTOCONNECT_TIMEOUT);
-  void  end(void);
-  void  handleClient(void);
-  void  handleRequest(void);
-  WebServerClass& host(void);
-  void  join(AutoConnectAux& aux);
-  void  join(AutoConnectAuxVT auxVector);
-  bool  on(const String& uri, const AuxHandlerFunctionT handler, AutoConnectExitOrder_t order = AC_EXIT_AHEAD);
-  String where(void) const { return _auxUri; }
-
-  /** For AutoConnectAux described in JSON */
-#ifdef AUTOCONNECT_USE_JSON
-  bool  load(PGM_P aux);
-  bool  load(const __FlashStringHelper* aux);
-  bool  load(const String& aux);
-  bool  load(Stream& aux);
-#endif // !AUTOCONNECT_USE_JSON
-
-  typedef std::function<bool(IPAddress)>  DetectExit_ft;
-  void  onDetect(DetectExit_ft fn);
-  void  onNotFound(WebServerClass::THandlerFunction fn);
-
- protected:
-  enum _webServerAllocateType {
-    AC_WEBSERVER_PARASITIC,
-    AC_WEBSERVER_HOSTED
-  };
-  typedef enum _webServerAllocateType  AC_WEBSERVER_TYPE;
-  typedef enum {
-    AC_RECONNECT_SET,
-    AC_RECONNECT_RESET
-  } AC_STARECONNECT_t;
-  void  _initialize(void);
-  bool  _config(void);
-  void  _startWebServer(void);
-  void  _startDNSServer(void);
-  void  _handleNotFound(void);
-  bool  _loadAvailCredential(void);
-  void  _stopPortal(void);
-  bool  _classifyHandle(HTTPMethod mothod, String uri);
-  void  _handleUpload(const String& requestUri, const HTTPUpload& upload);
-  void  _purgePages(void);
-  virtual PageElement*  _setupPage(String uri);
-#ifdef AUTOCONNECT_USE_JSON
-  template<typename T>
-  bool  _parseJson(T in);
-  bool  _load(JsonVariant& aux);
-#endif // !AUTOCONNECT_USE_JSON
-
-  /** Request handlers implemented by Page Builder */
-  String  _induceConnect(PageArgument& args);
-  String  _induceDisconnect(PageArgument& args);
-  String  _induceReset(PageArgument& args);
-  String  _invokeResult(PageArgument& args);
-
-  /** For portal control */
-  bool  _captivePortal(void);
-  bool  _hasTimeout(unsigned long timeout);
-  bool  _isIP(String ipStr);
-  wl_status_t _waitForConnect(unsigned long timeout);
-  void  _waitForEndTransmission(void);
-  void  _disconnectWiFi(bool wifiOff);
-  void  _setReconnect(const AC_STARECONNECT_t order);
-
-  /** Utilities */
-  static uint32_t      _getChipId(void);
-  static uint32_t      _getFlashChipRealSize(void);
-  static String        _toMACAddressString(const uint8_t mac[]);
-  static unsigned int  _toWiFiQuality(int32_t rssi);
-  DetectExit_ft        _onDetectExit;
-  WebServerClass::THandlerFunction _notFoundHandler;
-  size_t               _freeHeapSize;
-
-  /** Servers which works in concert. */
-  std::unique_ptr<WebServerClass> _webServer;
-  std::unique_ptr<DNSServer>      _dnsServer;
-  AC_WEBSERVER_TYPE               _webServerAlloc;
-
-  /**
-   *  Dynamically hold one page of AutoConnect menu.
-   *  Every time a GET/POST HTTP request occurs, an AutoConnect
-   *  menu page corresponding to the URI is generated.
-   */
-  PageBuilder*  _responsePage;
-  PageElement*  _currentPageElement;
-
-  /** Extended pages made up with AutoConnectAux */
-  std::unique_ptr<AutoConnectAux> _aux;
-  String        _auxUri;        /**< Last accessed AutoConnectAux */
-  String        _prevUri;       /**< Previous generated page uri */
-
-  /** Saved configurations */
-  AutoConnectConfig     _apConfig;
-  struct station_config _credential;
-  uint8_t       _hiddenSSIDCount;
-  int16_t       _scanCount;
-  uint8_t       _connectCh;
-  unsigned long _connectTimeout;
-  unsigned long _portalAccessPeriod;
-
-  /** The control indicators */
-  bool  _rfConnect;             /**< URI /connect requested */
-  bool  _rfDisconnect;          /**< URI /disc requested */
-  bool  _rfReset;               /**< URI /reset requested */
-  wl_status_t   _rsConnect;     /**< connection result */
-#ifdef ARDUINO_ARCH_ESP32
-  WiFiEventId_t _disconnectEventId; /**< STA disconnection event handler registered id  */
-#endif
-
-  /** HTTP header information of the currently requested page. */
-  IPAddress     _currentHostIP; /**< host IP address */
-  String        _uri;           /**< Requested URI */
-  String        _redirectURI;   /**< Redirect destination */
-  String        _menuTitle;     /**< Title string of the page */
-
-  /** PegeElements of AutoConnect site. */
-  static const char _CSS_BASE[] PROGMEM;
-  static const char _CSS_UL[] PROGMEM;
-  static const char _CSS_ICON_LOCK[] PROGMEM;
-  static const char _CSS_INPUT_BUTTON[] PROGMEM;
-  static const char _CSS_INPUT_TEXT[] PROGMEM;
-  static const char _CSS_TABLE[] PROGMEM;
-  static const char _CSS_SPINNER[] PROGMEM;
-  static const char _CSS_LUXBAR[] PROGMEM;
-  static const char _ELM_HTML_HEAD[] PROGMEM;
-  static const char _ELM_MENU_PRE[] PROGMEM;
-  static const char _ELM_MENU_AUX[] PROGMEM;
-  static const char _ELM_MENU_POST[] PROGMEM;
-  static const char _PAGE_STAT[] PROGMEM;
-  static const char _PAGE_CONFIGNEW[] PROGMEM;
-  static const char _PAGE_CONNECTING[] PROGMEM;
-  static const char _PAGE_OPENCREDT[] PROGMEM;
-  static const char _PAGE_SUCCESS[] PROGMEM;
-  static const char _PAGE_RESETTING[] PROGMEM;
-  static const char _PAGE_DISCONN[] PROGMEM;
-  static const char _PAGE_FAIL[] PROGMEM;
-  static const char _PAGE_404[] PROGMEM;
-
-  static const struct PageTranserModeST {
-    const char*              uri;
-    const TransferEncoding_t transMode;
-    const size_t             rSize;
-  } _pageBuildMode[];
-
-  /** Token handlers for PageBuilder */
-  String _token_CSS_BASE(PageArgument& args);
-  String _token_CSS_UL(PageArgument& args);
-  String _token_CSS_ICON_LOCK(PageArgument& args);
-  String _token_CSS_INPUT_BUTTON(PageArgument& args);
-  String _token_CSS_INPUT_TEXT(PageArgument& args);
-  String _token_CSS_TABLE(PageArgument& args);
-  String _token_CSS_SPINNER(PageArgument& args);
-  String _token_CSS_LUXBAR(PageArgument& args);
-  String _token_HEAD(PageArgument& args);
-  String _token_MENU_PRE(PageArgument& args);
-  String _token_MENU_AUX(PageArgument& args);
-  String _token_MENU_POST(PageArgument& args);
-  String _token_ESTAB_SSID(PageArgument& args);
-  String _token_WIFI_MODE(PageArgument& args);
-  String _token_WIFI_STATUS(PageArgument& args);
-  String _token_STATION_STATUS(PageArgument& args);
-  String _token_LOCAL_IP(PageArgument& args);
-  String _token_SOFTAP_IP(PageArgument& args);
-  String _token_GATEWAY(PageArgument& args);
-  String _token_NETMASK(PageArgument& args);
-  String _token_AP_MAC(PageArgument& args);
-  String _token_STA_MAC(PageArgument& args);
-  String _token_CHANNEL(PageArgument& args);
-  String _token_DBM(PageArgument& args);
-  String _token_CPU_FREQ(PageArgument& args);
-  String _token_FLASH_SIZE(PageArgument& args);
-  String _token_CHIP_ID(PageArgument& args);
-  String _token_FREE_HEAP(PageArgument& args);
-  String _token_LIST_SSID(PageArgument& args);
-  String _token_SSID_COUNT(PageArgument& args);
-  String _token_HIDDEN_COUNT(PageArgument& args);
-  String _token_OPEN_SSID(PageArgument& args);
-  String _token_UPTIME(PageArgument& args);
-  String _token_BOOTURI(PageArgument& args);
-  String _token_CURRENT_SSID(PageArgument& args);
-
- private:
-  static const  String  _emptyString; /**< An empty string alloaction  **/
-
-#if defined(ARDUINO_ARCH_ESP8266)
-  friend class ESP8266WebServer;
-#elif defined(ARDUINO_ARCH_ESP32)
-  friend class WebServer;
-#endif
-
-  friend class AutoConnectAux;
-};
-
-#endif  // _AUTOCONNECT_H_




diff --git a/lib/AutoConnect-master/src/AutoConnectAux.cpp b/lib/AutoConnect-master/src/AutoConnectAux.cpp
deleted file mode 100644
index d6de164065fcb4e594991ee6315e31d5d5781b71..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/src/AutoConnectAux.cpp
+++ /dev/null
@@ -1,907 +0,0 @@
-/**
- * Implementation of AutoConnectAux class.
- * @file AutoConnectAuxBasisImpl.h
- * @author [email protected]
- * @version  0.9.10
- * @date 2019-06-12
- * @copyright  MIT license.
- */
-#include <algorithm>
-#include "AutoConnect.h"
-#include "AutoConnectAux.h"
-#include "AutoConnectAuxImpl.h"
-#include "AutoConnectUploadImpl.h"
-#include "AutoConnectElementBasisImpl.h"
-#ifdef AUTOCONNECT_USE_JSON
-#include "AutoConnectElementJsonImpl.h"
-#endif
-
-/**
- * Template for auxiliary page composed with AutoConnectAux of user sketch.
- * The structure of the auxiliary page depends on this template for 
- * the purpose to be incorporated into the AutoConnect Menu.
- * The page element implemented by AutoConnectElement is placed at the 
- * position of {{AUX_ELEMENT}} token. This token is contained in a 
- * <div> block with a class defined in 'base-panel' and is held by a 
- * <form> element with an ID '_aux'.
- * The JavaScript that named 'sa' at the end of the template determines 
- * the behavior of AutoConnectSubmit.
- */
-const char AutoConnectAux::_PAGE_AUX[] PROGMEM = {
-  "{{HEAD}}"
-  "<title>{{AUX_TITLE}}</title>"
-  "<style type=\"text/css\">"
-  "{{CSS_BASE}}"
-  "{{CSS_UL}}"
-  "{{CSS_INPUT_BUTTON}}"
-  "{{CSS_INPUT_TEXT}}"
-  "{{CSS_LUXBAR}}"
-  "</style>"
-  "</head>"
-  "<body style=\"padding-top:58px;\">"
-  "<div class=\"container\">"
-  "{{MENU_PRE}}"
-  "{{MENU_AUX}}"
-  "{{MENU_POST}}"
-  "<div class=\"base-panel\"><div class=\"aux-page\">"
-  "<form id='_aux' method=\"post\" onsubmit=\"return false;\" {{ENC_TYPE}}>"
-  "<ul class=\"noorder\">"
-  "{{AUX_ELEMENT}}"
-  "</ul>"
-  "</form>"
-  "</div></div>"
-  "</div>"
-  "<script>"
-  "function _sa(url) {"
-  "var uri=document.createElement('input');"
-  "uri.setAttribute('type','hidden');"
-  "uri.setAttribute('name','" AUTOCONNECT_AUXURI_PARAM "');"
-  "uri.setAttribute('value','{{AUX_URI}}');"
-  "document.getElementById('_aux').appendChild(uri);"
-  "document.getElementById('_aux').action=url;"
-  "document.getElementById('_aux').submit();"
-  "}"
-  "</script>"
-  "</body>"
-  "</html>"
-};
-
-/**
- * Destructs container of AutoConnectElement and release a unique
- * pointer of AutoConnect instance.
- */
-AutoConnectAux::~AutoConnectAux() {
-  _addonElm.clear();
-  _addonElm.swap(_addonElm);
-  if (_ac)
-    _ac.release();
-}
-
-/**
- * Returns a null element as static storage.
- * This static element is referred by invalid JSON data.
- * @return A reference of a static element defined by name as null.
- */
-AutoConnectElement& AutoConnectAux::_nullElement() {
-  static AutoConnectElement nullElement("", "");
-  return nullElement;
-}
-
-/**
- * Add an AutoConnectElement
- * @param  addon A reference of AutoConnectElement.
- */
-void AutoConnectAux::add(AutoConnectElement& addon) {
-  _addonElm.push_back(addon);
-  AC_DBG("%s placed on %s\n", addon.name.length() ? addon.name.c_str() : "*noname", uri());
-}
-
-/**
- * Add an AutoConnectElement vector container to the AutoConnectAux page.
- * @param  addons  AutoConnectElementVT collection.
- */
-void AutoConnectAux::add(AutoConnectElementVT addons) {
-  for (AutoConnectElement& element : addons)
-    add(element);
-}
-
-/**
- * Get already registered AutoConnectElement.
- * @param  name  Element name
- * @return A pointer to the registered AutoConnectElement.
- */
-AutoConnectElement* AutoConnectAux::getElement(const String& name) {
-  for (AutoConnectElement& elm : _addonElm)
-    if (elm.name.equalsIgnoreCase(name))
-      return &elm;
-  AC_DBG("Element<%s> not registered\n", name.c_str());
-  return nullptr;
-}
-
-/**
- * Releases the AutoConnectElements with the specified name from 
- * the AutoConnectAux page. Releases all AutoConnectElements with 
- * the same name in AutoConnectAux.
- * @param  name  
- * @return true  The specified AutoConnectElements have been released.
- * @return false The specified AutoConnectElement not found in AutoConnectAux.
- */
-bool AutoConnectAux::release(const String& name) {
-  auto itr = std::remove_if(_addonElm.begin(), _addonElm.end(),
-    [&](std::reference_wrapper<AutoConnectElement> const elm) {
-      return elm.get().name.equalsIgnoreCase(name);
-    });
-  return _addonElm.erase(itr, _addonElm.end()) != _addonElm.end();
-}
-
-/**
- * Set the value to specified element.
- * @param  name  A string of element name to set the value.
- * @param  value Setting value. (String)
- * @return true  The value was set.
- * @return false An element specified name is not registered,
- * or its element value does not match storage type.
- */
-bool AutoConnectAux::setElementValue(const String& name, const String value) {
-  AutoConnectElement* elm = getElement(name);
-  if (elm) {
-    if (elm->typeOf() == AC_Select) {
-      AutoConnectSelect* elmSelect = reinterpret_cast<AutoConnectSelect*>(elm);
-      elmSelect->select(value);
-    }
-    else {
-      if (elm->typeOf() == AC_Checkbox) {
-        if (value == "checked") {
-          AutoConnectCheckbox* elmCheckbox = reinterpret_cast<AutoConnectCheckbox*>(elm);
-          elmCheckbox->checked = true;
-        }
-      }
-      else if (elm->typeOf() == AC_Radio) {
-        AutoConnectRadio* elmRadio = reinterpret_cast<AutoConnectRadio*>(elm);
-        elmRadio->check(value);
-      }
-      else
-        elm->value = value;
-      return true;
-    }
-  }
-  return false;
-}
-
-/**
- * Set the value to specified element.
- * @param  name  A string of element name to set the value.
- * @param  value Setting value. (String)
- * @return true  The value was set.
- * @return false An element specified name is not registered,
- * or its element value must be array.
- */
-bool AutoConnectAux::setElementValue(const String& name, std::vector<String> const& values) {
-  bool  rc = false;
-
-  AutoConnectElement* elm = getElement(name);
-  if (elm) {
-    switch (elm->typeOf()) {
-    case AC_Radio: {
-      AutoConnectRadio* elmRadio = reinterpret_cast<AutoConnectRadio*>(elm);
-      elmRadio->empty();
-      for (String v : values)
-        elmRadio->add(v);
-      rc = true;
-      break;
-    }
-    case AC_Select: {
-      AutoConnectSelect* elmSelect = reinterpret_cast<AutoConnectSelect*>(elm);
-      elmSelect->empty();
-      for (String o : values)
-        elmSelect->add(o);
-      rc = true;
-      break;
-    }
-    default: {
-      AC_DBG("Element<%s> value type mismatch\n", name.c_str());
-      break;
-    }
-    }
-  }
-  return rc;
-}
-
-/**
- * The upload function that overrides the RequestHandler class
- * attached with ESP8266WebServer.
- * This function invokes the upload handler registered by the onUpload
- * function which will be implemented by the user sketch.
- */
-void AutoConnectAux::upload(const String& requestUri, const HTTPUpload& upload) {
-  if (upload.status == UPLOAD_FILE_START) {
-    AC_DBG("%s requests upload to %s\n", requestUri.c_str(), _uriStr.c_str());
-    // Selects a valid upload handler before uploading starts.
-    // Identify AutoConnectFile with the current upload request and
-    // save the value and mimeType attributes.
-    AC_DBG("ACFile %s ", upload.name.c_str());
-    String  logContext = "missing";
-
-    AutoConnectElementVT  addons;
-    AutoConnectAux* aux = _ac->_aux.get();
-    while (aux) {
-      if (aux->_uriStr == requestUri) {
-        addons = aux->_addonElm;
-        break;
-      }
-      aux = aux->_next.get();
-    }
-
-    _currentUpload = nullptr;
-    for (AutoConnectElement& elm : addons) {
-      if (elm.typeOf() == AC_File) {
-        _currentUpload = reinterpret_cast<AutoConnectFile*>(&elm);
-        // Reset previous value
-        _currentUpload->value = String("");
-        _currentUpload->mimeType = String("");
-        _currentUpload->size = 0;
-        // Overwrite with current upload request
-        if (upload.name.equalsIgnoreCase(_currentUpload->name)) {
-          _currentUpload->value = upload.filename;
-          _currentUpload->mimeType = upload.type;
-          logContext = "accepted " + _currentUpload->value;
-          break;
-        }
-      }
-    }
-    AC_DBG_DUMB("%s, handler ", logContext.c_str());
-
-    // If the current upload request is AutoConnectFile without default
-    // AutoConnectUpload (i.e. the store attribute is AC_File_Ex),
-    // enable the user-owned upload handler activated by the onUpload.
-    _upload = nullptr;
-    if (_currentUpload)
-      if (_currentUpload->attach(_currentUpload->store)) {
-        _upload = std::bind(&AutoConnectUploadHandler::upload, _currentUpload->upload(), std::placeholders::_1, std::placeholders::_2);
-        AC_DBG_DUMB("attached(%d)\n", (int)_currentUpload->store);
-      }
-
-    if (!_upload) {
-      if (_uploadHandler) {
-        _upload = _uploadHandler;
-        AC_DBG_DUMB("enabled\n");
-      }
-      else
-        AC_DBG_DUMB("missing\n");
-    }
-  }
-
-  // Invokes upload handler
-  if (_upload) {
-    _upload(requestUri, upload);
-    if (_currentUpload)
-      _currentUpload->size = upload.totalSize;
-    // Upload ended, purge handler
-    if (upload.status == UPLOAD_FILE_END || upload.status == UPLOAD_FILE_ABORTED) {
-      if (_currentUpload)
-        _currentUpload->detach();
-      AC_DBG("%d bytes uploaded\n", upload.totalSize);
-    }
-  }
-}
-
-/**
- * Concatenates subsequent AutoConnectAux pages starting from oneself 
- * to the chain list. 
- * AutoConnectAux is collected in the chain list and each object is 
- * chained by the "_next". AutoConnect follows the "_next" to manage 
- * auxiliary pages. The _concat function concatenates subsequent 
- * AutoConnectAuxs.
- * @param  aux   A reference of AutoConnectAux.
- */
-void AutoConnectAux::_concat(AutoConnectAux& aux) {
-  if (_next)
-    _next->_concat(aux);
-  else
-    _next.reset(&aux);
-}
-
-/**
- * Register the AutoConnect that owns itself.
- * AutoConenctAux needs to access the AutoConnect member. Also 
- * AutoConnectAux is cataloged by chain list. The _join function 
- * registers AutoConnect in the following AutoConnectAux chain list.
- * @param  ac    A reference of AutoConnect.
- */
-void AutoConnectAux::_join(AutoConnect& ac) {
-  _ac.reset(&ac);
-
-  // Chain to subsequent AutoConnectAux in the list.
-  if (_next)
-    _next->_join(ac);
-}
-
-/**
- * Inject the <li> element depending on the "luxbar-item" attribute
- * for implementing the AutoConnect menu.
- * @param  args  A reference of PageArgument but it's only used for
- * interface alignment and is not actually used.
- * @return A concatenated string of <li> elements for the menu item of
- * AutoConnect.
- */
-const String AutoConnectAux::_injectMenu(PageArgument& args) {
-  String  menuItem;
-
-  if (_menu)
-    menuItem = String(FPSTR("<li class=\"luxbar-item\"><a href=\"")) + String(_uri) + String("\">") + _title + String(FPSTR("</a></li>"));
-  if (_next)
-    menuItem += _next->_injectMenu(args);
-  return menuItem;
-}
-
-/**
- * Insert the uri that caused the request to the aux.
- */
-const String AutoConnectAux::_indicateUri(PageArgument& args) {
-  AC_UNUSED(args);
-  String  lastUri = _uriStr;
-  // The following code contains adding and trimming a blank that is
-  // wasteful for this function. It exists for avoiding the bug of
-  // WString::replace of ESP8266 arduino core 2.5.2.
-  // https://github.com/esp8266/Arduino/issues/6192
-  String  reps = "/";
-  String  replacement = "&#47;";
-  if (lastUri.length() == reps.length() + replacement.length())
-    lastUri += " ";
-  lastUri.replace(reps, replacement);
-  lastUri.trim();
-  return lastUri;
-}
-
-/**
- * Modifying the form of attribute depending on the type of `input` tag
- * contained. If the custom web page contains `input type=file` then
- * allows multipart as ENCTYPE attribute.
- * @param  args  A reference of PageArgument but unused.
- * @return HTML string that should be inserted.
- */
-const String AutoConnectAux::_indicateEncType(PageArgument& args) {
-  AC_UNUSED(args);
-  String  encType = String("");
-  for (AutoConnectElement& elm : _addonElm)
-    if (elm.typeOf() == AC_File) {
-      return String(F("enctype='multipart/form-data'"));
-    }
-  return AutoConnect::_emptyString;
-}
-
-/**
- * Insert the token handler of PageBuilder. This handler inserts HTML
- * elements generated by the whole AutoConnectElements to the auxiliary page.
- * @param  args  A reference of PageArgument but unused.
- * @return HTML string that should be inserted.
- */
-const String AutoConnectAux::_insertElement(PageArgument& args) {
-  String  body = String("");
-
-  // When WebServerClass::handleClient calls RequestHandler, the parsed
-  //  http argument has been prepared.
-  // If the current request argument contains AutoConnectElement, it is
-  // the form data of the AutoConnectAux page and with this timing save
-  // the value of each element.
-  WebServerClass*  _webServer = _ac->_webServer.get();
-  if (_webServer->hasArg(String(F(AUTOCONNECT_AUXURI_PARAM)))) {
-    _ac->_auxUri = _webServer->arg(String(F(AUTOCONNECT_AUXURI_PARAM)));
-    _ac->_auxUri.replace("&#47;", "/");
-    AutoConnectAux* aux = _ac->_aux.get();
-    while (aux) {
-      if (aux->_uriStr == _ac->_auxUri) {
-        // Save the value owned by each element contained in the POST body
-        // of a current HTTP request to AutoConnectElements.
-        aux->_storeElements(_webServer);
-        break;
-      }
-      aux = aux->_next.get();
-    }
-  }
-
-  // Call user handler before HTML generation.
-  if (_handler) {
-    if (_order & AC_EXIT_AHEAD) {
-      AC_DBG("CB in AHEAD %s\n", uri());
-      body += _handler(*this, args);
-    }
-  }
-
-  // Generate HTML for all AutoConnectElements contained in the page.
-  for (AutoConnectElement& addon : _addonElm)
-    body += addon.toHTML();
-
-  // Call user handler after HTML generation.
-  if (_handler) {
-    if (_order & AC_EXIT_LATER) {
-      AC_DBG("CB in LATER %s\n", uri());
-      body += _handler(*this, args);
-    }
-  }
-  return body;
-}
-
-/**
- * Generate an auxiliary page assembled with the AutoConnectElement.
- * This function is the core procedure of AutoConnectAux, and uses 
- * PageBuilder from the _PAGE_AUX template to build an AutoConnect 
- * menu and insert HTML elements. A template of an auxiliary page is 
- * fixed and its structure inherits from the AutoConnect.
- * @param  uri   An uri of the auxiliary page.
- * @return A PageElement of auxiliary page.
- */
-PageElement* AutoConnectAux::_setupPage(const String& uri) {
-  PageElement*  elm = nullptr;
-
-  if (_ac) {
-    if (uri != String(_uri)) {
-      if (_next) {
-        elm = _next->_setupPage(uri);
-      }
-    } else {
-      AutoConnect*  mother = _ac.get();
-      // Overwrite actual AutoConnectMenu title to the Aux. page title
-      if (_title.length())
-        mother->_menuTitle = _title;
-
-      elm = new PageElement();
-      // Construct the auxiliary page
-      elm->setMold(_PAGE_AUX);
-      elm->addToken(String(FPSTR("HEAD")), std::bind(&AutoConnect::_token_HEAD, mother, std::placeholders::_1));
-      elm->addToken(String(FPSTR("AUX_TITLE")), std::bind(&AutoConnectAux::_injectTitle, this, std::placeholders::_1));
-      elm->addToken(String(FPSTR("CSS_BASE")), std::bind(&AutoConnect::_token_CSS_BASE, mother, std::placeholders::_1));
-      elm->addToken(String(FPSTR("CSS_UL")), std::bind(&AutoConnect::_token_CSS_UL, mother, std::placeholders::_1));
-      elm->addToken(String(FPSTR("CSS_INPUT_BUTTON")), std::bind(&AutoConnect::_token_CSS_INPUT_BUTTON, mother, std::placeholders::_1));
-      elm->addToken(String(FPSTR("CSS_INPUT_TEXT")), std::bind(&AutoConnect::_token_CSS_INPUT_TEXT, mother, std::placeholders::_1));
-      elm->addToken(String(FPSTR("CSS_LUXBAR")), std::bind(&AutoConnect::_token_CSS_LUXBAR, mother, std::placeholders::_1));
-      elm->addToken(String(FPSTR("MENU_PRE")), std::bind(&AutoConnect::_token_MENU_PRE, mother, std::placeholders::_1));
-      elm->addToken(String(FPSTR("MENU_AUX")), std::bind(&AutoConnect::_token_MENU_AUX, mother, std::placeholders::_1));
-      elm->addToken(String(FPSTR("MENU_POST")), std::bind(&AutoConnect::_token_MENU_POST, mother, std::placeholders::_1));
-      elm->addToken(String(FPSTR("AUX_URI")), std::bind(&AutoConnectAux::_indicateUri, this, std::placeholders::_1));
-      elm->addToken(String(FPSTR("ENC_TYPE")), std::bind(&AutoConnectAux::_indicateEncType, this, std::placeholders::_1));
-      elm->addToken(String(FPSTR("AUX_ELEMENT")), std::bind(&AutoConnectAux::_insertElement, this, std::placeholders::_1));
-    }
-  }
-  return elm;
-}
-
-/**
- * Store element values owned by AutoConnectAux that caused the request.
- * Save the current arguments remaining in the Web server object when
- * this function invoked.
- * @param webServer A pointer to the class object of WebServerClass
- */
-void AutoConnectAux::_storeElements(WebServerClass* webServer) {
-  // Retrieve each element value, Overwrites the value of all cataloged
-  // AutoConnectElements with arguments inherited from last http request.
-  for (AutoConnectElement& elm : _addonElm) {
-
-    // The POST body does not contain the value of the AutoConnectFile,
-    // so it can not be obtained with the WebServerClass::arg function.
-    // The AutoConnectFile value will be restored from least recent
-    // upload request.
-    if (elm.typeOf() == AC_File)
-      continue;
-
-    // Relies on AutoConnectRadio, it restores to false at the being
-    // because the checkbox argument will not pass if it is not checked.
-    if (elm.typeOf() == AC_Checkbox)
-      reinterpret_cast<AutoConnectCheckbox&>(elm).checked = false;
-
-    // Seek by argument, store the value to its element.
-    for (int8_t n = 0; n < static_cast<int8_t>(webServer->args()); n++) {
-      if (webServer->argName(n).equalsIgnoreCase(elm.name)) {
-        String  elmValue = webServer->arg(n);
-        if (elm.typeOf() == AC_Checkbox)
-          elmValue = "checked";
-        setElementValue(elm.name, elmValue);
-      }
-    }
-  }
-}
-
-#ifdef AUTOCONNECT_USE_JSON
-
-/**
- * Load AutoConnectAux page from JSON description stored in PROGMEM.
- * This function can load AutoConnectAux for multiple AUX pages written
- * in JSON and is registered in AutoConnect.
- * @param  aux  JSON description to be load.
- * @return true Successfully loaded.
- */
-bool AutoConnect::load(PGM_P aux) {
-  return _parseJson<const __FlashStringHelper*>(reinterpret_cast<const __FlashStringHelper*>(aux));
-}
-
-/**
- * Load AutoConnectAux page from JSON description stored in PROGMEM.
- * This function can load AutoConnectAux for multiple AUX pages written
- * in JSON and is registered in AutoConnect.
- * @param  aux  JSON description to be load.
- * @return true Successfully loaded.
- */
-bool AutoConnect::load(const __FlashStringHelper* aux) {
-  return _parseJson<const __FlashStringHelper*>(aux);
-}
-
-/**
- * Load AutoConnectAux page from JSON description stored in the sketch.
- * This function can load AutoConnectAux for multiple AUX pages written
- * in JSON and is registered in AutoConnect.
- * @param  aux  JSON description to be load.
- * @return true Successfully loaded.
- */
-bool AutoConnect::load(const String& aux) {
-  return _parseJson<const String&>(aux);
-}
-
-/**
- * Load AutoConnectAux page from JSON description from the stream.
- * This function can load AutoConnectAux for multiple AUX pages written
- * in JSON and is registered in AutoConnect.
- * @param  aux  Stream for read AutoConnectAux elements.
- * @return true Successfully loaded.
- */
-bool AutoConnect::load(Stream& aux) {
-  return _parseJson<Stream&>(aux);
-}
-
-/**
- * Load AutoConnectAux page from JSON object.
- * @param  aux  A JsonVariant object that stores each element of AutoConnectAuxl.
- * @return true Successfully loaded.
- */
-bool AutoConnect::_load(JsonVariant& auxJson) {
-  bool  rc = true;
-  if (auxJson.is<JsonArray>()) {
-    ArduinoJsonArray  jb = auxJson.as<JsonArray>();
-    for (ArduinoJsonObject  auxJson : jb) {
-      AutoConnectAux* newAux = new AutoConnectAux;
-      if (newAux->_load(auxJson))
-        join(*newAux);
-      else {
-        delete newAux;
-        rc = false;
-        break;
-      }
-    }
-  }
-  else {
-    ArduinoJsonObject jb = auxJson.as<JsonObject>();
-    AutoConnectAux* newAux = new AutoConnectAux;
-    if (newAux->_load(jb))
-      join(*newAux);
-    else {
-      delete newAux;
-      rc = false;
-    }
-  }
-  return rc;
-}
-
-/**
- * Create an instance from the AutoConnectElement of the JSON object.
- * @param  json  A reference of JSON
- * @return A pointer of created AutoConnectElement instance.
- */
-AutoConnectElement* AutoConnectAux::_createElement(const JsonObject& json) {
-  AutoConnectElement* elm = nullptr;
-  String  type = json[F(AUTOCONNECT_JSON_KEY_TYPE)].as<String>();
-
-  switch (_asElementType(type)) {
-  case AC_Element:
-  case AC_Unknown:
-    elm = new AutoConnectElement;
-    break;
-  case AC_Button: {
-    AutoConnectButton*  cert_elm = new AutoConnectButton;
-    return reinterpret_cast<AutoConnectElement*>(cert_elm);
-  }
-  case AC_Checkbox: {
-    AutoConnectCheckbox*  cert_elm = new AutoConnectCheckbox;
-    return reinterpret_cast<AutoConnectElement*>(cert_elm);
-  }
-  case AC_File: {
-    AutoConnectFile* cert_elm = new AutoConnectFile;
-    return reinterpret_cast<AutoConnectElement*>(cert_elm);
-  }
-  case AC_Input: {
-    AutoConnectInput* cert_elm = new AutoConnectInput;
-    return reinterpret_cast<AutoConnectElement*>(cert_elm);
-  }
-  case AC_Radio: {
-    AutoConnectRadio*  cert_elm = new AutoConnectRadio;
-    return reinterpret_cast<AutoConnectElement*>(cert_elm);
-  }
-  case AC_Select: {
-    AutoConnectSelect*  cert_elm = new AutoConnectSelect;
-    return reinterpret_cast<AutoConnectElement*>(cert_elm);
-  }
-  case AC_Submit: {
-    AutoConnectSubmit*  cert_elm = new AutoConnectSubmit;
-    return reinterpret_cast<AutoConnectElement*>(cert_elm);
-  }
-  case AC_Text: {
-    AutoConnectText*  cert_elm = new AutoConnectText;
-    return reinterpret_cast<AutoConnectElement*>(cert_elm);
-  }
-  }
-  return elm;
-}
-
-/**
- * Constructs an AutoConnectAux instance by reading all the
- * AutoConnectElements of the specified URI from the elements defined 
- * JSON stored in a constant character string.
- * @param  in    AutoConnectAux element data which is described by JSON.
- * @return true  The element collection successfully loaded.
- * @return false Invalid JSON data occurred. 
- */
-bool AutoConnectAux::load(const String& in) {
-  return _parseJson<const String&>(in);
-}
-
-/**
- * Constructs an AutoConnectAux instance by reading all the
- * AutoConnectElements of the specified URI from the elements passing
- * pointer to JSON stored in pgm_data array.
- * @param  in    AutoConnectAux element data which is described by JSON.
- * @return true  The element collection successfully loaded.
- * @return false Invalid JSON data occurred. 
- */
-bool AutoConnectAux::load(PGM_P in) {
-  return _parseJson<const __FlashStringHelper*>(reinterpret_cast<const __FlashStringHelper*>(in));
-}
-
-/**
- * Constructs an AutoConnectAux instance by reading all the
- * AutoConnectElements of the specified URI from the elements defined
- * JSON stored in pgm_data array.
- * @param  in    AutoConnectAux element data which is described by JSON.
- * @return true  The element collection successfully loaded.
- * @return false Invalid JSON data occurred. 
- */
-bool AutoConnectAux::load(const __FlashStringHelper* in) {
-  return _parseJson<const __FlashStringHelper*>(in);
-}
-
-/**
- * Constructs an AutoConnectAux instance by reading all the
- * AutoConnectElements of the specified URI from the elements defined
- * JSON stored in a Stream.
- * @param  in    AutoConnectAux element data which is described by JSON.
- * @return true  The element collection successfully loaded.
- * @return false Invalid JSON data occurred. 
- */
-bool AutoConnectAux::load(Stream& in) {
-  return _parseJson<Stream&>(in);
-}
-
-/**
- * Load all elements of AutoConectAux page from JSON object.
- * @param  jb    Reference of JSON object
- * @return true  Successfully loaded.
- * @return false loading unsuccessful, JSON parsing error occurred.
- */
-bool AutoConnectAux::_load(JsonObject& jb) {
-  _title = jb[F(AUTOCONNECT_JSON_KEY_TITLE)].as<String>();
-  _uriStr = jb[F(AUTOCONNECT_JSON_KEY_URI)].as<String>();
-  _uri = _uriStr.c_str();
-  _menu = jb[F(AUTOCONNECT_JSON_KEY_MENU)].as<bool>();
-  JsonVariant elements = jb[F(AUTOCONNECT_JSON_KEY_ELEMENT)];
-  (void)_loadElement(elements, "");
-  return true;
-}
-
-/**
- * Load element specified by the name parameter from the stream
- * described by JSON. Usually, the Stream is specified a storm file of
- * SD or SPIFFS. The Stream must be opened before invoking the function.
- * @param  in    Reference of the Stream which contains the parameter
- * data described by JSON.
- * @param  name  The element name to be loaded. '*'specifies that all
- * elements are to be loaded.
- * @return A reference of loaded AutoConnectElement instance.
- */
-bool AutoConnectAux::loadElement(PGM_P in, const String& name) {
-  return _parseElement<const __FlashStringHelper*, const String&>(reinterpret_cast<const __FlashStringHelper*>(in), name);
-}
-
-bool AutoConnectAux::loadElement(const __FlashStringHelper* in, const String& name) {
-  return _parseElement<const __FlashStringHelper*, const String&>(in, name);
-}
-
-bool AutoConnectAux::loadElement(const String& in, const String& name) {
-  return _parseElement<const String&, const String&>(in, name);
-}
-bool AutoConnectAux::loadElement(Stream& in, const String& name) {
-  return _parseElement<Stream&, const String&>(in, name);
-}
-
-bool AutoConnectAux::loadElement(PGM_P in, std::vector<String> const& names) {
-  return _parseElement<const __FlashStringHelper*, std::vector<String> const&>(reinterpret_cast<const __FlashStringHelper*>(in), names);
-}
-
-bool AutoConnectAux::loadElement(const __FlashStringHelper* in, std::vector<String> const& names) {
-  return _parseElement<const __FlashStringHelper*, std::vector<String> const&>(in, names);
-}
-
-bool AutoConnectAux::loadElement(const String& in, std::vector<String> const& names) {
-  return _parseElement<const String&, std::vector<String> const&>(in, names);
-}
-
-bool AutoConnectAux::loadElement(Stream& in, std::vector<String> const& names) {
-  return _parseElement<Stream&, std::vector<String> const&>(in, names);
-}
-
-bool AutoConnectAux::_loadElement(JsonVariant& jb, std::vector<String> const& names) {
-  bool  rc = true;
-  for (const String& name : names)
-    rc &= _loadElement(jb, name);
-  return rc;
-}
-
-bool AutoConnectAux::_loadElement(JsonVariant& jb, const String& name) {
-  bool  rc = false;
-  if (jb.is<JsonArray>()) {
-    ArduinoJsonArray  elements = jb.as<JsonArray>();
-    for (ArduinoJsonObject  element : elements) {
-      if (name.length()) {
-        //Finds an element with the specified name in the JSON array and loads it.
-        if (!name.equalsIgnoreCase(element[F(AUTOCONNECT_JSON_KEY_NAME)].as<String>()))
-          continue;
-      }
-      AutoConnectElement& elm = _loadElement(element, name);
-      if (elm.name.length())
-        rc = true;
-      if (name.length())
-        break;
-    }
-  }
-  else {
-    ArduinoJsonObject element = jb.as<JsonObject>();
-    AutoConnectElement& elm = _loadElement(element, name);
-    if (elm.name.length())
-      rc = true;
-  }
-  return rc;
-}
-
-AutoConnectElement& AutoConnectAux::_loadElement(JsonObject& element, const String& name) {
-  AutoConnectElement* auxElm = nullptr;
-  String  elmName = element[F(AUTOCONNECT_JSON_KEY_NAME)].as<String>();
-  if (!name.length() || name.equalsIgnoreCase(elmName)) {
-    // The specified element is defined in the JSON stream.
-    // Loads from JSON object.
-    auxElm = getElement(elmName);
-    // The element is not created yet, create new one.
-    if (!auxElm) {
-      if (elmName.length()) {
-        if ((auxElm = _createElement(element))) {
-          AC_DBG("%s<%d> of %s created\n", elmName.c_str(), (int)(auxElm->typeOf()), uri());
-          add(*auxElm);   // Insert to AutoConnect
-        }
-        else {
-          AC_DBG("%s unknown element type\n", elmName.c_str());
-        }
-      }
-      else {
-        AC_DBG("Element name missing\n");
-      }
-    }
-    if (auxElm) {
-      if (auxElm->loadMember(element))
-        AC_DBG("%s<%d> of %s loaded\n", auxElm->name.c_str(), (int)auxElm->typeOf(), uri());
-      else {
-        // Element type mismatch
-        AC_DBG("Type of %s element mismatched\n", elmName.c_str());
-      }
-    }
-  }
-  return auxElm ? *auxElm : _nullElement();
-}
-
-/**
- * Serialize an element specified the name into the stream.
- * @param  name  An element name to be output.
- * @return Number of bytes output
- */
-size_t AutoConnectAux::saveElement(Stream& out, std::vector<String> const& names) {
-  size_t  bufferSize = 0;
-  size_t  amount = names.size();
-  size_t  size_n = 0;
-
-  // Calculate JSON buffer size
-  if (amount == 0) {
-    bufferSize += JSON_OBJECT_SIZE(4);
-    bufferSize += sizeof(AUTOCONNECT_JSON_KEY_TITLE) + _title.length() + 1 + sizeof(AUTOCONNECT_JSON_KEY_URI) + _uriStr.length() + 1 + sizeof(AUTOCONNECT_JSON_KEY_MENU) + sizeof(AUTOCONNECT_JSON_KEY_ELEMENT);
-    bufferSize += JSON_ARRAY_SIZE(_addonElm.size());
-  }
-  else
-    bufferSize += JSON_ARRAY_SIZE(amount);
-
-  for (AutoConnectElement& elmEach : _addonElm) {
-    AutoConnectElement* elm = &elmEach;
-    if (amount > 0) {
-      String& elmName = elm->name;
-      auto aim = std::find_if(names.begin(), names.end(), [&](const String& n) { return n.equalsIgnoreCase(elmName); });
-      if (aim == names.end())
-        continue;
-    }
-    bufferSize += elm->getObjectSize();
-  }
-  // Round up to 16 boundary
-  bufferSize = bufferSize > 0 ? ((bufferSize + 16) & (~0xf)) : bufferSize;
-  AC_DBG("JSON buffer size:%d\n", bufferSize);
-
-  // Serialization
-  if (bufferSize > 0) {
-    ArduinoJsonBuffer jb(bufferSize);
-    if (amount == 1) {
-      ArduinoJsonObject element = ARDUINOJSON_CREATEOBJECT(jb);
-      for (AutoConnectElement& elm : _addonElm)
-        if (elm.name.equalsIgnoreCase(names[0])) {
-          elm.serialize(element);
-          break;
-        }
-      size_n = ARDUINOJSON_PRINT(element, out);
-    }
-    else if (amount == 0) {
-      ArduinoJsonObject json = ARDUINOJSON_CREATEOBJECT(jb);
-      json[F(AUTOCONNECT_JSON_KEY_TITLE)] = _title;
-      json[F(AUTOCONNECT_JSON_KEY_URI)] = _uriStr;
-      json[F(AUTOCONNECT_JSON_KEY_MENU)] = _menu;
-      ArduinoJsonArray  elements = json.createNestedArray(F(AUTOCONNECT_JSON_KEY_ELEMENT));
-      for (AutoConnectElement& elm : _addonElm) {
-        ArduinoJsonObject element = elements.createNestedObject();
-        elm.serialize(element);
-      }
-      size_n = ARDUINOJSON_PRETTYPRINT(json, out);
-    }
-    else if (amount >= 2) {
-      ArduinoJsonArray  elements = ARDUINOJSON_CREATEARRAY(jb);
-      for (String name : names)
-        for (AutoConnectElement& elm : _addonElm)
-          if (elm.name.equalsIgnoreCase(name)) {
-            ArduinoJsonObject element = elements.createNestedObject();
-            elm.serialize(element);
-            break;
-          }
-      size_n = ARDUINOJSON_PRETTYPRINT(elements, out);
-    }
-  }
-  return size_n;
-}
-
-/**
- * Convert element type from type as String.
- * @param  type  An element type as String
- * @return A type of ACElement_t
- */
-ACElement_t AutoConnectAux::_asElementType(const String& type) {
-  typedef struct {
-    const char* tName;
-    ACElement_t tEnum;
-  } ACElementType_t;
-  static const ACElementType_t  types[] PROGMEM = {
-    { AUTOCONNECT_JSON_TYPE_ACBUTTON, AC_Button },
-    { AUTOCONNECT_JSON_TYPE_ACCHECKBOX, AC_Checkbox },
-    { AUTOCONNECT_JSON_TYPE_ACELEMENT, AC_Element },
-    { AUTOCONNECT_JSON_TYPE_ACFILE, AC_File },
-    { AUTOCONNECT_JSON_TYPE_ACINPUT, AC_Input },
-    { AUTOCONNECT_JSON_TYPE_ACRADIO, AC_Radio },
-    { AUTOCONNECT_JSON_TYPE_ACSELECT, AC_Select },
-    { AUTOCONNECT_JSON_TYPE_ACSUBMIT, AC_Submit },
-    { AUTOCONNECT_JSON_TYPE_ACTEXT, AC_Text }
-  };
-
-  ACElement_t  t = AC_Unknown;
-  for (size_t n = 0; n < (sizeof(types) / sizeof(ACElementType_t)); n++) {
-    if (type.equalsIgnoreCase(String(FPSTR(types[n].tName))))
-      return types[n].tEnum;
-  }
-  return t;
-}
-
-#endif // !AUTOCONNECT_USE_JSON




diff --git a/lib/AutoConnect-master/src/AutoConnectAux.h b/lib/AutoConnect-master/src/AutoConnectAux.h
deleted file mode 100644
index fceb7b232f0aff39bfa905e72d1bf3ff773182d4..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/src/AutoConnectAux.h
+++ /dev/null
@@ -1,157 +0,0 @@
-/**
- * Declaration of AutoConnectAux basic class.
- * @file AutoConnectAuxBasis.h
- * @author [email protected]
- * @version  0.9.9
- * @date 2019-05-23
- * @copyright  MIT license.
- */
-
-#ifndef _AUTOCONNECTAUX_H_
-#define _AUTOCONNECTAUX_H_
-
-#include "AutoConnectDefs.h"
-#include <vector>
-#include <memory>
-#include <functional>
-#include <type_traits>
-#ifdef AUTOCONNECT_USE_JSON
-#include <Stream.h>
-#endif // !AUTOCONNECT_USE_JSON
-#include <PageBuilder.h>
-#include "AutoConnectElement.h"
-
-class AutoConnect;  // Reference to avoid circular
-class AutoConnectAux;  // Reference to avoid circular
-
-// Manage placed AutoConnectElement with a vector
-typedef std::vector<std::reference_wrapper<AutoConnectElement>> AutoConnectElementVT;
-
-// A type of callback function when  AutoConnectAux page requested.
-typedef std::function<String(AutoConnectAux&, PageArgument&)>  AuxHandlerFunctionT;
-
-// A type for the order in which callback functions are called.
-typedef enum {
-  AC_EXIT_AHEAD = 1,    /**< Callback before building HTML */
-  AC_EXIT_LATER = 2,    /**< Callback after building HTML */
-  AC_EXIT_BOTH = 3      /**< Callback twice before and after building HTML */
-} AutoConnectExitOrder_t;
-
-/**
- * A class that handles an auxiliary page with AutoConnectElement
- * that placed on it by binding it to the AutoConnect menu.
- * @param  uri     An uri string of this page.
- * @param  title   A title string of this page.
- * @param  addons  A set of AutoConnectElement vector.
- * @param  menu    A switch for item displaying in AutoConnect menu.
- */
-class AutoConnectAux : public PageBuilder {
- public:
-  explicit AutoConnectAux(const String& uri = String(""), const String& title = String(""), const bool menu = true, const AutoConnectElementVT addons = AutoConnectElementVT()) :
-    _title(title), _menu(menu), _uriStr(String(uri)), _addonElm(addons), _handler(nullptr), _order(AC_EXIT_AHEAD), _uploadHandler(nullptr) { _uri = _uriStr.c_str(); _next.release(); _ac.release(); }
-  ~AutoConnectAux();
-  AutoConnectElement& operator[](const String& name) { return *getElement(name); }
-  void  add(AutoConnectElement& addon);                                 /**< Add an element to the auxiliary page */
-  void  add(AutoConnectElementVT addons);                               /**< Add the element set to the auxiliary page */
-  template<typename T>
-  T&    getElement(const String& name);
-  AutoConnectElement*   getElement(const String& name);                 /**< Get registered AutoConnectElement as specified name */
-  AutoConnectElementVT& getElements(void) { return _addonElm; }         /**< Get vector of all elements */
-  void  menu(const bool post) { _menu = post; }                         /**< Set or reset the display as menu item for this aux */
-  bool  release(const String& name);                                    /**< Release an AutoConnectElement */
-  bool  setElementValue(const String& name, const String value);        /**< Set value to specified element */
-  bool  setElementValue(const String& name, std::vector<String> const& values);  /**< Set values collection to specified element */
-  void  setTitle(const String& title) { _title = title; }               /**< Set a title of the auxiliary page */
-  void  on(const AuxHandlerFunctionT handler, const AutoConnectExitOrder_t order = AC_EXIT_AHEAD) { _handler = handler; _order = order; }   /**< Set user handler */
-  void  onUpload(PageBuilder::UploadFuncT uploadFunc) override { _uploadHandler = uploadFunc; }
-  template<typename T>
-  void  onUpload(T& uploadClass) {
-    static_assert(std::is_base_of<AutoConnectUploadHandler, T>::value, "onUpload type must be inherited AutoConnectUploadHandler");
-    _uploadHandler = std::bind(&T::upload, &uploadClass, std::placeholders::_1, std::placeholders::_2);
-  }
-
-#ifdef AUTOCONNECT_USE_JSON
-  bool  load(PGM_P in);                                                 /**< Load whole elements to AutoConnectAux Page */
-  bool  load(const __FlashStringHelper* in);                            /**< Load whole elements to AutoConnectAux Page */
-  bool  load(const String& in);                                         /**< Load whole elements to AutoConnectAux Page */
-  bool  load(Stream& in);                                               /**< Load whole elements to AutoConnectAux Page */
-  bool  loadElement(PGM_P in, const String& name = String(""));         /**< Load specified element */
-  bool  loadElement(PGM_P in, std::vector<String> const& names);        /**< Load any specified elements */
-  bool  loadElement(const __FlashStringHelper* in, const String& name = String(""));  /**< Load specified element */
-  bool  loadElement(const __FlashStringHelper* in, std::vector<String> const& names); /**< Load any specified elements */
-  bool  loadElement(const String& in, const String& name = String("")); /**< Load specified element */
-  bool  loadElement(const String& in, std::vector<String> const& names);/**< Load any specified elements */
-  bool  loadElement(Stream& in, const String& name = String(""));       /**< Load specified element */
-  bool  loadElement(Stream& in, std::vector<String> const& names);      /**< Load any specified elements */
-  size_t  saveElement(Stream& out, std::vector<String> const& names = {});  /**< Write elements of AutoConnectAux to the stream */
-#endif // !AUTOCONNECT_USE_JSON
-
- protected:
-  void  upload(const String& requestUri, const HTTPUpload& upload);     /**< Uploader wrapper */
-  void  _concat(AutoConnectAux& aux);                                   /**< Make up chain of AutoConnectAux */
-  void  _join(AutoConnect& ac);                                         /**< Make a link to AutoConnect */
-  PageElement*  _setupPage(const String& uri);                          /**< AutoConnectAux page builder */
-  const String  _insertElement(PageArgument& args);                     /**< Insert a generated HTML to the page built by PageBuilder */
-  const String  _injectTitle(PageArgument& args) const { (void)(args); return _title; } /**< Returns title of this page to PageBuilder */
-  const String  _injectMenu(PageArgument& args);                        /**< Inject menu title of this page to PageBuilder */
-  const String  _indicateUri(PageArgument& args);                       /**< Inject the uri that caused the request */
-  const String  _indicateEncType(PageArgument& args);                   /**< Inject the ENCTYPE attribute */
-  void  _storeElements(WebServerClass* webServer);                      /**< Store element values from contained in request arguments */
-  static AutoConnectElement&  _nullElement(void);                       /**< A static returning value as invalid */
-
-#ifdef AUTOCONNECT_USE_JSON
-  template<typename T>
-  bool  _parseJson(T in);
-  bool  _load(JsonObject& in);                                          /**< Load all elements from JSON object */
-  bool  _loadElement(JsonVariant& in, const String& name);              /**< Load an element as specified name from JSON object */
-  bool  _loadElement(JsonVariant& in, std::vector<String> const& names);  /**< Load any elements as specified name from JSON object */
-  AutoConnectElement& _loadElement(JsonObject& in, const String& name); /**< Load an element as specified name from JSON object */
-  AutoConnectElement* _createElement(const JsonObject& json);           /**< Create an AutoConnectElement instance from JSON object */
-  static ACElement_t  _asElementType(const String& type);               /**< Convert a string of element type to the enumeration value */
-  /**
-   * Parse and load a JSON document which declares one of the AutoConnectElement.
-   * The compiler instantiates this template according to the stored data type that contains the JSON document.
-   * This template also generates different parsing function calls depending on the ArduinoJson version.
-   * @param  T  An object type of the JSON document which must be a passable object to ArduinoJson.
-   * @param  U  An instance of a souce name to load.
-   */
-  template<typename T, typename U,
-  typename std::enable_if<std::is_same<U, const String&>::value || std::is_same<U, std::vector<String> const&>::value>::type* = nullptr>
-  bool _parseElement(T in, U name) {
-    ArduinoJsonBuffer jsonBuffer(AUTOCONNECT_JSONBUFFER_PRIMITIVE_SIZE);
-    JsonVariant jb;
-  #if ARDUINOJSON_VERSION_MAJOR<=5
-    jb = jsonBuffer.parse(in);
-    if (!jb.success()) {
-      AC_DBG("JSON parse error\n");
-      return false;
-    }
-  #else
-    DeserializationError  err = deserializeJson(jsonBuffer, in);
-    if (err) {
-      AC_DBG("Deserialize:%s\n", err.c_str());
-      return false;
-    }
-    jb = jsonBuffer.as<JsonVariant>();
-  #endif
-    return _loadElement(jb, name);
-  }
-#endif // !AUTOCONNECT_USE_JSON
-
-  String  _title;                             /**< A title of the page */
-  bool    _menu;                              /**< Switch for menu displaying */
-  String  _uriStr;                            /**< uri as String */
-  AutoConnectElementVT  _addonElm;            /**< A vector set of AutoConnectElements placed on this auxiliary page */
-  std::unique_ptr<AutoConnectAux> _next;      /**< Auxiliary pages chain list */
-  std::unique_ptr<AutoConnect>    _ac;        /**< Hosted AutoConnect instance */
-  AuxHandlerFunctionT   _handler;             /**< User sketch callback function when AutoConnectAux page requested. */
-  AutoConnectExitOrder_t  _order;             /**< The order in which callback functions are called. */
-  PageBuilder::UploadFuncT    _uploadHandler; /**< The AutoConnectFile corresponding to current upload */
-  AutoConnectFile*      _currentUpload;       /**< AutoConnectFile handling the current upload */
-  static const char _PAGE_AUX[] PROGMEM;      /**< Auxiliary page template */
-
-  // Protected members can be used from AutoConnect which handles AutoConnectAux pages.
-  friend class AutoConnect;
-};
-
-#endif // _AUTOCONNECTAUX_H_




diff --git a/lib/AutoConnect-master/src/AutoConnectAuxImpl.h b/lib/AutoConnect-master/src/AutoConnectAuxImpl.h
deleted file mode 100644
index 6ee9cc37001326d3a22a44a4402eb67870eb0979..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/src/AutoConnectAuxImpl.h
+++ /dev/null
@@ -1,385 +0,0 @@
-/**
- * Implementation of template functions of AutoConnect and AutoConnectAux. 
- * This implementation instantiates completely the void AutoConnectElement
- * as each type and also absorbs interface differences due to ArduinoJson
- * version differences. 
- * @file AutoConnectAuxImpl.h
- * @author [email protected]
- * @version  0.9.8
- * @date 2019-03-21
- * @copyright  MIT license.
- */
-
-#ifndef _AUTOCONNECTAUXIMPL_H_
-#define _AUTOCONNECTAUXIMPL_H_
-
-#include "AutoConnectDefs.h"
-
-#ifndef AUTOCONNECT_USE_JSON
-
-/**
- * Get AutoConnectElementBasis element.
- * @param  name  an element name.
- * @return A reference of AutoConnectElement class.
- */
-template<>
-AutoConnectElementBasis& AutoConnectAux::getElement(const String& name) {
-  AutoConnectElement* elm = getElement(name);
-  if (elm) {
-    return *(reinterpret_cast<AutoConnectElementBasis*>(elm));
-  }
-  return reinterpret_cast<AutoConnectElementBasis&>(_nullElement());
-}
-
-/**
- * Get AutoConnectButtonBasis element.
- * @param  name  An element name.
- * @return A reference of AutoConnectButton class.
- */
-template<>
-AutoConnectButtonBasis& AutoConnectAux::getElement(const String& name) {
-  AutoConnectElement* elm = getElement(name);
-  if (elm) {
-    if (elm->typeOf() == AC_Button)
-      return *(reinterpret_cast<AutoConnectButtonBasis*>(elm));
-    else
-      AC_DBG("Element<%s> type mismatch<%d>\n", name.c_str(), elm->typeOf());
-  }
-  return reinterpret_cast<AutoConnectButtonBasis&>(_nullElement());
-}
-
-/**
- * Get AutoConnectCheckboxBasis element.
- * @param  name  An element name.
- * @return A reference of AutoConnectCheckbox class.
- */
-template<>
-AutoConnectCheckboxBasis& AutoConnectAux::getElement(const String& name) {
-  AutoConnectElement* elm = getElement(name);
-  if (elm) {
-    if (elm->typeOf() == AC_Checkbox)
-      return *(reinterpret_cast<AutoConnectCheckboxBasis*>(elm));
-    else
-      AC_DBG("Element<%s> type mismatch<%d>\n", name.c_str(), elm->typeOf());
-  }
-  return reinterpret_cast<AutoConnectCheckboxBasis&>(_nullElement());
-}
-
-/**
- * Get AutoConnectFileBasis element.
- * @param  name  An element name.
- * @return A reference of AutoConnectFile class.
- */
-template<>
-AutoConnectFileBasis& AutoConnectAux::getElement(const String& name) {
-  AutoConnectElement* elm = getElement(name);
-  if (elm) {
-    if (elm->typeOf() == AC_File)
-      return *(reinterpret_cast<AutoConnectFileBasis*>(elm));
-    else
-      AC_DBG("Element<%s> type mismatch<%d>\n", name.c_str(), elm->typeOf());
-  }
-  return reinterpret_cast<AutoConnectFileBasis&>(_nullElement());
-}
-
-/**
- * Get AutoConnectInputBasis element.
- * @param  name  An element name.
- * @return A reference of AutoConnectInput class.
- */
-template<>
-AutoConnectInputBasis& AutoConnectAux::getElement(const String& name) {
-  AutoConnectElement* elm = getElement(name);
-  if (elm) {
-    if (elm->typeOf() == AC_Input)
-      return *(reinterpret_cast<AutoConnectInputBasis*>(elm));
-    else
-      AC_DBG("Element<%s> type mismatch<%d>\n", name.c_str(), elm->typeOf());
-  }
-  return reinterpret_cast<AutoConnectInputBasis&>(_nullElement());
-}
-
-/**
- * Get AutoConnectRadioBasis element.
- * @param  name  An element name.
- * @return A reference of AutoConnectRadio class.
- */
-template<>
-AutoConnectRadioBasis& AutoConnectAux::getElement(const String& name) {
-  AutoConnectElement* elm = getElement(name);
-  if (elm) {
-    if (elm->typeOf() == AC_Radio)
-      return *(reinterpret_cast<AutoConnectRadioBasis*>(elm));
-    else
-      AC_DBG("Element<%s> type mismatch<%d>\n", name.c_str(), elm->typeOf());
-  }
-  return reinterpret_cast<AutoConnectRadioBasis&>(_nullElement());
-}
-
-/**
- * Get AutoConnectSelectBasis element.
- * @param  name  An element name.
- * @return A reference of AutoConnectSelect class.
- */
-template<>
-AutoConnectSelectBasis& AutoConnectAux::getElement(const String& name) {
-  AutoConnectElement* elm = getElement(name);
-  if (elm) {
-    if (elm->typeOf() == AC_Select)
-      return *(reinterpret_cast<AutoConnectSelectBasis*>(elm));
-    else
-      AC_DBG("Element<%s> type mismatch<%d>\n", name.c_str(), elm->typeOf());
-  }
-  return reinterpret_cast<AutoConnectSelectBasis&>(_nullElement());
-}
-
-/**
- * Get AutoConnectSubmitBasis element.
- * @param  name  An element name.
- * @return A reference of AutoConnectSubmit class.
- */
-template<>
-AutoConnectSubmitBasis& AutoConnectAux::getElement(const String& name) {
-  AutoConnectElement* elm = getElement(name);
-  if (elm) {
-    if (elm->typeOf() == AC_Submit)
-      return *(reinterpret_cast<AutoConnectSubmitBasis*>(elm));
-    else
-      AC_DBG("Element<%s> type mismatch<%d>\n", name.c_str(), elm->typeOf());
-  }
-  return reinterpret_cast<AutoConnectSubmitBasis&>(_nullElement());
-}
-
-/**
- * Get AutoConnectTextBasis element.
- * @param  name  An element name.
- * @return A reference of AutoConnectText class.
- */
-template<>
-AutoConnectTextBasis& AutoConnectAux::getElement(const String& name) {
-  AutoConnectElement* elm = getElement(name);
-  if (elm) {
-    if (elm->typeOf() == AC_Text)
-      return *(reinterpret_cast<AutoConnectTextBasis*>(elm));
-    else
-      AC_DBG("Element<%s> type mismatch<%d>\n", name.c_str(), elm->typeOf());
-  }
-  return reinterpret_cast<AutoConnectTextBasis&>(_nullElement());
-}
-
-#else
-
-/**
- * Parse and load a JSON document which marks up multiple custom web
- * pages. The compiler instantiates this template according to the stored
- * data type that contains the JSON document.
- * This template also generates different parsing function calls
- * depending on the ArduinoJson version.
- * @param  T  An object type of the JSON document which must be a
- * passable object to ArduinoJson.
- * @param  in An instance of a source JSON document to load.
- */
-template<typename T>
-bool AutoConnect::_parseJson(T in) {
-  ArduinoJsonBuffer jsonBuffer(AUTOCONNECT_JSONBUFFER_PRIMITIVE_SIZE);
-  JsonVariant jv;
-#if ARDUINOJSON_VERSION_MAJOR<=5
-  jv = jsonBuffer.parse(in);
-  if (!jv.success()) {
-    AC_DBG("JSON parse error\n");
-    return false;
-  }
-#else
-  DeserializationError  err = deserializeJson(jsonBuffer, in);
-  if (err) {
-    AC_DBG("Deserialize error:%s\n", err.c_str());
-    return false;
-  }
-  jv = jsonBuffer.as<JsonVariant>();
-#endif
-  return _load(jv);
-}
-
-/**
- * Parse and load a JSON document which marks up a custom web page.
- * The compiler instantiates this template according to the stored data
- * type that contains the JSON document.
- * This template also generates different parsing function calls
- * depending on the ArduinoJson version.
- * @param  T  An object type of the JSON document which must be a
- * passable object to ArduinoJson.
- * @param  in An instance of a source JSON document to load.
- */
-template<typename T>
-bool AutoConnectAux::_parseJson(T in) {
-  ArduinoJsonBuffer jsonBuffer(AUTOCONNECT_JSONBUFFER_PRIMITIVE_SIZE);
-#if ARDUINOJSON_VERSION_MAJOR<=5
-  JsonObject& jb = jsonBuffer.parseObject(in);
-  if (!jb.success()) {
-    AC_DBG("JSON parse error\n");
-    return false;
-  }
-#else
-  DeserializationError  err = deserializeJson(jsonBuffer, in);
-  if (err) {
-    AC_DBG("Deserialize:%s\n", err.c_str());
-    return false;
-  }
-  JsonObject jb = jsonBuffer.as<JsonObject>();
-#endif
-  return _load(jb);
-}
-
-/**
- * Get AutoConnectElementJson element.
- * @param  name  an element name.
- * @return A reference of AutoConnectElement class.
- */
-template<>
-AutoConnectElementJson& AutoConnectAux::getElement(const String& name) {
-  AutoConnectElement* elm = getElement(name);
-  if (elm) {
-    return *(reinterpret_cast<AutoConnectElementJson*>(elm));
-  }
-  return reinterpret_cast<AutoConnectElementJson&>(_nullElement());
-}
-
-/**
- * Get AutoConnectButtonJson element.
- * @param  name  An element name.
- * @return A reference of AutoConnectButton class.
- */
-template<>
-AutoConnectButtonJson& AutoConnectAux::getElement(const String& name) {
-  AutoConnectElement* elm = getElement(name);
-  if (elm) {
-    if (elm->typeOf() == AC_Button)
-      return *(reinterpret_cast<AutoConnectButtonJson*>(elm));
-    else
-      AC_DBG("Element<%s> type mismatch<%d>\n", name.c_str(), elm->typeOf());
-  }
-  return reinterpret_cast<AutoConnectButtonJson&>(_nullElement());
-}
-
-/**
- * Get AutoConnectCheckboxJson element.
- * @param  name  An element name.
- * @return A reference of AutoConnectCheckbox class.
- */
-template<>
-AutoConnectCheckboxJson& AutoConnectAux::getElement(const String& name) {
-  AutoConnectElement* elm = getElement(name);
-  if (elm) {
-    if (elm->typeOf() == AC_Checkbox)
-      return *(reinterpret_cast<AutoConnectCheckboxJson*>(elm));
-    else
-      AC_DBG("Element<%s> type mismatch<%d>\n", name.c_str(), elm->typeOf());
-  }
-  return reinterpret_cast<AutoConnectCheckboxJson&>(_nullElement());
-}
-
-/**
- * Get AutoConnectFile element.
- * @param  name  An element name.
- * @return A reference of AutoConnectFile class.
- */
-template<>
-AutoConnectFileJson& AutoConnectAux::getElement(const String& name) {
-  AutoConnectElement* elm = getElement(name);
-  if (elm) {
-    if (elm->typeOf() == AC_File)
-      return *(reinterpret_cast<AutoConnectFileJson*>(elm));
-    else
-      AC_DBG("Element<%s> type mismatch<%d>\n", name.c_str(), elm->typeOf());
-  }
-  return reinterpret_cast<AutoConnectFileJson&>(_nullElement());
-}
-
-/**
- * Get AutoConnectInputJson element.
- * @param  name  An element name.
- * @return A reference of AutoConnectInput class.
- */
-template<>
-AutoConnectInputJson& AutoConnectAux::getElement(const String& name) {
-  AutoConnectElement* elm = getElement(name);
-  if (elm) {
-    if (elm->typeOf() == AC_Input)
-      return *(reinterpret_cast<AutoConnectInputJson*>(elm));
-    else
-      AC_DBG("Element<%s> type mismatch<%d>\n", name.c_str(), elm->typeOf());
-  }
-  return reinterpret_cast<AutoConnectInputJson&>(_nullElement());
-}
-
-/**
- * Get AutoConnectRadioJson element.
- * @param  name  An element name.
- * @return A reference of AutoConnectRadio class.
- */
-template<>
-AutoConnectRadioJson& AutoConnectAux::getElement(const String& name) {
-  AutoConnectElement* elm = getElement(name);
-  if (elm) {
-    if (elm->typeOf() == AC_Radio)
-      return *(reinterpret_cast<AutoConnectRadioJson*>(elm));
-    else
-      AC_DBG("Element<%s> type mismatch<%d>\n", name.c_str(), elm->typeOf());
-  }
-  return reinterpret_cast<AutoConnectRadioJson&>(_nullElement());
-}
-
-/**
- * Get AutoConnectSelectJson element.
- * @param  name  An element name.
- * @return A reference of AutoConnectSelect class.
- */
-template<>
-AutoConnectSelectJson& AutoConnectAux::getElement(const String& name) {
-  AutoConnectElement* elm = getElement(name);
-  if (elm) {
-    if (elm->typeOf() == AC_Select)
-      return *(reinterpret_cast<AutoConnectSelectJson*>(elm));
-    else
-      AC_DBG("Element<%s> type mismatch<%d>\n", name.c_str(), elm->typeOf());
-  }
-  return reinterpret_cast<AutoConnectSelectJson&>(_nullElement());
-}
-
-/**
- * Get AutoConnectSubmitJson element.
- * @param  name  An element name.
- * @return A reference of AutoConnectSubmit class.
- */
-template<>
-AutoConnectSubmitJson& AutoConnectAux::getElement(const String& name) {
-  AutoConnectElement* elm = getElement(name);
-  if (elm) {
-    if (elm->typeOf() == AC_Submit)
-      return *(reinterpret_cast<AutoConnectSubmitJson*>(elm));
-    else
-      AC_DBG("Element<%s> type mismatch<%d>\n", name.c_str(), elm->typeOf());
-  }
-  return reinterpret_cast<AutoConnectSubmitJson&>(_nullElement());
-}
-
-/**
- * Get AutoConnectTextJson element.
- * @param  name  An element name.
- * @return A reference of AutoConnectText class.
- */
-template<>
-AutoConnectTextJson& AutoConnectAux::getElement(const String& name) {
-  AutoConnectElement* elm = getElement(name);
-  if (elm) {
-    if (elm->typeOf() == AC_Text)
-      return *(reinterpret_cast<AutoConnectTextJson*>(elm));
-    else
-      AC_DBG("Element<%s> type mismatch<%d>\n", name.c_str(), elm->typeOf());
-  }
-  return reinterpret_cast<AutoConnectTextJson&>(_nullElement());
-}
-
-#endif // !AUTOCONNECT_USE_JSON
-
-#endif // !_AUTOCONNECTAUXIMPL_H_




diff --git a/lib/AutoConnect-master/src/AutoConnectCredential.cpp b/lib/AutoConnect-master/src/AutoConnectCredential.cpp
deleted file mode 100644
index 50407c5f4e3d1cccd1d0230b78a3114967edeeba..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/src/AutoConnectCredential.cpp
+++ /dev/null
@@ -1,288 +0,0 @@
-/**
- *	AutoConnectCredential class implementation.
- *	@file	AutoConnectCredential.cpp
- *	@author	[email protected]
- *	@version	0.9.5
- *	@date	2018-02-17
- *	@copyright	MIT license.
- */
-
-#include <EEPROM.h>
-#include "AutoConnectCredential.h"
-
-#define AC_IDENTIFIER "AC_CREDT"
-#define AC_HEADERSIZE ((int)(_offset + sizeof(AC_IDENTIFIER) - 1 + sizeof(uint8_t) + sizeof(uint16_t)))
-
-/**
- *  AutoConnectCredential constructor takes the available count of saved
- *  entries.
- *  A stored credential data structure in EEPROM.
- *   0      7 8 9a b                                  (t)
- *  +--------+-+--+-----------------+-----------------+--+
- *  |AC_CREDT|e|ss|ssid\0pass\0bssid|ssid\0pass\0bssid|\0|
- *  +--------+-+--+-----------------+-----------------+--+
- *  AC_CREDT : Identifier. 8 characters.
- *  e  : Number of contained entries(uint8_t).
- *  ss : Container size, excluding ID and number of entries(uint16_t).
- *  ssid: SSID string with null termination.
- *  password : Password string with null termination.
- *  bssid : BSSID 6 bytes.
- *  t  : The end of the container is a continuous '\0'.
- *  The AC_CREDT identifier is at the beginning of the area.
- *  SSID and PASSWORD are terminated by '\ 0'.
- *  Free area are filled with FF, which is reused as an area for insertion.
- */
-AutoConnectCredential::AutoConnectCredential() {
-  _offset = AC_IDENTIFIER_OFFSET;
-  _allocateEntry();
-}
-
-AutoConnectCredential::AutoConnectCredential(uint16_t offset) {
-  // Save offset for the credential area.
-  _offset = offset;
-  _allocateEntry();
-}
-
-void AutoConnectCredential::_allocateEntry(void) {
-  char    id_c[sizeof(AC_IDENTIFIER) - 1];
-  uint8_t c;
-
-  EEPROM.begin(AC_HEADERSIZE);
-
-  // Validate the save area of the EEPROM.
-  // If it is a valid area, retrieve the stored number of entries,
-  // if the identifier is not saved, initialize the EEPROM area.
-  _dp = _offset;
-  for (c = 0; c < sizeof(id_c); c++) {
-    id_c[c] = static_cast<char>(EEPROM.read(_dp++));
-  }
-  if (!strncmp(id_c, AC_IDENTIFIER, sizeof(id_c))) {
-    _entries = EEPROM.read(static_cast<int>(_dp++));
-    _containSize = EEPROM.read(static_cast<int>(_dp++));
-    _containSize += EEPROM.read(static_cast<int>(_dp)) << 8;
-  }
-  else {
-    _entries = 0;
-    _containSize = 0;
-  }
-
-  EEPROM.end();
-}
-
-/**
- *  The destructor ends EEPROM access.
- */
-AutoConnectCredential::~AutoConnectCredential() {
-  EEPROM.end();
-}
-
-/**
- *  Delete the credential entry for the specified SSID in the EEPROM.
- *  @param  ssid    A SSID character string to be deleted.
- *  @retval true    The entry successfully delete.
- *          false   Could not deleted.
- */
-bool AutoConnectCredential::del(const char* ssid) {
-  struct station_config entry;
-  bool  rc = false;
-
-  if (load(ssid, &entry) >= 0) {
-    // Saved credential detected, _ep has the entry location.
-    EEPROM.begin(AC_HEADERSIZE + _containSize);
-    _dp = _ep;
-
-    // Erase SSID
-    while (EEPROM.read(_dp) != 0x00)
-      EEPROM.write(_dp++, 0xff);
-
-    // Erase Password
-    EEPROM.write(_dp++, 0xff);
-    while (EEPROM.read(_dp) != 0x00)
-      EEPROM.write(_dp++, 0xff);
-
-    // Erase BSSID
-    EEPROM.write(_dp++, 0xff);
-    for (uint8_t i = 0; i < sizeof(station_config::bssid); i++)
-      EEPROM.write(_dp++, 0xff);
-
-    // End 0xff writing, update headers.
-    _entries--;
-    EEPROM.write(_offset + static_cast<int>(sizeof(AC_IDENTIFIER)) - 1, _entries);
-
-    // commit it.
-    rc = EEPROM.commit();
-    delay(10);
-    EEPROM.end();
-  }
-  return rc;
-}
-
-/**
- *  Load the credential entry for the specified SSID from the EEPROM.
- *  The credentials are stored to the station_config structure which specified
- *  by *config as the SSID and password.
- *  @param  ssid    A SSID character string to be loaded.
- *  @param  config  A station_config structure pointer.
- *  @retval The entry number of the SSID in EEPROM. If the number less than 0,
- *  the specified SSID was not found.
- */
-int8_t AutoConnectCredential::load(const char* ssid, struct station_config* config) {
-  int8_t  entry = -1;
-
-  _dp = AC_HEADERSIZE;
-  if (_entries) {
-    EEPROM.begin(AC_HEADERSIZE + _containSize);
-    for (uint8_t i = 0; i < _entries; i++) {
-      _retrieveEntry(reinterpret_cast<char*>(config->ssid), reinterpret_cast<char*>(config->password), config->bssid);
-      if (!strcmp(ssid, (const char*)config->ssid)) {
-        entry = i;
-        break;
-      }
-    }
-    EEPROM.end();
-  }
-  return entry;
-}
-
-/**
- *  Load the credential entry for the specified number from the EEPROM.
- *  The credentials are stored to the station_config structure which specified
- *  by *config as the SSID and password.
- *  @param  entry   A number of entry to be loaded.
- *  @param  config  A station_config structure pointer.
- *  @retval true    The entry number of the SSID in EEPROM.
- *          false   The number is not available.
- */
-bool AutoConnectCredential::load(int8_t entry, struct station_config* config) {
-  _dp = AC_HEADERSIZE;
-  if (_entries && entry < _entries) {
-    EEPROM.begin(AC_HEADERSIZE + _containSize);
-    while (entry-- >= 0)
-      _retrieveEntry(reinterpret_cast<char*>(config->ssid), reinterpret_cast<char*>(config->password), config->bssid);
-    EEPROM.end();
-    return true;
-  }
-  else {
-    return false;
-  }
-}
-
-/**
- *  Save SSID and password to EEPROM.
- *  When the same SSID already exists, it will be replaced. If the current
- *  entry size insufficient for the new entry, the entry will be appended
- *  and increase whole size. Its previous areas are freed with FF and reused.
- *  @param  config  A pointer to the station_config structure storing SSID and password.
- *  @retval true    Successfully saved.
- *  @retval false   EEPROM commit failed.
- */
-bool AutoConnectCredential::save(const struct station_config* config) {
-  static const char _id[] = AC_IDENTIFIER;
-  struct station_config  stage;
-  int8_t  entry;
-  bool    rep = false;
-
-  // Detect same entry for replacement.
-  entry = load((const char*)(config->ssid), &stage);
-
-  // Saving start.
-  EEPROM.begin(AC_HEADERSIZE + _containSize + sizeof(struct station_config));
-
-  // Determine insertion or replacement.
-  if (entry >= 0) {
-    // An entry with the same SSID was found, release the area for replacement.
-    _dp = _ep;
-    for (uint8_t dm = 2; dm; _dp++) {
-      if (EEPROM.read(_dp) == '\0')
-        dm--;
-      EEPROM.write(_dp, 0xff);    // Clear SSID, Passphrase
-    }
-    for (uint8_t i = 0; i < sizeof(station_config::bssid); i++)
-      EEPROM.write(_dp++, 0xff);  // Clear BSSID
-  }
-  else {
-    // Same entry not found. increase the entry.
-    _entries++;
-    int i;
-    for (i = 0; i < static_cast<int>(sizeof(_id)) - 1; i++)
-      EEPROM.write(i + _offset, (uint8_t)_id[i]);
-    EEPROM.write(i + _offset, _entries);
-  }
-
-  // Seek insertion point, evaluate capacity to insert the new entry.
-  uint8_t eSize = strlen((const char*)config->ssid) + strlen((const char*)config->password) + sizeof(station_config::bssid) + 2;
-  for (_dp = AC_HEADERSIZE; _dp < _containSize + AC_HEADERSIZE; _dp++) {
-    if (EEPROM.read(_dp) == 0xff) {
-      uint8_t fp = _dp;
-      while (EEPROM.read(++_dp) == 0xff) {}
-      if (_dp - fp >= eSize) {
-        _dp = fp;
-        rep = true;
-        break;
-      }
-      _dp--;
-    }
-  }
-
-  // Save new entry
-  uint8_t         c;
-  const uint8_t*  dt;
-  dt = config->ssid;
-  do {  // Write SSID
-    c = *dt++;
-    EEPROM.write(_dp++, c);
-  } while (c != '\0');
-  dt = config->password;
-  do {  // Write password
-    c = *dt++;
-    EEPROM.write(_dp++, c);
-  } while (c != '\0');
-  for (uint8_t i = 0; i < sizeof(station_config::bssid); i++)
-    EEPROM.write(_dp++, config->bssid[i]);  // write BSSID
-  // Terminate container, mark to the end of credential area.
-  // When the entry is replaced, not mark a terminator.
-  if (!rep) {
-    EEPROM.write(_dp, '\0');
-
-    // Update container size
-    _containSize = _dp - AC_HEADERSIZE;
-    EEPROM.write(_offset + sizeof(AC_IDENTIFIER) - 1 + sizeof(uint8_t), (uint8_t)_containSize);
-    EEPROM.write(_offset + sizeof(AC_IDENTIFIER) - 1 + sizeof(uint8_t) + 1, (uint8_t)(_containSize >> 8));
-  }
-
-  bool rc = EEPROM.commit();
-  delay(10);
-  EEPROM.end();
-
-  return rc;
-}
-
-/**
- *  Get the SSID and password from EEPROM indicated by _dp as the pointer
- *  of current read address. FF is skipped as unavailable area.
- *  @param  ssid      A SSID storing address.
- *  @param  password  A password storing address.
- */
-void AutoConnectCredential::_retrieveEntry(char* ssid, char* password, uint8_t* bssid) {
-  uint8_t ec;
-
-  // Skip unavailable entry.
-  while ((ec = EEPROM.read(_dp++)) == 0xff) {}
-
-  // Retrieve SSID
-  _ep = _dp - 1;
-  *ssid++ = ec;
-  do {
-    ec = EEPROM.read(_dp++);
-    *ssid++ = ec;
-  } while (ec != '\0');
-  // Retrieve Password
-  do {
-    ec = EEPROM.read(_dp++);
-    *password++ = ec;
-  } while (ec != '\0');
-  // Retrieve BSSID
-  for (uint8_t i = 0; i < sizeof(station_config::bssid); i++) {
-    bssid[i] = EEPROM.read(_dp++);
-  }
-}




diff --git a/lib/AutoConnect-master/src/AutoConnectCredential.h b/lib/AutoConnect-master/src/AutoConnectCredential.h
deleted file mode 100644
index c84fb4339b22c63a9ddefbe4c98b2fcfea7088a8..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/src/AutoConnectCredential.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/**
- *  Declaration of AutoConnectCredential class.
- *  @file AutoConnectCredential.h
- *  @author [email protected]
- *  @version  0.9.6
- *  @date 2018-09-27
- *  @copyright  MIT license.
- */
-
-#ifndef _AUTOCONNECTCREDENTIAL_H_
-#define _AUTOCONNECTCREDENTIAL_H_
-
-#include <Arduino.h>
-#if defined(ARDUINO_ARCH_ESP8266)
-extern "C" {
-#include <user_interface.h>
-}
-#elif defined(ARDUINO_ARCH_ESP32)
-#include <esp_wifi.h>
-struct station_config {
-    uint8_t  ssid[32];
-    uint8_t  password[64];
-    uint8_t  bssid_set;
-    uint8_t  bssid[6];
-    wifi_fast_scan_threshold_t threshold;
-};
-#endif
-
-/** Credential storage area offset specifier in EEPROM.
- *  By defining AC_IDENTIFIER_OFFSET macro in the user sketch, the credential
- *  storage area can be shifted in EEPROM.
- */
-#ifndef AC_IDENTIFIER_OFFSET
-#define AC_IDENTIFIER_OFFSET  0
-#endif
-
-/** AutoConnectCredential class. */
-class AutoConnectCredential {
- public:
-  AutoConnectCredential();
-  explicit AutoConnectCredential(uint16_t offset);
-  ~AutoConnectCredential();
-  uint8_t   entries(void) { return _entries; }
-  bool      del(const char* ssid);
-  int8_t    load(const char* ssid, struct station_config* config);
-  bool      load(int8_t entry, struct station_config* config);
-  bool      save(const struct station_config* config);
-
- private:
-  void      _allocateEntry(void);   /**< Initialize storage for credentials. */
-  void      _retrieveEntry(char* ssid, char* password, uint8_t* bssid);   /**< Read an available entry. */
-
-  uint8_t   _entries;       /**< Count of the available entry */
-  uint16_t  _containSize;   /**< Container size */
-  int       _dp;            /**< The current address in EEPROM */
-  int       _ep;            /**< The current entry address in EEPROM */
-  uint16_t  _offset;        /**< The offset for the saved area of credentials in EEPROM. */
-};
-
-#endif  // _AUTOCONNECTCREDENTIAL_H_




diff --git a/lib/AutoConnect-master/src/AutoConnectDefs.h b/lib/AutoConnect-master/src/AutoConnectDefs.h
deleted file mode 100644
index 7107ac8e18c30fc9f6f7c339b7e0f7082a3ddbf7..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/src/AutoConnectDefs.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/**
- * Predefined AutoConnect configuration parameters.
- * @file AutoConnectDefs.h
- * @author [email protected]
- * @version  0.9.9
- * @date 2019-05-25
- * @copyright  MIT license.
- */
-
-#ifndef _AUTOCONNECTDEFS_H_
-#define _AUTOCONNECTDEFS_H_
-
-// Uncomment the following AC_DEBUG to enable debug output.
-#define AC_DEBUG
-
-// Debug output destination can be defined externally with AC_DEBUG_PORT
-#ifndef AC_DEBUG_PORT
-#define AC_DEBUG_PORT Serial
-#endif // !AC_DEBUG_PORT
-#ifdef AC_DEBUG
-#define AC_DBG_DUMB(...) do {AC_DEBUG_PORT.printf( __VA_ARGS__ );} while (0)
-#define AC_DBG(...) do {AC_DEBUG_PORT.print("[AC] "); AC_DEBUG_PORT.printf( __VA_ARGS__ );} while (0)
-#else
-#define AC_DBG(...)
-#define AC_DBG_DUMB(...)
-#endif // !AC_DEBUG
-
-// Indicator to specify that AutoConnectAux handles elements with JSON.
-// Comment out the AUTOCONNECT_USE_JSON macro to detach the ArduinoJson.
-#define AUTOCONNECT_USE_JSON
-
-// Predefined parameters
-// SSID that Captive portal started.
-#ifndef AUTOCONNECT_APID
-#if defined(ARDUINO_ARCH_ESP8266)
-#define AUTOCONNECT_APID  "esp8266ap"
-#elif defined(ARDUINO_ARCH_ESP32)
-#define AUTOCONNECT_APID  "esp32ap"
-#endif // !ARDUINO_ARCH_ESP8266
-#endif // !AUTOCONNECT_APID
-
-// Password that Captive portal started.
-#ifndef AUTOCONNECT_PSK
-#define AUTOCONNECT_PSK   "12345678"
-#endif // !AUTOCONNECT_PSK
-
-#ifndef AUTOCONNECT_AP_IP
-#define AUTOCONNECT_AP_IP 0x01F4A8C0  //*< 192.168.244.1 */
-#endif // !AUTOCONNECT_AP_IP
-#ifndef AUTOCONNECT_AP_GW
-#define AUTOCONNECT_AP_GW 0x01F4A8C0  //*< 192.168.244.1 */
-#endif // !AUTOCONNECT_AP_GW
-#ifndef AUTOCONNECT_AP_NM
-#define AUTOCONNECT_AP_NM 0x00FFFFFF  //*< 255.255.255.0 */
-#endif // !AUTOCONNECT_AP_NM
-#ifndef AUTOCONNECT_AP_CH
-#define AUTOCONNECT_AP_CH 1
-#endif // !AUTOCONNECT_AP_CH
-
-// AutoConnect menu root path
-#ifndef AUTOCONNECT_URI
-#define AUTOCONNECT_URI         "/_ac"
-#endif // !AUTOCONNECT_URI
-
-// Root URI of home path prepared by user sketch
-#ifndef AUTOCONNECT_HOMEURI
-#define AUTOCONNECT_HOMEURI     "/"
-#endif // !AUTOCONNECT_HOMEURI
-
-// AutoConnectAux form argument name
-#ifndef AUTOCONNECT_AUXURI_PARAM
-#define AUTOCONNECT_AUXURI_PARAM  "_acuri"
-#endif // !AUTOCONNECT_AUXURI_PARAM
-
-// AutoConnect menu title
-#ifndef AUTOCONNECT_MENU_TITLE
-#define AUTOCONNECT_MENU_TITLE  "AutoConnect"
-#endif // !AUTOCONNECT_MENU_TITLE
-
-// URIs of AutoConnect menu collection
-#define AUTOCONNECT_URI_CONFIG  AUTOCONNECT_URI "/config"
-#define AUTOCONNECT_URI_CONNECT AUTOCONNECT_URI "/connect"
-#define AUTOCONNECT_URI_RESULT  AUTOCONNECT_URI "/result"
-#define AUTOCONNECT_URI_OPEN    AUTOCONNECT_URI "/open"
-#define AUTOCONNECT_URI_DISCON  AUTOCONNECT_URI "/disc"
-#define AUTOCONNECT_URI_RESET   AUTOCONNECT_URI "/reset"
-#define AUTOCONNECT_URI_SUCCESS AUTOCONNECT_URI "/success"
-#define AUTOCONNECT_URI_FAIL    AUTOCONNECT_URI "/fail"
-
-// Time-out limitation when AutoConnect::begin [ms]
-#ifndef AUTOCONNECT_TIMEOUT
-#define AUTOCONNECT_TIMEOUT     1
-#endif // !AUTOCONNECT_TIMEOUT
-
-// Captive portal timeout value [ms]
-#ifndef AUTOCONNECT_CAPTIVEPORTAL_TIMEOUT
-#define AUTOCONNECT_CAPTIVEPORTAL_TIMEOUT 0
-#endif // !AUTOCONNECT_CAPTIVEPORTAL_TIMEOUT
-
-// Advance wait time [s]
-#ifndef AUTOCONNECT_STARTUPTIME
-#define AUTOCONNECT_STARTUPTIME (AUTOCONNECT_TIMEOUT/1000)
-#endif // !AUTOCONNECT_STARTUPTIME
-
-// Response wait time until requesting a result of connection attempt, uint:[s] as String
-#ifndef AUTOCONNECT_RESPONSE_WAITTIME
-#define AUTOCONNECT_RESPONSE_WAITTIME "2"
-#endif // !AUTOCONNECT_RESPONSE_WAITTIME
-
-// Default HTTP port
-#ifndef AUTOCONNECT_HTTPPORT
-#define AUTOCONNECT_HTTPPORT    80
-#endif // !AUTOCONNECT_HTTPPORT
-
-// DNS port
-#ifndef AUTOCONNECT_DNSPORT
-#define AUTOCONNECT_DNSPORT     53
-#endif // !AUTOCONNECT_DNSPORT
-
-// http response transfer method
-#ifndef AUTOCONNECT_HTTP_TRANSFER
-#define AUTOCONNECT_HTTP_TRANSFER PB_ByteStream
-#endif // !AUTOCONNECT_HTTP_TRANSFER
-
-// Reserved buffer size to build content
-#ifndef AUTOCONNECT_CONTENTBUFFER_SIZE
-#define AUTOCONNECT_CONTENTBUFFER_SIZE  (13 * 1024)
-#endif // !AUTOCONNECT_CONTENTBUFFER_SIZE
-
-// Number of unit lines in the page that lists available SSIDs
-#ifndef AUTOCONNECT_SSIDPAGEUNIT_LINES
-#define AUTOCONNECT_SSIDPAGEUNIT_LINES  5
-#endif // !AUTOCONNECT_SSIDPAGEUNIT_LINES
-
-// SPI transfer speed for SD
-#ifndef AUTOCONNECT_SD_SPEED
-#define AUTOCONNECT_SD_SPEED    4000000
-#endif // !AUTOCONNECT_SD_SPEED
-
-// ArduinoJson buffer size
-#ifndef AUTOCONNECT_JSONBUFFER_SIZE
-#define AUTOCONNECT_JSONBUFFER_SIZE     256
-#endif // !AUTOCONNECT_JSONBUFFER_SIZE
-#ifndef AUTOCONNECT_JSONDOCUMENT_SIZE
-#define AUTOCONNECT_JSONDOCUMENT_SIZE   (8 * 1024)
-#endif // !AUTOCONNECT_JSONDOCUMENT_SIZE
-#ifndef AUTOCONNECT_JSONPSRAM_SIZE
-#define AUTOCONNECT_JSONPSRAM_SIZE      (16* 1024)
-#endif // !AUTOCONNECT_JSONPSRAM_SIZE
-
-// Explicitly avoiding unused warning with token handler of PageBuilder
-#define AC_UNUSED(expr) do { (void)(expr); } while (0)
-
-#endif // _AUTOCONNECTDEFS_H_




diff --git a/lib/AutoConnect-master/src/AutoConnectElement.h b/lib/AutoConnect-master/src/AutoConnectElement.h
deleted file mode 100644
index 4896a6006369bfff091e28f34d0c3e0b8909e573..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/src/AutoConnectElement.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * Alias declarations for an accessible the AutoConnectElement class.
- * @file AutoConnectAux.h
- * @author [email protected]
- * @version  0.9.8
- * @date 2018-03-11
- * @copyright  MIT license.
- */
-
-#ifndef _AUTOCONNECTELEMENT_H_
-#define _AUTOCONENCTELEMENT_H_
-
-#include "AutoConnectElementBasis.h"
-#ifdef AUTOCONNECT_USE_JSON
-#include <ArduinoJson.h>
-#include "AutoConnectElementJson.h"
-using AutoConnectElement  = AutoConnectElementJson;
-using AutoConnectButton   = AutoConnectButtonJson;
-using AutoConnectCheckbox = AutoConnectCheckboxJson;
-using AutoConnectFile     = AutoConnectFileJson;
-using AutoConnectInput    = AutoConnectInputJson;
-using AutoConnectRadio    = AutoConnectRadioJson;
-using AutoConnectSelect   = AutoConnectSelectJson;
-using AutoConnectSubmit   = AutoConnectSubmitJson;
-using AutoConnectText     = AutoConnectTextJson;
-#define AUTOCONNECT_JSON_BUFFER_SIZE  256
-#else
-using AutoConnectElement  = AutoConnectElementBasis;
-using AutoConnectButton   = AutoConnectButtonBasis;
-using AutoConnectCheckbox = AutoConnectCheckboxBasis;
-using AutoConnectFile     = AutoConnectFileBasis;
-using AutoConnectInput    = AutoConnectInputBasis;
-using AutoConnectRadio    = AutoConnectRadioBasis;
-using AutoConnectSelect   = AutoConnectSelectBasis;
-using AutoConnectSubmit   = AutoConnectSubmitBasis;
-using AutoConnectText     = AutoConnectTextBasis;
-#endif // !AUTOCONNECT_USE_JSON
-
-/**
- * Support declare the AutoConnectElement variable with reducing the
- * arguments. These macros declare the AutoConnectElement variable
- * with the same name as a "name" argument.
- */
-#define ACElement(n, v)    AutoConnectElement n(#n, v)
-#define ACButton(n, ...)   AutoConnectButton n(#n, ##__VA_ARGS__)
-#define ACCheckbox(n, ...) AutoConnectCheckbox n(#n, ##__VA_ARGS__)
-#define ACFile(n, ...)     AutoConnectFile n(#n, ##__VA_ARGS__)
-#define ACInput(n, ...)    AutoConnectInput n(#n, ##__VA_ARGS__)
-#define ACRadio(n, ...)    AutoConnectRadio n(#n, ##__VA_ARGS__)
-#define ACSelect(n, ...)   AutoConnectSelect n(#n, ##__VA_ARGS__)
-#define ACSubmit(n, ...)   AutoConnectSubmit n(#n, ##__VA_ARGS__)
-#define ACText(n, ...)     AutoConnectText n(#n, ##__VA_ARGS__)
-
-#endif // _AUTOCONNECTELEMENT_H_




diff --git a/lib/AutoConnect-master/src/AutoConnectElementBasis.h b/lib/AutoConnect-master/src/AutoConnectElementBasis.h
deleted file mode 100644
index a7f92e50eaa11bf2772d855cf20e217427e7563f..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/src/AutoConnectElementBasis.h
+++ /dev/null
@@ -1,322 +0,0 @@
-/**
- * Declaration of AutoConnectElement basic class.
- * @file AutoConnectElementBasis.h
- * @author [email protected]
- * @version  0.9.8
- * @date 2019-03-11
- * @copyright  MIT license.
- */
-
-#ifndef _AUTOCONNECTELEMENTBASIS_H_
-#define _AUTOCONNECTELEMENTBASIS_H_
-
-#include <vector>
-#include <memory>
-#include "AutoConnectUpload.h"
-
-typedef enum {
-  AC_Button,
-  AC_Checkbox,
-  AC_Element,
-  AC_File,
-  AC_Input,
-  AC_Radio,
-  AC_Select,
-  AC_Submit,
-  AC_Text,
-  AC_Unknown = -1
-} ACElement_t;      /**< AutoConnectElement class type */
-
-typedef enum {
-  AC_Horizontal,
-  AC_Vertical
-} ACArrange_t;      /**< The element arrange order */
-
-typedef enum {
-  AC_File_FS = 0,
-  AC_File_SD,
-  AC_File_Extern
-} ACFile_t;         /**< AutoConnectFile media type */
-
-/**
- * AutoConnectAux element base.
- * Placed a raw text that can be added by user sketch.
- * @param  name     A name string for the element.
- * @param  value    A raw text to be placed in HTML.
- */
-class AutoConnectElementBasis {
- public:
-  explicit AutoConnectElementBasis(const char* name = "", const char* value = "") : name(String(name)), value(String(value)), enable(true) {
-    _type = AC_Element;
-  }
-  virtual ~AutoConnectElementBasis() {}
-  virtual const String  toHTML(void) const { return enable ? value : String(""); }
-  ACElement_t typeOf(void) const { return _type; }
-#ifndef AUTOCONNECT_USE_JSON
-  template<typename T>
-  T&  as(void);
-#endif
-
-  String  name;       /**< Element name */
-  String  value;      /**< Element value */
-  bool    enable;     /**< Enabling the element */
-
- protected:
-  ACElement_t _type;  /**< Element type identifier */
-};
-
-/**
- * Button arrangement class, a part of AutoConnectAux element.
- * Place a labeled button that can be added by user sketch.
- * @param  name     Button element name string.
- * @param  value    Value string with the placed button.
- * @param  action   Script code to execute with the button pushed.
- */
-class AutoConnectButtonBasis : virtual public AutoConnectElementBasis {
- public:
-  explicit AutoConnectButtonBasis(const char* name = "", const char* value = "", const String& action = String("")) : AutoConnectElementBasis(name, value), action(String(action)) {
-    _type = AC_Button;
-  }
-  ~AutoConnectButtonBasis() {}
-  const String  toHTML(void) const override;
-
-  String  action;
-};
-
-/**
- * Checkbox arrangement class, a part of AutoConnectAux element.
- * Place a optionally labeled input-box that can be added by user sketch.
- * @param  name     Checkbox name string.
- * @param  value    A string value associated with the input.
- * @param  label    A label string that follows checkbox, optionally.
- * The label is placed on the right side of the checkbox.
- */
-class AutoConnectCheckboxBasis : virtual public AutoConnectElementBasis {
- public:
-  explicit AutoConnectCheckboxBasis(const char* name = "", const char* value = "", const char* label = "", const bool checked = false) : AutoConnectElementBasis(name, value), label(String(label)), checked(checked) {
-    _type = AC_Checkbox;
-  }
-  virtual ~AutoConnectCheckboxBasis() {}
-  const String  toHTML(void) const override;
-
-  String  label;      /**< A label for a subsequent input box */
-  bool    checked;    /**< The element should be pre-selected */
-};
-
-/**
- * File-select input arrangement class, a part of AutoConnectAux element.
- * Place a optionally labeled file-select input box that can be added by user sketch.
- * @param  name     File-select input box name string.
- * @param  value    A string value entered by the selected file name.
- * @param  label    A label string that follows file-select box, optionally.
- * The label is placed in front of file-select box.
- */
-class AutoConnectFileBasis : virtual public AutoConnectElementBasis {
- public:
-  explicit AutoConnectFileBasis(const char* name = "", const char* value = "", const char* label = "", const ACFile_t store = AC_File_FS) : AutoConnectElementBasis(name, value), label(String(label)), store(store) {
-    _type = AC_File;
-    _upload.reset();
-  }
-  virtual ~AutoConnectFileBasis() {}
-  const String  toHTML(void) const override;
-  bool  attach(const ACFile_t store);
-  void  detach(void) { _upload.reset(); }
-  AutoConnectUploadHandler*  upload(void) const { return _upload.get(); }
-
-  String   label;     /**< A label for a subsequent input box */
-  ACFile_t store;     /**< Type of file store */
-  String   mimeType;  /**< Uploading file mime type string */
-  size_t   size;      /**< Total uploaded bytes */
-
- protected:
-  std::unique_ptr<AutoConnectUploadHandler> _upload;
-};
-
-/**
- * Input-box arrangement class, a part of AutoConnectAux element.
- * Place a optionally labeled input-box that can be added by user sketch.
- * @param  name     Input-box name string.
- * @param  value    Default value string. This string display as a placeholder by the default.
- * @param  label    A label string that follows Input-box, optionally.
- * The label is placed in front of Input-box.
- */
-class AutoConnectInputBasis : virtual public AutoConnectElementBasis {
- public:
-  explicit AutoConnectInputBasis(const char* name = "", const char* value = "", const char* label = "", const char* pattern = "", const char* placeholder = "") : AutoConnectElementBasis(name, value), label(String(label)), pattern(String(pattern)), placeholder(String(placeholder))  {
-    _type = AC_Input;
-  }
-  virtual ~AutoConnectInputBasis() {}
-  const String  toHTML(void) const override;
-  bool  isValid(void) const;
-
-  String  label;      /**< A label for a subsequent input box */
-  String  pattern;    /**< Format pattern to aid validation of input value */
-  String  placeholder;  /**< Pre-filled placeholder */
-};
-
-/**
- * Radio-button arrangement class, a part of AutoConnectAux element.
- * Place a group of radio-button items and selectable mark checked.
- * @param  name     Radio-button name string.
- * @param  options  Array of value collection.
- * @param  label    A label string that follows radio-buttons group.
- * @param  checked  Index of check marked item.
- */
-class AutoConnectRadioBasis : virtual public AutoConnectElementBasis {
- public:
-  explicit AutoConnectRadioBasis(const char* name = "", std::vector<String> const& values = {}, const char* label = "", const ACArrange_t order = AC_Vertical, const uint8_t checked = 0) : AutoConnectElementBasis(name, ""), label(label), order(order), checked(checked), _values(values) {
-    _type = AC_Radio;
-  }
-  virtual ~AutoConnectRadioBasis() {}
-  const String  toHTML(void) const override;
-  const String& operator[] (const std::size_t n) const { return at(n); }
-  void  add(const String& value) { _values.push_back(String(value)); }
-  size_t  size(void) const { return _values.size(); }
-  const String& at(const std::size_t n) const { return _values.at(n); }
-  void  check(const String& value);
-  void  empty(const size_t reserve = 0);
-  const String& value(void) const;
-
-  String      label;    /**< A label for a subsequent radio buttons */
-  ACArrange_t order;    /**< layout order */
-  uint8_t     checked;  /**< Index of check marked item */
-
- protected:
-  std::vector<String> _values; /**< Items in a group */
-};
-
-/**
- * Selection-box arrangement class, A part of AutoConnectAux element.
- * Place a optionally labeled Selection-box that can be added by user sketch.
- * @param  name     Input-box name string.
- * @param  options  String array display in a selection list.
- * @param  label    A label string that follows Input-box, optionally.
- * The label is placed in front of Input-box.
- */
-class AutoConnectSelectBasis : virtual public AutoConnectElementBasis {
- public:
-  explicit AutoConnectSelectBasis(const char* name = "", std::vector<String> const& options = {}, const char* label = "", const uint8_t selected = 0) : AutoConnectElementBasis(name, ""), label(String(label)), selected(selected), _options(options) {
-    _type = AC_Select;
-  }
-  virtual ~AutoConnectSelectBasis() {}
-  const String  toHTML(void) const override;
-  const String& operator[] (const std::size_t n) const { return at(n); }
-  void  add(const String& option) { _options.push_back(String(option)); }
-  size_t  size(void) const { return _options.size(); }
-  const String& at(const std::size_t n) const { return _options.at(n); }
-  void  select(const String& value);
-  void  empty(const size_t reserve = 0);
-  const String& value(void) const;
-
-  String  label;                /**< A label for a subsequent input box */
-  uint8_t selected;             /**< Index of checked value (1-based) */
-
- protected:
-  std::vector<String> _options; /**< List options array */
-};
-
-/**
- * Submit button arrangement class, a part of AutoConnectAux element.
- * Place a submit button with a label that can be added by user sketch.
- * With the button behavior, the values of the elements contained in
- * the form would be sent using the post method.
- * @param  name  Button name string.
- * @param  value Sending value string.
- * @param  uri   Sending uri string.
- */
-class AutoConnectSubmitBasis : virtual public AutoConnectElementBasis {
- public:
-  explicit AutoConnectSubmitBasis(const char* name = "", const char* value = "", const char* uri = "") : AutoConnectElementBasis(name, value), uri(String(uri)) {
-    _type = AC_Submit;
-  }
-  virtual ~AutoConnectSubmitBasis() {}
-  const String  toHTML(void) const override;
-
-  String  uri;        /**< An url of submitting to */
-};
-
-/**
- * Text arrangement class, a part of AutoConnectAux element.
- * @param
- * @param  name     Text name string.
- * @param  value    Text value string.
- * @param  style    A string of style-code for decoration, optionally.
- * @param  format   C string that contains the value to be formatted.
- * An arrangement text would be placed with <div> contains. A string
- * of style-codes are given for '<div style=>'.
- */
-class AutoConnectTextBasis : virtual public AutoConnectElementBasis {
- public:
-  explicit AutoConnectTextBasis(const char* name = "", const char* value = "", const char* style = "", const char* format = "") : AutoConnectElementBasis(name, value), style(String(style)), format(String(format)) {
-    _type = AC_Text;
-  }
-  virtual ~AutoConnectTextBasis() {}
-  const String  toHTML(void) const override;
-
-  String  style;      /**< CSS style modifier native code */
-  String  format;     /**< C string that contains the text to be written */
-};
-
-#ifndef AUTOCONNECT_USE_JSON
-/**
- * Casts only a class derived from the AutoConnectElement class to the
- * actual element class.
- */
-template<>
-inline AutoConnectButtonBasis& AutoConnectElementBasis::as<AutoConnectButtonBasis>(void) {
-  if (typeOf() != AC_Button)
-    AC_DBG("%s mismatched type as <%d>\n", name.c_str(), (int)typeOf());
-  return *(reinterpret_cast<AutoConnectButtonBasis*>(this));
-}
-
-template<>
-inline AutoConnectCheckboxBasis& AutoConnectElementBasis::as<AutoConnectCheckboxBasis>(void) {
-  if (typeOf() != AC_Checkbox)
-    AC_DBG("%s mismatched type as <%d>\n", name.c_str(), (int)typeOf());
-  return *(reinterpret_cast<AutoConnectCheckboxBasis*>(this));
-}
-
-template<>
-inline AutoConnectFileBasis& AutoConnectElementBasis::as<AutoConnectFileBasis>(void) {
-  if (typeOf() != AC_File)
-    AC_DBG("%s mismatched type as <%d>\n", name.c_str(), (int)typeOf());
-  return *(reinterpret_cast<AutoConnectFileBasis*>(this));
-}
-
-template<>
-inline AutoConnectInputBasis& AutoConnectElementBasis::as<AutoConnectInputBasis>(void) {
-  if (typeOf() != AC_Input)
-    AC_DBG("%s mismatched type as <%d>\n", name.c_str(), (int)typeOf());
-  return *(reinterpret_cast<AutoConnectInputBasis*>(this));
-}
-
-template<>
-inline AutoConnectRadioBasis& AutoConnectElementBasis::as<AutoConnectRadioBasis>(void) {
-  if (typeOf() != AC_Radio)
-    AC_DBG("%s mismatched type as <%d>\n", name.c_str(), (int)typeOf());
-  return *(reinterpret_cast<AutoConnectRadioBasis*>(this));
-}
-
-template<>
-inline AutoConnectSelectBasis& AutoConnectElementBasis::as<AutoConnectSelectBasis>(void) {
-  if (typeOf() != AC_Select)
-    AC_DBG("%s mismatched type as <%d>\n", name.c_str(), (int)typeOf());
-  return *(reinterpret_cast<AutoConnectSelectBasis*>(this));
-}
-
-template<>
-inline AutoConnectSubmitBasis& AutoConnectElementBasis::as<AutoConnectSubmitBasis>(void) {
-  if (typeOf() != AC_Submit)
-    AC_DBG("%s mismatched type as <%d>\n", name.c_str(), (int)typeOf());
-  return *(reinterpret_cast<AutoConnectSubmitBasis*>(this));
-}
-
-template<>
-inline AutoConnectTextBasis& AutoConnectElementBasis::as<AutoConnectTextBasis>(void) {
-  if (typeOf() != AC_Text)
-    AC_DBG("%s mismatched type as <%d>\n", name.c_str(), (int)typeOf());
-  return *(reinterpret_cast<AutoConnectTextBasis*>(this));
-}
-#endif
-
-#endif // _AUTOCONNECTELEMENTBASIS_H_




diff --git a/lib/AutoConnect-master/src/AutoConnectElementBasisImpl.h b/lib/AutoConnect-master/src/AutoConnectElementBasisImpl.h
deleted file mode 100644
index 27e488a54fc48bd1de4bc5426e9a127a3c03bd0e..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/src/AutoConnectElementBasisImpl.h
+++ /dev/null
@@ -1,315 +0,0 @@
-/**
- * Implementation of AutoConnectElementBasis classes.
- * @file AutoConnectElementImpl.h
- * @author [email protected]
- * @version  0.9.9
- * @date 2019-05-23
- * @copyright  MIT license.
- */
-
-#ifndef _AUTOCONNECTELEMENTBASISIMPL_H_
-#define _AUTOCONNECTELEMENTBASISIMPL_H_
-
-#include <stdlib.h>
-#include <stdio.h>
-#if defined(ARDUINO_ARCH_ESP8266)
-#include <regex.h>
-#elif defined(ARDUINO_ARCH_ESP32)
-#include <regex>
-#endif
-#include "AutoConnectElementBasis.h"
-
-/**
- * Generate an HTML <button> element. The onclick behavior depends on
- * the code held in factionf member.
- * @return  An HTML string.
- */
-const String AutoConnectButtonBasis::toHTML(void) const {
-  return enable ? String(F("<button type=\"button\" name=\"")) + name + String(F("\" value=\"")) + value + String(F("\" onclick=\"")) + action + String("\">") + value + String(F("</button>")) : String("");
-}
-
-/**
- * Generate an HTML <input type=checkbox> element.
- * A "value" is associated with the input tag and sent by the form
- * action as the value of "name". If the label member is contained, it
- * is placed to the right side of the checkbox to be labeled.
- * f the label member is empty, only the checkbox is placed.
- * @return  An HTML string.
- */
-const String AutoConnectCheckboxBasis::toHTML(void) const {
-  String  html = String("");
-
-  if (enable) {
-    html = String(F("<input type=\"checkbox\" name=\"")) + name + String(F("\" value=\"")) + value + String("\"");
-    if (checked)
-      html += String(F(" checked"));
-    if (label.length())
-      html += String(F(" id=\"")) + name + String(F("\"><label for=\"")) + name + String("\">") + label + String(F("</label"));
-    html += String(F("><br>"));
-  }
-  return html;
-}
-
-/**
- * Generate an HTML <input type=file> element.
- * The entered value can be obtained using the user callback function
- * registered by AutoConnectAux::on after the form is sent in
- * combination with AutoConnectSubmit.
- * @return String  an HTML string.
- */
-const String AutoConnectFileBasis::toHTML(void) const {
-  String  html = String("");
-
-  if (enable) {
-    if (label.length())
-      html = String(F("<label for=\"")) + name + String(F("\">")) + label + String(F("</label>"));
-    html += String(F("<input type=\"file\" id=\"")) + name + String(F("\" name=\"")) + name + String(F("\"><br>"));
-  }
-  return html;
-}
-
-/**
- * Instantiate the upload handler with the specified store type.
- * @param store An enumuration value of ACFile_t
- */
-bool AutoConnectFileBasis::attach(const ACFile_t store) {
-  AutoConnectUploadFS*  handlerFS;
-  AutoConnectUploadSD*  handlerSD;
-
-  // Release previous handler
-  detach();
-  // Classify a handler type and create the corresponding handler
-  switch (store) {
-  case AC_File_FS:
-    handlerFS = new AutoConnectUploadFS(SPIFFS);
-    _upload.reset(reinterpret_cast<AutoConnectUploadHandler*>(handlerFS));
-    break;
-  case AC_File_SD:
-    handlerSD = new AutoConnectUploadSD(SD);
-    _upload.reset(reinterpret_cast<AutoConnectUploadHandler*>(handlerSD));
-    break;
-  case AC_File_Extern:
-    break;
-  }
-  return _upload != false;
-}
-
-/**
- * Generate an HTML <input type=text> element.
- * If the value member is contained, it is reflected in the placeholder
- * attribute. The entered value can be obtained using the user callback
- * function registered by AutoConnectAux::on after the form is sent in
- * combination with AutoConnectSubmit.
- * @return String  an HTML string.
- */
-const String AutoConnectInputBasis::toHTML(void) const {
-  String  html = String("");
-
-  if (enable) {
-    if (label.length())
-      html = String(F("<label for=\"")) + name + String("\">") + label + String(F("</label>"));
-    html += String(F("<input type=\"text\" id=\"")) + name + String(F("\" name=\"")) + name + String("\"");
-    if (pattern.length())
-      html += String(F(" pattern=\"")) + pattern + String("\"");
-    if (placeholder.length())
-      html += String(F(" placeholder=\"")) + placeholder + String("\"");
-    if (value.length())
-      html += String(F(" value=\"")) + value + String("\"");
-    html += String(F("><br>"));
-  }
-  return html;
-}
-
-/**
- * Evaluate the pattern as a regexp and return whether value matches.
- * Always return true if the pattern is undefined.
- * @return true  The value matches a pattern.
- * @return false The value does not match a pattern.
- */
-bool AutoConnectInputBasis::isValid(void) const {
-  bool  rc = true;
-  if (pattern.length()) {
-#if defined(ARDUINO_ARCH_ESP8266)
-    regex_t preg;
-    if (regcomp(&preg, pattern.c_str(), REG_EXTENDED) != 0) {
-      AC_DBG("%s regex compile failed\n", pattern.c_str());
-      rc = false;
-    }
-    else {
-      regmatch_t  p_match[1];
-      rc = regexec(&preg, value.c_str(), 1, p_match, 0) == 0 ? true : false;
-      regfree(&preg);
-    }
-#elif defined(ARDUINO_ARCH_ESP32)
-    const std::regex  re(pattern.c_str());
-    rc = std::regex_match(value.c_str(), re);
-#endif
-  }
-  return rc;
-}
-
-/**
-* Indicate an entry with the specified value in the value's collection.
-* @param value     The value to indicates in the collection.
-*/
-void AutoConnectRadioBasis::check(const String& value) {
-  for (std::size_t n = 0; n < _values.size(); n++) {
-    if (at(n).equalsIgnoreCase(value)) {
-      checked = n + 1;
-      break;
-    }
-  }
-}
-
-/**
- * Clear value items of AutoConnectRadio and reallocate new storage.
- * All hold items are released.
- * @param reserve  If 'reserve' is greater than 0, this function
- * allocates new holding storage with the value.
- */
-void AutoConnectRadioBasis::empty(const size_t reserve) {
-  _values.clear();
-  std::vector<String>().swap(_values);
-  if (reserve)
-    _values.reserve(reserve);
-  checked = 0;
-}
-
-/**
- * Generate an HTML <input type=radio> element with an <option> element.
- * @return String  an HTML string.
- */
-const String AutoConnectRadioBasis::toHTML(void) const {
-  String  html = String("");
-
-  if (enable) {
-    if (label.length()) {
-      html = label;
-      if (order == AC_Vertical)
-        html += String(F("<br>"));
-    }
-    uint8_t n = 0;
-    for (const String value : _values) {
-      n++;
-      String  id = name + "_" + String(n);
-      html += String(F("<input type=\"radio\" name=\"")) + name + String(F("\" id=\"")) + id + String(F("\" value=\"")) + value + String("\"");
-      if (n == checked)
-        html += String(F(" checked"));
-      html += String(F("><label for=\"")) + id + String("\">") + value + String(F("</label>"));
-      if (order == AC_Vertical)
-        html += String(F("<br>"));
-    }
-  }
-  return html;
-}
-
-/**
- * Returns current selected value in the radio same group
- */
-const String& AutoConnectRadioBasis::value(void) const {
-  static const String _nullString = String();
-  return checked ? _values.at(checked - 1) : _nullString;
-}
-
-/**
- * Clear option items of AutoConnectSelect and reallocate new storage.
- * All hold items are released.
- * @param reserve  If 'reserve' is greater than 0, this function
- * allocates new holding storage with the value.
- */
-void AutoConnectSelectBasis::empty(const size_t reserve) {
-  _options.clear();
-  std::vector<String>().swap(_options);
-  if (reserve)
-    _options.reserve(reserve);
-  selected = 0;
-}
-
-/**
-* Indicate an entry with the specified value in the value's collection.
-* @param value     The value to indicates in the collection.
-*/
-void AutoConnectSelectBasis::select(const String& value) {
-  for (std::size_t n = 0; n < _options.size(); n++) {
-    if (at(n).equalsIgnoreCase(value)) {
-      selected = n + 1;
-      break;
-    }
-  }
-}
-
-/**
- * Generate an HTML <select> element with an <option> element.
- * The attribute value of the <option> element is given to the
- * AutoConnectSelect class as a string array, which would be stored
- * in the 'options' member. If a label member is contained, the <label>
- * element would be generated the preface of <select>.
- * @return String  an HTML string.
- */
-const String AutoConnectSelectBasis::toHTML(void) const {
-  String  html = String("");
-
-  if (enable) {
-    if (label.length())
-      html = String(F("<label for=\"")) + name + String("\">") + label + String(F("</label>"));
-    html += String(F("<select name=\"")) + name + String(F("\" id=\"")) + name + String("\">");
-    uint8_t n = 1;
-    for (const String option : _options) {
-      html += String(F("<option value=\"")) + option + "\"";
-      if (n++ == selected)
-        html += String(F(" selected"));
-      html += ">" + option + String(F("</option>"));
-    }
-    html += String(F("</select>"));
-  }
-  return html;
-}
-
-/**
- * Returns current selected value in the radio same group
- */
-const String& AutoConnectSelectBasis::value(void) const {
-  static const String _nullString = String();
-  return selected ? _options.at(selected - 1) : _nullString;
-}
-
-/**
- * Generate an HTML <input type=button> element. This element is used
- * for form submission. An 'onclick' attribute calls fixed JavaScript
- * code as 'sa' named and it's included in the template.
- * @return String  an HTML string.
- */
-const String AutoConnectSubmitBasis::toHTML(void) const {
-  return enable ? String(F("<input type=\"button\" name=\"")) + name + String(F("\" value=\"")) + value + String(F("\" onclick=\"_sa('")) + uri + String("')\">") : String("");
-}
-
-/**
- * Generate an HTML text element from a string of the value member. If a style
- * exists, it gives a style attribute.
- * @return String  an HTML string.
- */
-const String AutoConnectTextBasis::toHTML(void) const {
-  String  html = String("");
-
-  if (enable) {
-    html = String(F("<div id=\"")) + name + String('"');
-    String  value_f = value;
-
-    if (style.length())
-      html += String(F(" style=\"")) + style + String("\"");
-    html += String(">");
-    if (format.length()) {
-      int   buflen = (value.length() + format.length() + 16 + 1) & (~0xf);
-      char* buffer;
-      if ((buffer = (char*)malloc(buflen))) {
-        snprintf(buffer, buflen, format.c_str(), value.c_str());
-        value_f = String(buffer);
-        free(buffer);
-      }
-    }
-    html += value_f + String(F("</div>"));
-  }
-  return html;
-}
-
-#endif // _AUTOCONNECTELEMENTBASISIMPL_H_




diff --git a/lib/AutoConnect-master/src/AutoConnectElementJson.h b/lib/AutoConnect-master/src/AutoConnectElementJson.h
deleted file mode 100644
index b28f0737661ee2d823f4390b446eafbdb8f94b76..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/src/AutoConnectElementJson.h
+++ /dev/null
@@ -1,364 +0,0 @@
-/**
- * Declaration of AutoConnectElement extended classes using JSON.
- * @file AutoConnectElementJson.h
- * @author [email protected]
- * @version  0.9.9
- * @date 2019-05-23
- * @copyright  MIT license.
- */
-
-#ifndef _AUTOCONNECTELEMENTJSON_H_
-#define _AUTOCONNECTELEMENTJSON_H_
-
-#include "AutoConnectElementBasis.h"
-#include <ArduinoJson.h>
-
-#define AUTOCONNECT_JSON_KEY_ACTION       "action"
-#define AUTOCONNECT_JSON_KEY_ARRANGE      "arrange"
-#define AUTOCONNECT_JSON_KEY_CHECKED      "checked"
-#define AUTOCONNECT_JSON_KEY_ELEMENT      "element"
-#define AUTOCONNECT_JSON_KEY_FORMAT       "format"
-#define AUTOCONNECT_JSON_KEY_LABEL        "label"
-#define AUTOCONNECT_JSON_KEY_MENU         "menu"
-#define AUTOCONNECT_JSON_KEY_NAME         "name"
-#define AUTOCONNECT_JSON_KEY_OPTION       "option"
-#define AUTOCONNECT_JSON_KEY_PATTERN      "pattern"
-#define AUTOCONNECT_JSON_KEY_PLACEHOLDER  "placeholder"
-#define AUTOCONNECT_JSON_KEY_SELECTED     "selected"
-#define AUTOCONNECT_JSON_KEY_STORE        "store"
-#define AUTOCONNECT_JSON_KEY_STYLE        "style"
-#define AUTOCONNECT_JSON_KEY_TITLE        "title"
-#define AUTOCONNECT_JSON_KEY_TYPE         "type"
-#define AUTOCONNECT_JSON_KEY_URI          "uri"
-#define AUTOCONNECT_JSON_KEY_VALUE        "value"
-#define AUTOCONNECT_JSON_TYPE_ACBUTTON    "ACButton"
-#define AUTOCONNECT_JSON_TYPE_ACCHECKBOX  "ACCheckBox"
-#define AUTOCONNECT_JSON_TYPE_ACELEMENT   "ACElement"
-#define AUTOCONNECT_JSON_TYPE_ACFILE      "ACFile"
-#define AUTOCONNECT_JSON_TYPE_ACINPUT     "ACInput"
-#define AUTOCONNECT_JSON_TYPE_ACRADIO     "ACRadio"
-#define AUTOCONNECT_JSON_TYPE_ACSELECT    "ACSelect"
-#define AUTOCONNECT_JSON_TYPE_ACSUBMIT    "ACSubmit"
-#define AUTOCONNECT_JSON_TYPE_ACTEXT      "ACText"
-#define AUTOCONNECT_JSON_VALUE_EXTERNAL   "extern"
-#define AUTOCONNECT_JSON_VALUE_FS         "fs"
-#define AUTOCONNECT_JSON_VALUE_HORIZONTAL "horizontal"
-#define AUTOCONNECT_JSON_VALUE_SD         "sd"
-#define AUTOCONNECT_JSON_VALUE_VERTICAL   "vertical"
-
-/**
- * Make the Json types and functions consistent with the ArduinoJson
- * version. These declarations share the following type definitions:
- * - Difference between reference and proxy of JsonObject and JsonArray.
- * - Difference of check whether the parsing succeeded or not.
- * - The print function name difference.
- * - The buffer class difference.
- * - When PSRAM present, enables the buffer allocation it with ESP32 and
- *   supported version.
- */
-#if ARDUINOJSON_VERSION_MAJOR<=5
-#define ARDUINOJSON_CREATEOBJECT(doc)     doc.createObject()
-#define ARDUINOJSON_CREATEARRAY(doc)      doc.createArray()
-#define ARDUINOJSON_PRETTYPRINT(doc, out) ({ size_t s = doc.prettyPrintTo(out); s; })
-#define ARDUINOJSON_PRINT(doc, out)       ({ size_t s = doc.printTo(out); s; })
-using ArduinoJsonObject = JsonObject&;
-using ArduinoJsonArray = JsonArray&;
-using ArduinoJsonBuffer = DynamicJsonBuffer;
-#define AUTOCONNECT_JSONBUFFER_PRIMITIVE_SIZE AUTOCONNECT_JSONBUFFER_SIZE
-#else
-#define ARDUINOJSON_CREATEOBJECT(doc)     doc.to<JsonObject>()
-#define ARDUINOJSON_CREATEARRAY(doc)      doc.to<JsonArray>()
-#define ARDUINOJSON_PRETTYPRINT(doc, out) ({ size_t s = serializeJsonPretty(doc, out); s; })
-#define ARDUINOJSON_PRINT(doc, out)       ({ size_t s = serializeJson(doc, out); s; })
-using ArduinoJsonObject = JsonObject;
-using ArduinoJsonArray = JsonArray;
-#if defined(BOARD_HAS_PSRAM) && ((ARDUINOJSON_VERSION_MAJOR==6 && ARDUINOJSON_VERSION_MINOR>=10) || ARDUINOJSON_VERSION_MAJOR>6)
-// JsonDocument is assigned to PSRAM by ArduinoJson's custom allocator.
-struct SpiRamAllocatorST {
-  void* allocate(size_t size) {
-    uint32_t  caps;
-    if (psramFound())
-      caps = MALLOC_CAP_SPIRAM;
-    else {
-      caps = MALLOC_CAP_8BIT;
-      AC_DBG("PSRAM not found, JSON buffer allocates to the heap.\n");
-    } 
-  }
-  void  deallocate(void* pointer) {
-    heap_caps_free(pointer);
-  }
-};
-#define AUTOCONNECT_JSONBUFFER_PRIMITIVE_SIZE AUTOCONNECT_JSONPSRAM_SIZE
-using ArduinoJsonBuffer = BasicJsonDocument<SpiRamAllocatorST>;
-#else
-#define AUTOCONNECT_JSONBUFFER_PRIMITIVE_SIZE AUTOCONNECT_JSONDOCUMENT_SIZE
-using ArduinoJsonBuffer = DynamicJsonDocument;
-#endif
-#endif
-
-/**
- * AutoConnectAux element base with handling with JSON object.
- * Placed a raw text that can be added by user sketch.
- * @param  name     A name string for the element.
- * @param  value    A raw text to be placed in HTML.
- */
-class AutoConnectElementJson : virtual public AutoConnectElementBasis {
- public:
-  explicit AutoConnectElementJson(const char* name = "", const char* value = "") {
-    AutoConnectElementBasis::name = String(name);
-    AutoConnectElementBasis::value = String(value);
-  }
-  ~AutoConnectElementJson() {}
-  virtual size_t  getObjectSize(void) const;
-  virtual bool  loadMember(const JsonObject& json);
-  virtual void  serialize(JsonObject& json);
-  template<typename T>
-  T&  as(void);
-
- protected:
-  void  _setMember(const JsonObject& json);
-  void  _serialize(JsonObject& json);
-};
-
-/**
- * Button arrangement class, a part of AutoConnectAux element with
- * handling JSON object.
- * Place a labeled button that can be added by user sketch.
- * @param  name     Button element name string.
- * @param  value    Value string with the placed button.
- * @param  action   Script code to execute with the button pushed.
- */
-class AutoConnectButtonJson : public AutoConnectElementJson, public AutoConnectButtonBasis {
- public:
-  explicit AutoConnectButtonJson(const char* name = "", const char* value = "", const String& action = String("")) {
-    AutoConnectButtonBasis::name = String(name);
-    AutoConnectButtonBasis::value = String(value);
-    AutoConnectButtonBasis::action = String(action);
-  }
-  ~AutoConnectButtonJson() {}
-  size_t  getObjectSize(void) const override;
-  bool  loadMember(const JsonObject& json) override;
-  void  serialize(JsonObject& json) override;
-};
-
-/**
- * Checkbox arrangement class, a part of AutoConnectAux element with
- * handling JSON object.
- * Place a optionally labeled input-box that can be added by user sketch.
- * @param  name     Checkbox name string.
- * @param  value    A string value associated with the input.
- * @param  label    A label string that follows checkbox, optionally.
- * The label is placed on the right side of the checkbox.
- */
-class AutoConnectCheckboxJson : public AutoConnectElementJson, public AutoConnectCheckboxBasis {
- public:
-  explicit AutoConnectCheckboxJson(const char* name = "", const char* value = "", const char* label = "", const bool checked = false) {
-    AutoConnectCheckboxBasis::name = String(name);
-    AutoConnectCheckboxBasis::value = String(value);
-    AutoConnectCheckboxBasis::label = String(label);
-    AutoConnectCheckboxBasis::checked = checked;
-  }
-  ~AutoConnectCheckboxJson() {}
-  size_t  getObjectSize(void) const override;
-  bool  loadMember(const JsonObject& json) override;
-  void  serialize(JsonObject& json) override;
-};
-
-/**
- * File-select input arrangement class, a part of AutoConnectAux element.
- * Place a optionally labeled file-select input box that can be added by user sketch.
- * @param  name     File-select input box name string.
- * @param  value    A string value entered by the selected file name.
- * @param  label    A label string that follows file-select box, optionally.
- * The label is placed in front of file-select box.
- * @param  store    An enumuration value of store type.
- */
-class AutoConnectFileJson : public AutoConnectElementJson, public AutoConnectFileBasis {
- public:
-  explicit AutoConnectFileJson(const char* name = "", const char* value= "", const char* label = "", const ACFile_t store = AC_File_FS) {
-    AutoConnectFileBasis::name = String(name);
-    AutoConnectFileBasis::value = String(value);
-    AutoConnectFileBasis::label = String(label);
-    AutoConnectFileBasis::store = store;
-  }
-  ~AutoConnectFileJson() {}
-  size_t  getObjectSize(void) const override;
-  bool  loadMember(const JsonObject& json) override;
-  void  serialize(JsonObject& json) override;
-};
-
-/**
- * Input-box arrangement class, a part of AutoConnectAux element with
- * handling JSON object.
- * Place a optionally labeled input-box that can be added by user sketch.
- * @param  name     Input-box name string.
- * @param  value    Default value string. This string display as a placeholder by the default.
- * @param  label    A label string that follows Input-box, optionally.
- * The label is placed in front of Input-box.
- */
-class AutoConnectInputJson : public AutoConnectElementJson, public AutoConnectInputBasis {
- public:
-  explicit AutoConnectInputJson(const char* name = "", const char* value = "", const char* label = "", const char* pattern = "", const char* placeholder = "") {
-    AutoConnectInputBasis::name = String(name);
-    AutoConnectInputBasis::value = String(value);
-    AutoConnectInputBasis::label = String(label);
-    AutoConnectInputBasis::pattern = String(pattern);
-    AutoConnectInputBasis::placeholder = String(placeholder);
-  }
-  ~AutoConnectInputJson() {}
-  size_t  getObjectSize(void) const override;
-  bool  loadMember(const JsonObject& json) override;
-  void  serialize(JsonObject& json) override;
-};
-
-/**
-* Radio-button arrangement class, a part of AutoConnectAux element.
-* Place a group of radio-button items and selectable mark checked.
-* @param  name     Radio-button name string.
-* @param  options  Array of value collection.
-* @param  label    A label string that follows radio-buttons group.
-* @param  checked  Index of check marked item.
-*/
-class AutoConnectRadioJson : public AutoConnectElementJson, public AutoConnectRadioBasis {
- public:
-  explicit AutoConnectRadioJson(const char* name = "", std::vector<String> const& values = {}, const char* label = "", const ACArrange_t order = AC_Vertical, const uint8_t checked = 0) {
-    AutoConnectRadioBasis::name = String(name);
-    AutoConnectRadioBasis::_values = values;
-    AutoConnectRadioBasis::label = String(label);
-    AutoConnectRadioBasis::order = order;
-    AutoConnectRadioBasis::checked = checked;
-  }
-  ~AutoConnectRadioJson() {}
-  size_t  getObjectSize(void) const override;
-  bool  loadMember(const JsonObject& json) override;
-  void  serialize(JsonObject& json) override;
-};
-
-/**
- * Selection-box arrangement class, A part of AutoConnectAux element.
- * Place a optionally labeled Selection-box that can be added by user sketch.
- * @param  name     Input-box name string.
- * @param  options  String array display in a selection list.
- * @param  label    A label string that follows Input-box, optionally.
- * The label is placed in front of Input-box.
- */
-class AutoConnectSelectJson : public AutoConnectElementJson, public AutoConnectSelectBasis {
- public:
-  explicit AutoConnectSelectJson(const char* name = "", std::vector<String> const& options = {}, const char* label = "", const uint8_t selected = 0) {
-    AutoConnectSelectBasis::name = String(name);
-    AutoConnectSelectBasis::_options = options;
-    AutoConnectSelectBasis::label = String(label);
-    AutoConnectSelectBasis::selected = selected;
-  }
-  ~AutoConnectSelectJson() {}
-  size_t  getObjectSize(void) const override;
-  bool  loadMember(const JsonObject& json) override;
-  void  serialize(JsonObject& json) override;
-};
-
-/**
- * Submit button arrangement class, a part of AutoConnectAux element.
- * Place a submit button with a label that can be added by user sketch.
- * With the button behavior, the values of the elements contained in
- * the form would be sent using the post method.
- * @param  name  Button name string.
- * @param  value Sending value string.
- * @param  uri   Sending uri string.
- */
-class AutoConnectSubmitJson : public AutoConnectElementJson, public AutoConnectSubmitBasis {
- public:
-  explicit AutoConnectSubmitJson(const char* name = "", const char* value = "", const char* uri = "") {
-    AutoConnectSubmitBasis::name = String(name);
-    AutoConnectSubmitBasis::value = String(value);
-    AutoConnectSubmitBasis::uri = String(uri);
-  }
-  ~AutoConnectSubmitJson() {}
-  size_t  getObjectSize(void) const override;
-  bool  loadMember(const JsonObject& json) override;
-  void  serialize(JsonObject& json) override;
-};
-
-/**
- * Text arrangement class, a part of AutoConnectAux element.
- * @param
- * @param  name     Text name string.
- * @param  value    Text value string.
- * @param  style    A string of style-code for decoration, optionally.
- * An arrangement text would be placed with <div> contains. A string
- * of style-codes are given for '<div style=>'.
- */
-class AutoConnectTextJson : public AutoConnectElementJson, public AutoConnectTextBasis {
- public:
-  explicit AutoConnectTextJson(const char* name = "", const char* value = "", const char* style = "", const char* format = "") {
-    AutoConnectTextBasis::name = String(name);
-    AutoConnectTextBasis::value = String(value);
-    AutoConnectTextBasis::style = String(style);
-    AutoConnectTextBasis::format = String(format);
-  }
-  ~AutoConnectTextJson() {}
-  size_t  getObjectSize(void) const override;
-  bool  loadMember(const JsonObject& json) override;
-  void  serialize(JsonObject& json) override;
-};
-
-/**
- * Casts only a class derived from the AutoConnectElement class to the
- * actual element class.
- */
-template<>
-inline AutoConnectButtonJson& AutoConnectElementJson::as<AutoConnectButtonJson>(void) {
-  if (typeOf() != AC_Button)
-    AC_DBG("%s mismatched type as <%d>\n", name.c_str(), (int)typeOf());
-  return *(reinterpret_cast<AutoConnectButtonJson*>(this));
-}
-
-template<>
-inline AutoConnectCheckboxJson& AutoConnectElementJson::as<AutoConnectCheckboxJson>(void) {
-  if (typeOf() != AC_Checkbox)
-    AC_DBG("%s mismatched type as <%d>\n", name.c_str(), (int)typeOf());
-  return *(reinterpret_cast<AutoConnectCheckboxJson*>(this));
-}
-
-template<>
-inline AutoConnectFileJson& AutoConnectElementJson::as<AutoConnectFileJson>(void) {
-  if (typeOf() != AC_File)
-    AC_DBG("%s mismatched type as <%d>\n", name.c_str(), (int)typeOf());
-  return *(reinterpret_cast<AutoConnectFileJson*>(this));
-}
-
-template<>
-inline AutoConnectInputJson& AutoConnectElementJson::as<AutoConnectInputJson>(void) {
-  if (typeOf() != AC_Input)
-    AC_DBG("%s mismatched type as <%d>\n", name.c_str(), (int)typeOf());
-  return *(reinterpret_cast<AutoConnectInputJson*>(this));
-}
-
-template<>
-inline AutoConnectRadioJson& AutoConnectElementJson::as<AutoConnectRadioJson>(void) {
-  if (typeOf() != AC_Radio)
-    AC_DBG("%s mismatched type as <%d>\n", name.c_str(), (int)typeOf());
-  return *(reinterpret_cast<AutoConnectRadioJson*>(this));
-}
-
-template<>
-inline AutoConnectSelectJson& AutoConnectElementJson::as<AutoConnectSelectJson>(void) {
-  if (typeOf() != AC_Select)
-    AC_DBG("%s mismatched type as <%d>\n", name.c_str(), (int)typeOf());
-  return *(reinterpret_cast<AutoConnectSelectJson*>(this));
-}
-
-template<>
-inline AutoConnectSubmitJson& AutoConnectElementJson::as<AutoConnectSubmitJson>(void) {
-  if (typeOf() != AC_Submit)
-    AC_DBG("%s mismatched type as <%d>\n", name.c_str(), (int)typeOf());
-  return *(reinterpret_cast<AutoConnectSubmitJson*>(this));
-}
-
-template<>
-inline AutoConnectTextJson& AutoConnectElementJson::as<AutoConnectTextJson>(void) {
-  if (typeOf() != AC_Text)
-    AC_DBG("%s mismatched type as <%d>\n", name.c_str(), (int)typeOf());
-  return *(reinterpret_cast<AutoConnectTextJson*>(this));
-}
-
-#endif // _AUTOCONNECTELEMENTJSON_H_




diff --git a/lib/AutoConnect-master/src/AutoConnectElementJsonImpl.h b/lib/AutoConnect-master/src/AutoConnectElementJsonImpl.h
deleted file mode 100644
index ba4ff6cd4f3c83466d15937b68aa94a1119b7536..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/src/AutoConnectElementJsonImpl.h
+++ /dev/null
@@ -1,458 +0,0 @@
-/**
- * Implementation of AutoConnectElementJson classes.
- * @file AutoConnectElementImpl.h
- * @author [email protected]
- * @version  0.9.9
- * @date 2019-05-23
- * @copyright  MIT license.
- */
-
-#ifndef _AUTOCONNECTELEMENTJSONIMPL_H_
-#define _AUTOCONNECTELEMENTJSONIMPL_H_
-
-#include "AutoConnectElementJson.h"
-
-/**
- * Returns JSON object size.
- * @return  An object size for JsonBuffer.
- */
-size_t AutoConnectElementJson::getObjectSize() const {
-  size_t  size = JSON_OBJECT_SIZE(3);
-  size += sizeof(AUTOCONNECT_JSON_KEY_NAME) + sizeof(AUTOCONNECT_JSON_KEY_TYPE) + sizeof(AUTOCONNECT_JSON_KEY_VALUE) + sizeof(AUTOCONNECT_JSON_TYPE_ACELEMENT);
-  size += name.length() + 1 + value.length() + 1;
-  return size;
-}
-
-/**
- * Load an element member value from the JSON object.
- * @param  json  JSON object with the definition of AutoConnectElement.
- * @return true  AutoConnectElement loaded
- * @return false Type of AutoConnectElement is mismatched.
- */
-bool AutoConnectElementJson::loadMember(const JsonObject& json) {
-  String  type = json[F(AUTOCONNECT_JSON_KEY_TYPE)].as<String>();
-  if (type.equalsIgnoreCase(F(AUTOCONNECT_JSON_TYPE_ACELEMENT))) {
-    _setMember(json);
-    return true;
-  }
-  return false;
-}
-
-/**
- * Serialize AutoConnectElement to JSON.
- * @param  json  JSON object to be serialized.
- */
-void AutoConnectElementJson::serialize(JsonObject& json) {
-  _serialize(json);
-  json[F(AUTOCONNECT_JSON_KEY_TYPE)] = String(F(AUTOCONNECT_JSON_TYPE_ACELEMENT));
-  json[F(AUTOCONNECT_JSON_KEY_VALUE)] = value;
-}
-
-/**
- * Serialize AutoConnectElement to JSON.
- * This function is base for each element.
- * @param  json  JSON object to be serialized.
- */
-void AutoConnectElementJson::_serialize(JsonObject& json) {
-  json[F(AUTOCONNECT_JSON_KEY_NAME)] = name;
-}
-
-/**
- * Set items common to any type of AutoConnectElement from JSON objects.
- * @param  json  JSON object with the definition of AutoConnectElement.
- */
-void AutoConnectElementJson::_setMember(const JsonObject& json) {
-  name = json[F(AUTOCONNECT_JSON_KEY_NAME)].as<String>();
-  if (json.containsKey(F(AUTOCONNECT_JSON_KEY_VALUE)))
-    value = json[F(AUTOCONNECT_JSON_KEY_VALUE)].as<String>();
-}
-
-/**
- * Returns JSON object size.
- * @return  An object size for JsonBuffer.
- */
-size_t AutoConnectButtonJson::getObjectSize() const {
-  size_t  size = AutoConnectElementJson::getObjectSize() + JSON_OBJECT_SIZE(1);
-  size += sizeof(AUTOCONNECT_JSON_KEY_ACTION) + action.length() + 1;
-  return size;
-}
-
-/**
- * Load a button element attribute member from the JSON object.
- * @param  json  JSON object with the definition of AutoConnectElement.
- * @return true  AutoConnectElement loaded
- * @return false Type of AutoConnectElement is mismatched.
- */
-bool AutoConnectButtonJson::loadMember(const JsonObject& json) {
-  String  type = json[F(AUTOCONNECT_JSON_KEY_TYPE)].as<String>();
-  if (type.equalsIgnoreCase(F(AUTOCONNECT_JSON_TYPE_ACBUTTON))) {
-    _setMember(json);
-    if (json.containsKey(F(AUTOCONNECT_JSON_KEY_ACTION)))
-      action = json[F(AUTOCONNECT_JSON_KEY_ACTION)].as<String>();
-    return true;
-  }
-  return false;
-}
-
-/**
- * Serialize AutoConnectButton to JSON.
- * @param  json  JSON object to be serialized.
- */
-void AutoConnectButtonJson::serialize(JsonObject& json) {
-  _serialize(json);
-  json[F(AUTOCONNECT_JSON_KEY_TYPE)] = String(F(AUTOCONNECT_JSON_TYPE_ACBUTTON));
-  json[F(AUTOCONNECT_JSON_KEY_VALUE)] = value;
-  json[F(AUTOCONNECT_JSON_KEY_ACTION)] = action;
-}
-
-/**
- * Returns JSON object size.
- * @return  An object size for JsonBuffer.
- */
-size_t AutoConnectCheckboxJson::getObjectSize() const {
-  size_t  size = AutoConnectElementJson::getObjectSize() + JSON_OBJECT_SIZE(2);
-  size += sizeof(AUTOCONNECT_JSON_KEY_LABEL) + label.length() + 1 + sizeof(AUTOCONNECT_JSON_KEY_CHECKED);
-  return size;
-}
-
-/**
- * Load a checkbox element attribute member from the JSON object.
- * @param  json  JSON object with the definition of AutoConnectElement.
- * @return true  AutoConnectElement loaded
- * @return false Type of AutoConnectElement is mismatched.
- */
-bool AutoConnectCheckboxJson::loadMember(const JsonObject& json) {
-  String  type = json[F(AUTOCONNECT_JSON_KEY_TYPE)].as<String>();
-  if (type.equalsIgnoreCase(F(AUTOCONNECT_JSON_TYPE_ACCHECKBOX))) {
-    _setMember(json);
-    if (json.containsKey(F(AUTOCONNECT_JSON_KEY_LABEL)))
-      label = json[F(AUTOCONNECT_JSON_KEY_LABEL)].as<String>();
-    if (json.containsKey(F(AUTOCONNECT_JSON_KEY_CHECKED)))
-      checked = json[F(AUTOCONNECT_JSON_KEY_CHECKED)].as<bool>();
-    return true;
-  }
-  return false;
-}
-
-/**
- * Serialize AutoConnectCheckbox to JSON.
- * @param  json  JSON object to be serialized.
- */
-void AutoConnectCheckboxJson::serialize(JsonObject& json) {
-  _serialize(json);
-  json[F(AUTOCONNECT_JSON_KEY_TYPE)] = String(F(AUTOCONNECT_JSON_TYPE_ACCHECKBOX));
-  json[F(AUTOCONNECT_JSON_KEY_NAME)] = name;
-  json[F(AUTOCONNECT_JSON_KEY_VALUE)] = value;
-  json[F(AUTOCONNECT_JSON_KEY_LABEL)] = label;
-  json[F(AUTOCONNECT_JSON_KEY_CHECKED)] = checked;
-}
-
-/**
- * Returns JSON object size.
- * @return  An object size for JsonBuffer.
- */
-size_t AutoConnectFileJson::getObjectSize() const {
-  size_t  size = AutoConnectElementJson::getObjectSize() + JSON_OBJECT_SIZE(2);
-  size += sizeof(AUTOCONNECT_JSON_KEY_LABEL) + label.length() + 1 + sizeof(AUTOCONNECT_JSON_KEY_STORE) + sizeof(AUTOCONNECT_JSON_VALUE_EXTERNAL);
-  return size; 
-}
-
-/**
- * Load a file-select element attribute member from the JSON object.
- * @param  json  JSON object with the definition of AutoConnectElement.
- * @return true  AutoConnectElement loaded
- * @return false Type of AutoConnectElement is mismatched.
- */
-bool AutoConnectFileJson::loadMember(const JsonObject& json) {
-  String  type = json[F(AUTOCONNECT_JSON_KEY_TYPE)].as<String>();
-  if (type.equalsIgnoreCase(F(AUTOCONNECT_JSON_TYPE_ACFILE))) {
-    _setMember(json);
-    if (json.containsKey(F(AUTOCONNECT_JSON_KEY_LABEL)))
-      label = json[F(AUTOCONNECT_JSON_KEY_LABEL)].as<String>();
-    if (json.containsKey(F(AUTOCONNECT_JSON_KEY_STORE))) {
-      String  media = json[F(AUTOCONNECT_JSON_KEY_STORE)].as<String>();
-      if (media.equalsIgnoreCase(F(AUTOCONNECT_JSON_VALUE_FS)))
-        store = AC_File_FS;
-      else if (media.equalsIgnoreCase(F(AUTOCONNECT_JSON_VALUE_SD)))
-        store = AC_File_SD;
-      else if (media.equalsIgnoreCase(F(AUTOCONNECT_JSON_VALUE_EXTERNAL)))
-        store = AC_File_Extern;
-      else {
-        AC_DBG("Failed to load %s element, unknown %s\n", name.c_str(), media.c_str());
-        return false;
-      }
-    }
-    return true;
-  }
-  return false;
-}
-
-/**
- * Serialize AutoConnectFile to JSON.
- * @param  json  JSON object to be serialized.
- */
-void AutoConnectFileJson::serialize(JsonObject& json) {
-  _serialize(json);
-  json[F(AUTOCONNECT_JSON_KEY_TYPE)] = String(F(AUTOCONNECT_JSON_TYPE_ACFILE));
-  json[F(AUTOCONNECT_JSON_KEY_VALUE)] = value;
-  json[F(AUTOCONNECT_JSON_KEY_LABEL)] = label;
-  switch (store) {
-  case AC_File_FS:
-    json[F(AUTOCONNECT_JSON_KEY_STORE)] = AUTOCONNECT_JSON_VALUE_FS;
-    break;
-  case AC_File_SD:
-    json[F(AUTOCONNECT_JSON_KEY_STORE)] = AUTOCONNECT_JSON_VALUE_SD;
-    break;
-  case AC_File_Extern:
-    json[F(AUTOCONNECT_JSON_KEY_STORE)] = AUTOCONNECT_JSON_VALUE_EXTERNAL;
-    break;
-  }
-}
-
-/**
- * Returns JSON object size.
- * @return  An object size for JsonBuffer.
- */
-size_t AutoConnectInputJson::getObjectSize() const {
-  size_t  size = AutoConnectElementJson::getObjectSize() + JSON_OBJECT_SIZE(3);
-  size += sizeof(AUTOCONNECT_JSON_KEY_LABEL) + label.length() + 1 + sizeof(AUTOCONNECT_JSON_KEY_PATTERN) + pattern.length() + 1 + sizeof(AUTOCONNECT_JSON_KEY_PLACEHOLDER) + placeholder.length() + 1;
-  return size;
-}
-
-/**
- * Load a input-box element attribute member from the JSON object.
- * @param  json  JSON object with the definition of AutoConnectElement.
- * @return true  AutoConnectElement loaded
- * @return false Type of AutoConnectElement is mismatched.
- */
-bool AutoConnectInputJson::loadMember(const JsonObject& json) {
-  String  type = json[F(AUTOCONNECT_JSON_KEY_TYPE)].as<String>();
-  if (type.equalsIgnoreCase(F(AUTOCONNECT_JSON_TYPE_ACINPUT))) {
-    _setMember(json);
-    if (json.containsKey(F(AUTOCONNECT_JSON_KEY_LABEL)))
-      label = json[F(AUTOCONNECT_JSON_KEY_LABEL)].as<String>();
-    if (json.containsKey(F(AUTOCONNECT_JSON_KEY_PATTERN)))
-      pattern = json[F(AUTOCONNECT_JSON_KEY_PATTERN)].as<String>();
-    if (json.containsKey(F(AUTOCONNECT_JSON_KEY_PLACEHOLDER)))
-      placeholder = json[F(AUTOCONNECT_JSON_KEY_PLACEHOLDER)].as<String>();
-    return true;
-  }
-  return false;
-}
-
-/**
- * Serialize AutoConnectInput to JSON.
- * @param  json  JSON object to be serialized.
- */
-void AutoConnectInputJson::serialize(JsonObject& json) {
-  _serialize(json);
-  json[F(AUTOCONNECT_JSON_KEY_TYPE)] = String(F(AUTOCONNECT_JSON_TYPE_ACINPUT));
-  json[F(AUTOCONNECT_JSON_KEY_VALUE)] = value;
-  json[F(AUTOCONNECT_JSON_KEY_LABEL)] = label;
-  json[F(AUTOCONNECT_JSON_KEY_PATTERN)] = pattern;
-  json[F(AUTOCONNECT_JSON_KEY_PLACEHOLDER)] = placeholder;
-}
-
-/**
- * Returns JSON object size.
- * @return  An object size for JsonBuffer.
- */
-size_t AutoConnectRadioJson::getObjectSize() const {
-  size_t  size = AutoConnectElementJson::getObjectSize() + JSON_OBJECT_SIZE(3) +  JSON_ARRAY_SIZE(_values.size());
-  size += sizeof(AUTOCONNECT_JSON_KEY_LABEL) + label.length() + 1 + sizeof(AUTOCONNECT_JSON_KEY_ARRANGE) + sizeof(AUTOCONNECT_JSON_VALUE_HORIZONTAL) + sizeof(AUTOCONNECT_JSON_KEY_CHECKED);
-  for (const String& _value : _values)
-    size += _value.length() + 1;
-  return size;
-}
-
-/**
- * Load a radio-button element attribute member from the JSON object.
- * @param  json  JSON object with the definition of AutoConnectElement.
- * @return true  AutoConnectElement loaded
- * @return false Type of AutoConnectElement is mismatched.
- */
-bool AutoConnectRadioJson::loadMember(const JsonObject& json) {
-  String  type = json[F(AUTOCONNECT_JSON_KEY_TYPE)].as<String>();
-  if (type.equalsIgnoreCase(F(AUTOCONNECT_JSON_TYPE_ACRADIO))) {
-    _setMember(json);
-    if (json.containsKey(F(AUTOCONNECT_JSON_KEY_LABEL)))
-      label = json[F(AUTOCONNECT_JSON_KEY_LABEL)].as<String>();
-    if (json.containsKey(F(AUTOCONNECT_JSON_KEY_VALUE))) {
-      ArduinoJsonArray optionArray = json[AUTOCONNECT_JSON_KEY_VALUE];
-      empty(optionArray.size());
-      for (auto value : optionArray)
-        add(value.as<String>());
-    }
-    if (json.containsKey(F(AUTOCONNECT_JSON_KEY_CHECKED)))
-      checked = static_cast<uint8_t>(json[F(AUTOCONNECT_JSON_KEY_CHECKED)].as<int>());
-    if (json.containsKey(F(AUTOCONNECT_JSON_KEY_ARRANGE))) {
-      String  arrange = json[F(AUTOCONNECT_JSON_KEY_ARRANGE)].as<String>();
-      if (arrange.equalsIgnoreCase(F(AUTOCONNECT_JSON_VALUE_VERTICAL)))
-        order = AC_Vertical;
-      else if (arrange.equalsIgnoreCase(F(AUTOCONNECT_JSON_VALUE_HORIZONTAL)))
-        order = AC_Horizontal;
-      else {
-        AC_DBG("Failed to load %s element, unknown %s\n", name.c_str(), arrange.c_str());
-        return false;
-      }
-    }
-    return true;
-  }
-  return false;
-}
-
-/**
- * Serialize AutoConnectRadio to JSON.
- * @param  json  JSON object to be serialized.
- */
-void AutoConnectRadioJson::serialize(JsonObject& json) {
-  _serialize(json);
-  json[F(AUTOCONNECT_JSON_KEY_TYPE)] = String(F(AUTOCONNECT_JSON_TYPE_ACRADIO));
-  json[F(AUTOCONNECT_JSON_KEY_LABEL)] = label;
-  ArduinoJsonArray  values = json.createNestedArray(F(AUTOCONNECT_JSON_KEY_VALUE));
-  for (const String& v : _values)
-    values.add(v);
-  switch (order) {
-  case AC_Horizontal:
-    json[F(AUTOCONNECT_JSON_KEY_ARRANGE)] = String(F(AUTOCONNECT_JSON_VALUE_HORIZONTAL));
-    break;
-  case AC_Vertical:
-    json[F(AUTOCONNECT_JSON_KEY_ARRANGE)] = String(F(AUTOCONNECT_JSON_VALUE_VERTICAL));
-    break;
-  }
-  if (checked > 0)
-    json[F(AUTOCONNECT_JSON_KEY_CHECKED)] = checked;
-}
-
-/**
- * Returns JSON object size.
- * @return  An object size for JsonBuffer.
- */
-size_t AutoConnectSelectJson::getObjectSize() const {
-  size_t  size = AutoConnectElementJson::getObjectSize() + JSON_OBJECT_SIZE(2) + JSON_ARRAY_SIZE(_options.size());
-  size += sizeof(AUTOCONNECT_JSON_KEY_LABEL) + label.length() + 1 + sizeof(AUTOCONNECT_JSON_KEY_SELECTED);
-  for (const String& _option : _options)
-    size += _option.length() + 1;
-  return size;
-}
-
-/**
- * Load a select element attribute member from the JSON object.
- * @param  json  JSON object with the definition of AutoConnectElement.
- * @return true  AutoConnectElement loaded
- * @return false Type of AutoConnectElement is mismatched.
- */
-bool AutoConnectSelectJson::loadMember(const JsonObject& json) {
-  String  type = json[F(AUTOCONNECT_JSON_KEY_TYPE)].as<String>();
-  if (type.equalsIgnoreCase(F(AUTOCONNECT_JSON_TYPE_ACSELECT))) {
-    _setMember(json);
-    if (json.containsKey(F(AUTOCONNECT_JSON_KEY_LABEL)))
-      label = json[F(AUTOCONNECT_JSON_KEY_LABEL)].as<String>();
-    if (json.containsKey(F(AUTOCONNECT_JSON_KEY_OPTION))) {
-      ArduinoJsonArray optionArray = json[AUTOCONNECT_JSON_KEY_OPTION];
-      empty(optionArray.size());
-      for (auto value : optionArray)
-        add(value.as<String>());
-    }
-    if (json.containsKey(F(AUTOCONNECT_JSON_KEY_SELECTED)))
-      selected = static_cast<uint8_t>(json[F(AUTOCONNECT_JSON_KEY_SELECTED)].as<int>());
-    return true;
-  }
-  return false;
-}
-
-/**
- * Serialize AutoConnectSelect to JSON.
- * @param  json  JSON object to be serialized.
- */
-void AutoConnectSelectJson::serialize(JsonObject& json) {
-  _serialize(json);
-  json[F(AUTOCONNECT_JSON_KEY_TYPE)] = String(F(AUTOCONNECT_JSON_TYPE_ACSELECT));
-  ArduinoJsonArray options = json.createNestedArray(F(AUTOCONNECT_JSON_KEY_OPTION));
-  for (String o : _options)
-    options.add(o);
-  json[F(AUTOCONNECT_JSON_KEY_LABEL)] = label;
-  if (selected > 0)
-    json[F(AUTOCONNECT_JSON_KEY_SELECTED)] = selected;
-}
-
-/**
- * Returns JSON object size.
- * @return  An object size for JsonBuffer.
- */
-size_t AutoConnectSubmitJson::getObjectSize() const {
-  size_t  size = AutoConnectElementJson::getObjectSize();
-  size += sizeof(AUTOCONNECT_JSON_KEY_URI) + uri.length() + 1;
-  return size;
-}
-
-/**
- * Load a submit element attribute member from the JSON object.
- * @param  json  JSON object with the definition of AutoConnectElement.
- * @return true  AutoConnectElement loaded
- * @return false Type of AutoConnectElement is mismatched.
- */
-bool AutoConnectSubmitJson::loadMember(const JsonObject& json) {
-  String  type = json[F(AUTOCONNECT_JSON_KEY_TYPE)].as<String>();
-  if (type.equalsIgnoreCase(F(AUTOCONNECT_JSON_TYPE_ACSUBMIT))) {
-    _setMember(json);
-    if (json.containsKey(F(AUTOCONNECT_JSON_KEY_URI)))
-      uri = json[F(AUTOCONNECT_JSON_KEY_URI)].as<String>();
-    return true;
-  }
-  return false;
-}
-
-/**
- * Serialize AutoConnectSubmit to JSON.
- * @param  json  JSON object to be serialized.
- */
-void AutoConnectSubmitJson::serialize(JsonObject& json) {
-  _serialize(json);
-  json[F(AUTOCONNECT_JSON_KEY_TYPE)] = String(F(AUTOCONNECT_JSON_TYPE_ACSUBMIT));
-  json[F(AUTOCONNECT_JSON_KEY_VALUE)] = value;
-  json[F(AUTOCONNECT_JSON_KEY_URI)] = uri;
-}
-
-/**
- * Returns JSON object size.
- * @return  An object size for JsonBuffer.
- */
-size_t AutoConnectTextJson::getObjectSize() const {
-  size_t  size = AutoConnectElementJson::getObjectSize() + JSON_OBJECT_SIZE(2);
-  size += sizeof(AUTOCONNECT_JSON_KEY_STYLE) + style.length() + 1 + sizeof(AUTOCONNECT_JSON_KEY_FORMAT) + format.length() + 1;
-  return size;
-}
-
-/**
- * Load a text element attribute member from the JSON object.
- * @param  json  JSON object with the definition of AutoConnectElement.
- * @return true  AutoConnectElement loaded
- * @return false Type of AutoConnectElement is mismatched.
- */
-bool AutoConnectTextJson::loadMember(const JsonObject& json) {
-  String  type = json[F(AUTOCONNECT_JSON_KEY_TYPE)].as<String>();
-  if (type.equalsIgnoreCase(F(AUTOCONNECT_JSON_TYPE_ACTEXT))) {
-    _setMember(json);
-    if (json.containsKey(F(AUTOCONNECT_JSON_KEY_STYLE)))
-      style = json[F(AUTOCONNECT_JSON_KEY_STYLE)].as<String>();
-    if (json.containsKey(F(AUTOCONNECT_JSON_KEY_FORMAT)))
-      format = json[F(AUTOCONNECT_JSON_KEY_FORMAT)].as<String>();
-    return true;
-  }
-  return false;
-}
-
-/**
- * Serialize AutoConnectText to JSON.
- * @param  json  JSON object to be serialized.
- */
-void AutoConnectTextJson::serialize(JsonObject& json) {
-  _serialize(json);
-  json[F(AUTOCONNECT_JSON_KEY_TYPE)] = String(F(AUTOCONNECT_JSON_TYPE_ACTEXT));
-  json[F(AUTOCONNECT_JSON_KEY_VALUE)] = value;
-  json[F(AUTOCONNECT_JSON_KEY_STYLE)] = style;
-  json[F(AUTOCONNECT_JSON_KEY_FORMAT)] = format;
-}
-
-#endif // _AUTOCONNECTELEMENTJSONIMPL_H_




diff --git a/lib/AutoConnect-master/src/AutoConnectLabels.h b/lib/AutoConnect-master/src/AutoConnectLabels.h
deleted file mode 100644
index a375c81380529a61de7fe3e2890e8662494dbefc..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/src/AutoConnectLabels.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- *  AutoConnect proper menu label constant definition.
- *  @file   AutoConnectLabels.h
- *  @author [email protected]
- *  @version    0.9.8
- *  @date   2019-03-11
- *  @copyright  MIT license.
- */
-
-#ifndef _AUTOCONNECTLABELS_H_
-#define _AUTOCONNECTLABELS_H_
-
-/**
- * The upper row of each of the following definition items is the
- * default value. The lower row is an alternative label string as
- * a sample and can be changed you wish.
- *
- * Notes:
- * You can find some tokens for the PageBuilder if you parse
- * AutoConnectPage.cpp. Some of the tokens are valid at the time
- * the AutoConnect menu will generate. For example, the token
- * `{{CUR_SSID}}` returns the SSID of the currently participating
- * AP by AutoConnect::_token_CURRENT_SSID function.
- * You can use these tokens to display dynamic menus showing the
- * current situation, but you need to know the internal structure
- * of AutoConnect in order to display the appropriate menu.
- */
-
-// Menu item: Configure new AP
-#ifndef AUTOCONNECT_MENULABEL_CONFIGNEW
-#define AUTOCONNECT_MENULABEL_CONFIGNEW   "Configure your Awtrix"
-//#define AUTOCONNECT_MENULABEL_CONFIGNEW   "Establish a new AP"
-#endif // !AUTOCONNECT_MENULABEL_CONFIGNEW
-
-// Menu item: Open SSIDs
-#ifndef AUTOCONNECT_MENULABEL_OPENSSIDS
-#define AUTOCONNECT_MENULABEL_OPENSSIDS   "Open SSIDs"
-//#define AUTOCONNECT_MENULABEL_OPENSSIDS   "Open credentials"
-#endif // !AUTOCONNECT_MENULABEL_OPENSSIDS
-
-// Menu item: Disconnect
-#ifndef AUTOCONNECT_MENULABEL_DISCONNECT
-#define AUTOCONNECT_MENULABEL_DISCONNECT  "Disconnect"
-//#define AUTOCONNECT_MENULABEL_DISCONNECT  "Leave {{CUR_SSID}}"
-#endif // !AUTOCONNECT_MENULABEL_DISCONNECT
-
-// Menu item: Reset...
-#ifndef AUTOCONNECT_MENULABEL_RESET
-#define AUTOCONNECT_MENULABEL_RESET       "Reset..."
-//#define AUTOCONNECT_MENULABEL_RESET       "Reboot..."
-#endif // !AUTOCONNECT_MENULABEL_RESET
-
-// Menu item: HOME
-#ifndef AUTOCONNECT_MENULABEL_HOME
-#define AUTOCONNECT_MENULABEL_HOME        "HOME"
-//#define AUTOCONNECT_MENULABEL_HOME        "Main"
-#endif // !AUTOCONNECT_MENULABEL_HOME
-
-// Button label: RESET
-#ifndef AUTOCONNECT_BUTTONLABEL_RESET
-#define AUTOCONNECT_BUTTONLABEL_RESET     "RESET"
-//#define AUTOCONNECT_BUTTONLABEL_RESET     "Reboot"
-#endif // !AUTOCONNECT_BUTTONLABEL_RESET
-
-// Menu colors
-// The following three color code items determine the color scheme of
-// the menu. In addition to hexadecimal color values, you can specify
-// 140 standard color names that apply to CSS.
-// To be no sense of discomfort, select the same series of values for
-// the background and the active item.
-
-// Menu text foreground color
-#ifndef AUTOCONNECT_MENUCOLOR_TEXT
-#define AUTOCONNECT_MENUCOLOR_TEXT        "#fff"
-//#define AUTOCONNECT_MENUCOLOR_TEXT        "#fffacd"
-#endif // !AUTOCONNECT_MENUCOLOR_TEXT
-
-// Menu background color
-#ifndef AUTOCONNECT_MENUCOLOR_BACKGROUND
-#define AUTOCONNECT_MENUCOLOR_BACKGROUND  "#263238"
-// #define AUTOCONNECT_MENUCOLOR_BACKGROUND  "#696969"
-#endif // !AUTOCONNECT_MENUCOLOR_BACKGROUND
-
-// Background color with active menu items and mouse hover
-#ifndef AUTOCONNECT_MENUCOLOR_ACTIVE
-#define AUTOCONNECT_MENUCOLOR_ACTIVE      "#37474f"
-// #define AUTOCONNECT_MENUCOLOR_ACTIVE      "#808080"
-#endif
-#endif




diff --git a/lib/AutoConnect-master/src/AutoConnectPage.cpp b/lib/AutoConnect-master/src/AutoConnectPage.cpp
deleted file mode 100644
index cabe1d8858d8d9d09a3669f20a713dae1a73883d..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/src/AutoConnectPage.cpp
+++ /dev/null
@@ -1,1435 +0,0 @@
-/**
- *  AutoConnect portal site web page implementation.
- *  @file   AutoConnectPage.h
- *  @author [email protected]
- *  @version    0.9.9
- *  @date   2019-05-25
- *  @copyright  MIT license.
- */
-
-#if defined(ARDUINO_ARCH_ESP8266)
-#include <ESP8266WiFi.h>
-extern "C" {
-#include <user_interface.h>
-}
-#elif defined(ARDUINO_ARCH_ESP32)
-#include <esp_spi_flash.h>
-#include <WiFi.h>
-#define ENC_TYPE_NONE WIFI_AUTH_OPEN
-#endif
-#include "AutoConnect.h"
-#include "AutoConnectPage.h"
-#include "AutoConnectCredential.h"
-
-/**< Basic CSS common to all pages */
-const char AutoConnect::_CSS_BASE[] PROGMEM = {
-  "html{"
-    "font-family:Helvetica,Arial,sans-serif;"
-    "font-size:16px;"
-    "-ms-text-size-adjust:100%;"
-    "-webkit-text-size-adjust:100%;"
-    "-moz-osx-font-smoothing:grayscale;"
-    "-webkit-font-smoothing:antialiased"
-  "}"
-  "body{"
-    "margin:0;"
-    "padding:0"
-  "}"
-  ".base-panel{"
-    "margin:0 22px 0 22px"
-  "}"
-  ".base-panel>*>label{"
-    "display:inline-block;"
-    "width:3.0em;"
-    "text-align:right"
-  "}"
-  ".base-panel>*>label.slist{"
-    "width:auto;"
-    "font-size:0.9em;"
-    "margin-left:10px;"
-    "text-align:left"
-  "}"
-  "input{"
-    "-moz-appearance:none;"
-    "-webkit-appearance:none;"
-    "font-size:0.9em;"
-    "margin:8px 0 auto"
-  "}"
-  ".lap{"
-    "visibility:collapse"
-  "}"
-  ".lap:target{"
-    "visibility:visible"
-  "}"
-  ".lap:target .overlap{"
-    "opacity:0.7;"
-    "transition:0.3s"
-  "}"
-  ".lap:target .modal_button{"
-    "opacity:1;"
-    "transition:0.3s"
-  "}"
-  ".overlap{"
-    "top:0;"
-    "left:0;"
-    "width:100%;"
-    "height:100%;"
-    "position:fixed;"
-    "opacity:0;"
-    "background:#000;"
-    "z-index:1000"
-  "}"
-  ".modal_button{"
-    "border-radius:13px;"
-    "background:#660033;"
-    "color:#ffffcc;"
-    "padding:20px 30px;"
-    "text-align:center;"
-    "text-decoration:none;"
-    "letter-spacing:1px;"
-    "font-weight:bold;"
-    "display:inline-block;"
-    "top:40%;"
-    "left:40%;"
-    "width:20%;"
-    "position:fixed;"
-    "opacity:0;"
-    "z-index:1001"
-  "}"
-};
-
-/**< non-marked list for UL */
-const char AutoConnect::_CSS_UL[] PROGMEM = {
-  "ul.noorder{"
-    "padding:0;"
-    "list-style:none;"
-    "display:table"
-  "}"
-  "ul.noorder li{"
-    "display:table-row"
-  "}"
-  "ul.noorder>*>label{"
-    "display:table-cell;"
-    "width:auto;"
-    "margin-right:10px;"
-    "text-align:right;"
-    "padding:10px 0.5em"
-  "}"
-  "ul.noorder>input[type=\"checkbox\"]{"
-    "-moz-appearance:checkbox;"
-    "-webkit-appearance:checkbox"
-  "}"
-  "ul.noorder>input[type=\"radio\"]{"
-    "margin-right:0.5em;"
-    "-moz-appearance:radio;"
-    "-webkit-appearance:radio"
-  "}"
-  "ul.noorder>input[type=\"text\"]{"
-    "width:auto"
-  "}"
-  "ul.noorder>input[type=\"text\"]:invalid{"
-    "background:#fce4d6"
-  "}"
-};
-
-/**< Image icon for inline expansion, the lock mark. */
-const char AutoConnect::_CSS_ICON_LOCK[] PROGMEM = {
-  ".img-lock{"
-    "display:inline-block;"
-    "width:22px;"
-    "height:22px;"
-    "margin-top:14px;"
-    "float:right;"
-    "background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAB1ElEQVRIibWVu0scURTGf3d2drBQFAWbbRQVCwuVLIZdi2gnWIiF/4GtKyuJGAJh8mgTcU0T8T8ICC6kiIVu44gvtFEQQWwsbExQJGHXmZtiZsOyzCN3Vz+4cDjfvec7j7l3QAF95onRZ54YKmdE1IbnS0c9mnAyAjkBxDy3LRHrjtRyu7OD52HntTAyvbw/HxP2hkCearrRb2WSCSuTTGi60S+QpzFhbwznDl/VVMHw0sF7hEjFbW2qkB38lfp8nNDipWcATil+uDM3cDWyeNRSijnfkHJnezb5Vkkgvbg3IOXD2e1ts93S+icnkZOAVaalZK3YQMa4L+pC6L1WduhYSeCf0PLBdxzOjZ93Lwvm6APAiLmlF1ubPiHotmaS41ExQjH0ZbfNM1NAFpgD0lVcICIrANqAVaAd+AFIYAy4BqaBG+Wsq5AH3vgk8xpYrzf4KLAZwhe8PYEIvQe4vc6H8Hnc2dQs0AFchvAXQGdEDF8s4A5TZS34BQqqQNaS1WMI3KD4WUbNoBJfce9CO7BSr4BfBe8A21vmUwh0VdjdTyHwscL+UK+AHxoD7FDoAX6/Cnpxn4ay/egCjcCL/w1chkqLakLQ/6ABhT57uAd+Vzv/Ara3iY6fK4WxAAAAAElFTkSuQmCC) no-repeat"
-  "}"
-};
-
-/**< INPUT button and submit style */
-const char AutoConnect::_CSS_INPUT_BUTTON[] PROGMEM = {
-  "input[type=\"button\"],input[type=\"submit\"],button[type=\"submit\"],button[type=\"button\"]{"
-    "padding:8px 0.5em;"
-    "font-weight:bold;"
-    "letter-spacing:0.8px;"
-    "color:#fff;"
-    "border:1px solid;"
-    "border-radius:2px;"
-    "margin-top:12px"
-  "}"
-  "input[type=\"button\"],button[type=\"button\"]{"
-    "background-color:#1b5e20;"
-    "border-color:#1b5e20;"
-    "width:15em"
-  "}"
-  ".aux-page input[type=\"button\"],button[type=\"button\"]{"
-    "font-weight:normal;"
-    "padding:8px 14px;"
-    "margin:12px;"
-    "width:auto"
-  "}"
-  "input#sb[type=\"submit\"]{"
-    "width:15em"
-  "}"
-  "input[type=\"submit\"],button[type=\"submit\"]{"
-    "padding:8px 30px;"
-    "background-color:#006064;"
-    "border-color:#006064"
-  "}"
-  "input[type=\"button\"],input[type=\"submit\"],button[type=\"submit\"]:focus,"
-  "input[type=\"button\"],input[type=\"submit\"],button[type=\"submit\"]:active{"
-    "outline:none;"
-    "text-decoration:none"
-  "}"
-};
-
-/**< INPUT text style */
-const char AutoConnect::_CSS_INPUT_TEXT[] PROGMEM = {
-  "input[type=\"text\"],input[type=\"password\"], .aux-page select{"
-    "background-color:#fff;"
-    "border:1px solid #ccc;"
-    "border-radius:2px;"
-    "color:#444;"
-    "margin:8px 0 8px 0;"
-    "padding:10px"
-  "}"
-  "input[type=\"text\"],input[type=\"password\"]{"
-    "font-weight:300;"
-    "width:auto;"
-    "-webkit-transition:all 0.20s ease-in;"
-    "-moz-transition:all 0.20s ease-in;"
-    "-o-transition:all 0.20s ease-in;"
-    "-ms-transition:all 0.20s ease-in;"
-    "transition:all 0.20s ease-in"
-  "}"
-  "input[type=\"text\"]:focus,input[type=\"password\"]:focus{"
-    "outline:none;"
-    "border-color:#5C9DED;"
-    "box-shadow:0 0 3px #4B8CDC"
-  "}"
-  "input.error, input.error:focus{"
-    "border-color:#ED5564;"
-    "color:#D9434E;"
-    "box-shadow:0 0 3px #D9434E"
-  "}"
-  "input:disabled{"
-    "opacity:0.6;"
-    "background-color:#f7f7f7"
-  "}"
-  "input:disabled:hover{"
-    "cursor:not-allowed"
-  "}"
-    "input.error::-webkit-input-placeholder{"
-    "color:#D9434E"
-  "}"
-  "input.error:-moz-placeholder{"
-    "color:#D9434E"
-  "}"
-  "input.error::-moz-placeholder{"
-    "color:#D9434E"
-  "}"
-  "input.error:-ms-input-placeholder{"
-    "color:#D9434E"
-  "}"
-  ".aux-page label{"
-    "padding:10px 0.5em"
-  "}"
-};
-
-/**< TABLE style */
-const char AutoConnect::_CSS_TABLE[] PROGMEM = {
-  "table{"
-    "border-collapse:collapse;"
-    "border-spacing:0;"
-    "border:1px solid #ddd;"
-    "color:#444;"
-    "background-color:#fff;"
-    "margin-bottom:20px"
-  "}"
-  "table.info,"
-  "table.info>tfoot,"
-  "table.info>thead{"
-    "width:100%;"
-    "border-color:#5C9DED"
-  "}"
-  "table.info>thead{"
-    "background-color:#5C9DED"
-  "}"
-  "table.info>thead>tr>th{"
-    "color:#fff"
-  "}"
-  "td,"
-  "th{"
-    "padding:10px 22px"
-  "}"
-  "thead{"
-    "background-color:#f3f3f3;"
-    "border-bottom:1px solid #ddd"
-  "}"
-  "thead>tr>th{"
-    "font-weight:400;"
-    "text-align:left"
-  "}"
-  "tfoot{"
-    "border-top:1px solid #ddd"
-  "}"
-  "tbody,"
-  "tbody>tr:nth-child(odd){"
-    "background-color:#fff"
-  "}"
-  "tbody>tr>td,"
-  "tfoot>tr>td{"
-    "font-weight:300;"
-    "font-size:.88em"
-  "}"
-  "tbody>tr:nth-child(even){"
-    "background-color:#f7f7f7"
-  "}"
-    "table.info tbody>tr:nth-child(even){"
-    "background-color:#EFF5FD"
-  "}"
-};
-
-/**< SVG animation for spinner */
-const char AutoConnect::_CSS_SPINNER[] PROGMEM = {
-  ".spinner{"
-    "width:40px;"
-    "height:40px;"
-    "position:relative;"
-    "margin:100px auto"
-  "}"
-  ".double-bounce1, .double-bounce2{"
-    "width:100%;"
-    "height:100%;"
-    "border-radius:50%;"
-    "background-color:#a3cccc;"
-    "opacity:0.6;"
-    "position:absolute;"
-    "top:0;"
-    "left:0;"
-    "-webkit-animation:sk-bounce 2.0s infinite ease-in-out;"
-    "animation:sk-bounce 2.0s infinite ease-in-out"
-  "}"
-  ".double-bounce2{"
-    "-webkit-animation-delay:-1.0s;"
-    "animation-delay:-1.0s"
-  "}"
-  "@-webkit-keyframes sk-bounce{"
-    "0%, 100%{-webkit-transform:scale(0.0)}"
-    "50%{-webkit-transform:scale(1.0)}"
-  "}"
-  "@keyframes sk-bounce{"
-    "0%,100%{"
-      "transform:scale(0.0);"
-      "-webkit-transform:scale(0.0);"
-    "}50%{"
-      "transform:scale(1.0);"
-      "-webkit-transform:scale(1.0);"
-    "}"
-  "}"
-};
-
-/**< Common menu bar. This style quotes LuxBar. */
-/**< balzss/luxbar is licensed under the MIT License https://github.com/balzss/luxbar */
-const char AutoConnect::_CSS_LUXBAR[] PROGMEM = {
-  ".luxbar-fixed{"
-    "width:100%;"
-    "position:fixed;"
-    "top:0;"
-    "left:0;"
-    "z-index:1000;"
-    "box-shadow:0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24)"
-  "}"
-  ".luxbar-burger span,"
-  ".luxbar-burger span::before,"
-  ".luxbar-burger span::after{"
-    "display:block;"
-    "height:2px;"
-    "width:26px;"
-    "transition:0.6s ease"
-  "}"
-  ".luxbar-checkbox:checked~.luxbar-menu li .luxbar-burger span{"
-    "background-color:transparent"
-  "}"
-  ".luxbar-checkbox:checked~.luxbar-menu li .luxbar-burger span::before,"
-  ".luxbar-checkbox:checked~.luxbar-menu li .luxbar-burger span::after{"
-    "margin-top:0"
-  "}"
-  ".luxbar-header{"
-    "display:flex;"
-    "flex-direction:row;"
-    "justify-content:space-between;"
-    "align-items:center;"
-    "height:58px"
-  "}"
-  ".luxbar-menu-right .luxbar-burger{"
-    "margin-left:auto"
-  "}"
-  ".luxbar-brand{"
-    "font-size:1.6em;"
-    "padding:18px 24px 18px 24px"
-  "}"
-  ".luxbar-menu{"
-    "min-height:58px;"
-    "transition:0.6s ease;"
-    "width:100%"
-  "}"
-  ".luxbar-navigation{"
-    "display:flex;"
-    "flex-direction:column;"
-    "list-style:none;"
-    "padding-left:0;"
-    "margin:0"
-  "}"
-  ".luxbar-menu a,"
-  ".luxbar-item a{"
-    "text-decoration:none;"
-    "color:inherit;"
-    "cursor:pointer"
-  "}"
-  ".luxbar-item{"
-    "height:58px"
-  "}"
-  ".luxbar-item a{"
-    "padding:18px 24px 18px 24px;"
-    "display:block"
-  "}"
-  ".luxbar-burger{"
-    "padding:18px 24px 18px 24px;"
-    "position:relative;"
-    "cursor:pointer"
-  "}"
-  ".luxbar-burger span::before,"
-  ".luxbar-burger span::after{"
-    "content:'';"
-    "position:absolute"
-  "}"
-  ".luxbar-burger span::before{"
-    "margin-top:-8px"
-  "}"
-  ".luxbar-burger span::after{"
-    "margin-top:8px"
-  "}"
-  ".luxbar-checkbox{"
-    "display:none"
-  "}"
-  ".luxbar-checkbox:not(:checked)~.luxbar-menu{"
-    "overflow:hidden;"
-    "height:58px"
-  "}"
-  ".luxbar-checkbox:checked~.luxbar-menu{"
-    "transition:height 0.6s ease;"
-    "height:100vh;"
-    "overflow:auto"
-  "}"
-  ".dropdown{"
-    "position:relative;"
-    "height:auto;"
-    "min-height:58px"
-  "}"
-  ".dropdown:hover>ul{"
-    "position:relative;"
-    "display:block;"
-    "min-width:100%"
-  "}"
-  ".dropdown>a::after{"
-    "position:absolute;"
-    "content:'';"
-    "right:10px;"
-    "top:25px;"
-    "border-width:5px 5px 0;"
-    "border-color:transparent;"
-    "border-style:solid"
-  "}"
-  ".dropdown>ul{"
-    "display:block;"
-    "overflow-x:hidden;"
-    "list-style:none;"
-    "padding:0"
-  "}"
-  ".dropdown>ul .luxbar-item{"
-    "min-width:100%;"
-    "height:29px;"
-    "padding:5px 10px 5px 40px"
-  "}"
-  ".dropdown>ul .luxbar-item a{"
-    "min-height:29px;"
-    "line-height:29px;"
-    "padding:0"
-  "}"
-  "@media screen and (min-width:768px){"
-    ".luxbar-navigation{"
-      "flex-flow:row;"
-      "justify-content:flex-end;"
-    "}"
-    ".luxbar-burger{"
-      "display:none;"
-    "}"
-    ".luxbar-checkbox:not(:checked)~.luxbar-menu{"
-      "overflow:visible;"
-    "}"
-    ".luxbar-checkbox:checked~.luxbar-menu{"
-      "height:58px;"
-    "}"
-    ".luxbar-menu .luxbar-item{"
-      "border-top:0;"
-    "}"
-    ".luxbar-menu-right .luxbar-header{"
-      "margin-right:auto;"
-    "}"
-    ".dropdown{"
-      "height:58px;"
-    "}"
-    ".dropdown:hover>ul{"
-      "position:absolute;"
-      "left:0;"
-      "top:58px;"
-      "padding:0;"
-    "}"
-    ".dropdown>ul{"
-      "display:none;"
-    "}"
-    ".dropdown>ul .luxbar-item{"
-      "padding:5px 10px;"
-    "}"
-    ".dropdown>ul .luxbar-item a{"
-      "white-space:nowrap;"
-    "}"
-  "}"
-  ".luxbar-checkbox:checked+.luxbar-menu .luxbar-burger-doublespin span::before{"
-    "transform:rotate(225deg)"
-  "}"
-  ".luxbar-checkbox:checked+.luxbar-menu .luxbar-burger-doublespin span::after{"
-    "transform:rotate(-225deg)"
-  "}"
-  ".luxbar-menu-material,"
-  ".luxbar-menu-material .dropdown ul{"
-    "background-color:" AUTOCONNECT_MENUCOLOR_BACKGROUND ";"
-    "color:" AUTOCONNECT_MENUCOLOR_TEXT
-  "}"
-  ".luxbar-menu-material .active,"
-  ".luxbar-menu-material .luxbar-item:hover{"
-    "background-color:" AUTOCONNECT_MENUCOLOR_ACTIVE
-  "}"
-  ".luxbar-menu-material .luxbar-burger span,"
-  ".luxbar-menu-material .luxbar-burger span::before,"
-  ".luxbar-menu-material .luxbar-burger span::after{"
-    "background-color:" AUTOCONNECT_MENUCOLOR_TEXT
-  "}"
-};
-
-/**< Common html document header. */
-const char AutoConnect::_ELM_HTML_HEAD[] PROGMEM = {
-  "<!DOCTYPE html>"
-  "<html>"
-  "<head>"
-  "<meta charset=\"UTF-8\" name=\"viewport\" content=\"width=device-width,initial-scale=1\">"
-};
-
-/**< LuxBar menu element. */
-const char  AutoConnect::_ELM_MENU_PRE[] PROGMEM = {
-  "<header id=\"luxbar\" class=\"luxbar-fixed\">"
-    "<input type=\"checkbox\" class=\"luxbar-checkbox\" id=\"luxbar-checkbox\"/>"
-    "<div class=\"luxbar-menu luxbar-menu-right luxbar-menu-material\">"
-      "<ul class=\"luxbar-navigation\">"
-        "<li class=\"luxbar-header\">"
-          "<a href=\"" AUTOCONNECT_URI "\" class=\"luxbar-brand\">MENU_TITLE</a>"
-          "<label class=\"luxbar-burger luxbar-burger-doublespin\" id=\"luxbar-burger\" for=\"luxbar-checkbox\"><span></span></label>"
-        "</li>"
-        "<li class=\"luxbar-item\"><a href=\"" AUTOCONNECT_URI_CONFIG "\">" AUTOCONNECT_MENULABEL_CONFIGNEW "</a></li>"
-        "<li class=\"luxbar-item\"><a href=\"" AUTOCONNECT_URI_OPEN "\">" AUTOCONNECT_MENULABEL_OPENSSIDS "</a></li>"
-        "<li class=\"luxbar-item\"><a href=\"" AUTOCONNECT_URI_DISCON "\">" AUTOCONNECT_MENULABEL_DISCONNECT "</a></li>"
-        "<li class=\"luxbar-item\" id=\"reset\"><a href=\"#rdlg\">" AUTOCONNECT_MENULABEL_RESET "</a></li>"
-};
-
-const char  AutoConnect::_ELM_MENU_AUX[] PROGMEM = {
-        "{{AUX_MENU}}"
-};
-
-const char  AutoConnect::_ELM_MENU_POST[] PROGMEM = {
-        "<li class=\"luxbar-item\"><a href=\"HOME_URI\">" AUTOCONNECT_MENULABEL_HOME "</a></li>"
-      "</ul>"
-    "</div>"
-    "<div class=\"lap\" id=\"rdlg\"><a href=\"#reset\" class=\"overlap\"></a>"
-      "<div class=\"modal_button\"><h2><a href=\"" AUTOCONNECT_URI_RESET "\" class=\"modal_button\">" AUTOCONNECT_BUTTONLABEL_RESET "</a></h2></div>"
-    "</div>"
-  "</header>"
-};
-
-/**< The 404 page content. */
-const char  AutoConnect::_PAGE_404[] PROGMEM = {
-  "{{HEAD}}"
-    "<title>Page not found</title>"
-  "</head>"
-  "<body>"
-    "404 Not found"
-  "</body>"
-  "</html>"
-};
-
-/**< The page that started the reset. */
-const char  AutoConnect::_PAGE_RESETTING[] PROGMEM = {
-  "{{HEAD}}"
-    "<meta http-equiv=\"refresh\" content=\"{{UPTIME}};url={{BOOTURI}}\">"
-    "<title>AutoConnect resetting</title>"
-  "</head>"
-  "<body>"
-    "<h2>{{RESET}}</h2>"
-  "</body>"
-  "</html>"
-};
-
-/**< AutoConnect portal page. */
-const char  AutoConnect::_PAGE_STAT[] PROGMEM = {
-  "{{HEAD}}"
-    "<title>AutoConnect statistics</title>"
-    "<style type=\"text/css\">"
-      "{{CSS_BASE}}"
-      "{{CSS_TABLE}}"
-      "{{CSS_LUXBAR}}"
-    "</style>"
-  "</head>"
-  "<body style=\"padding-top:58px;\">"
-    "<div class=\"container\">"
-      "{{MENU_PRE}}"
-      "{{MENU_AUX}}"
-      "{{MENU_POST}}"
-      "<div>"
-        "<table class=\"info\" style=\"border:none;\">"
-          "<tbody>"
-          "<tr>"
-            "<td>Established connection</td>"
-            "<td>{{ESTAB_SSID}}</td>"
-          "</tr>"
-          "<tr>"
-            "<td>Mode</td>"
-            "<td>{{WIFI_MODE}}({{WIFI_STATUS}})</td>"
-          "</tr>"
-          "<tr>"
-            "<td>IP</td>"
-            "<td>{{LOCAL_IP}}</td>"
-          "</tr>"
-          "<tr>"
-            "<td>GW</td>"
-            "<td>{{GATEWAY}}</td>"
-          "</tr>"
-          "<tr>"
-            "<td>Subnet mask</td>"
-            "<td>{{NETMASK}}</td>"
-          "</tr>"
-          "<tr>"
-            "<td>SoftAP IP</td>"
-            "<td>{{SOFTAP_IP}}</td>"
-          "</tr>"
-          "<tr>"
-            "<td>AP MAC</td>"
-            "<td>{{AP_MAC}}</td>"
-          "</tr>"
-          "<tr>"
-            "<td>STA MAC</td>"
-            "<td>{{STA_MAC}}</td>"
-          "</tr>"
-          "<tr>"
-            "<td>Channel</td>"
-            "<td>{{CHANNEL}}</td>"
-          "</tr>"
-          "<tr>"
-            "<td>dBm</td>"
-            "<td>{{DBM}}</td>"
-          "</tr>"
-          "<tr>"
-            "<td>Chip ID</td>"
-            "<td>{{CHIP_ID}}</td>"
-          "</tr>"
-          "<tr>"
-            "<td>CPU Freq.</td>"
-            "<td>{{CPU_FREQ}}MHz</td>"
-          "</tr>"
-          "<tr>"
-            "<td>Flash size</td>"
-            "<td>{{FLASH_SIZE}}</td>"
-          "</tr>"
-          "<tr>"
-            "<td>Free memory</td>"
-            "<td>{{FREE_HEAP}}</td>"
-          "</tr>"
-          "</tbody>"
-        "</table>"
-      "</div>"
-    "</div>"
-  "</body>"
-  "</html>"
-};
-
-/**< A page that specifies the new configuration. */
-const char  AutoConnect::_PAGE_CONFIGNEW[] PROGMEM = {
-  "{{HEAD}}"
-    "<title>AutoConnect config</title>"
-    "<style type=\"text/css\">"
-      "{{CSS_BASE}}"
-      "{{CSS_ICON_LOCK}}"
-      "{{CSS_UL}}"
-      "{{CSS_INPUT_BUTTON}}"
-      "{{CSS_INPUT_TEXT}}"
-      "{{CSS_LUXBAR}}"
-    "</style>"
-  "</head>"
-  "<body style=\"padding-top:58px;\">"
-    "<div class=\"container\">"
-      "{{MENU_PRE}}"
-      "{{MENU_AUX}}"
-      "{{MENU_POST}}"
-      "<div class=\"base-panel\">"
-        "<form action=\"" AUTOCONNECT_URI_CONNECT "\" method=\"post\">"
-          "{{LIST_SSID}}"
-          "<div style=\"margin:16px 0 8px 0;border-bottom:solid 1px #263238;\">Total:{{SSID_COUNT}} Hidden:{{HIDDEN_COUNT}}</div>"
-          "<ul class=\"noorder\">"
-            "<li>"
-              "<label for=\"ssid\">SSID</label>"
-              "<input id=\"ssid\" type=\"text\" name=\"" AUTOCONNECT_PARAMID_SSID "\" placeholder=\"SSID\">"
-            "</li>"
-            "<li>"
-              "<label for=\"passphrase\">Passphrase</label>"
-              "<input id=\"passphrase\" type=\"password\" name=\"" AUTOCONNECT_PARAMID_PASS "\" placeholder=\"Passphrase\">"
-            "</li>"
-            "<li>"
-              "<label for=\"serverIP\">Server IP</label>"
-              "<input id=\"serverIP\" type=\"text\" name=\"" AUTOCONNECT_PARAMID_SERVERIP "\" placeholder=\"Server IP\">"
-            "</li>"
-            "<li>"
-              "<label for=\"serverIP\">USB</label>"
-              "<input id=\"usbBox\" type=\"radio\" name=\"" AUTOCONNECT_PARAMID_CONNECTION "\"  >"
-            "</li>"
-            "<li>"
-              "<label for=\"serverIP\">WiFi</label>"
-              "<input id=\"wifiBox\" type=\"radio\" name=\"" AUTOCONNECT_PARAMID_CONNECTION "\" checked >"
-            "</li>"
-            "<li>"
-            "<br><li><input type=\"submit\" value=\"Apply\"></li>"
-          "</ul>"
-        "</form>"
-      "</div>"
-    "</div>"
-  "</body>"
-  "<script type=\"text/javascript\">"
-    "function onFocus(value){"
-      "document.getElementById('ssid').value=value;"
-      "document.getElementById('passphrase').focus();"
-    "}"
-  "</script>"
-  "</html>"
-};
-
-/**< A page that reads stored authentication information and starts connection. */
-const char  AutoConnect::_PAGE_OPENCREDT[] PROGMEM = {
-  "{{HEAD}}"
-    "<title>AutoConnect credentials</title>"
-    "<style type=\"text/css\">"
-      "{{CSS_BASE}}"
-      "{{CSS_ICON_LOCK}}"
-      "{{CSS_INPUT_BUTTON}}"
-      "{{CSS_LUXBAR}}"
-    "</style>"
-  "</head>"
-  "<body style=\"padding-top:58px;\">"
-    "<div class=\"container\">"
-      "{{MENU_PRE}}"
-      "{{MENU_AUX}}"
-      "{{MENU_POST}}"
-      "<div class=\"base-panel\">"
-        "<form action=\"" AUTOCONNECT_URI_CONNECT "\" method=\"post\">"
-          "{{OPEN_SSID}}"
-        "</form>"
-      "</div>"
-    "</div>"
-  "</body>"
-  "</html>"
-};
-
-/**< A page that informs during a connection attempting. */
-const char  AutoConnect::_PAGE_CONNECTING[] PROGMEM = {
-  "{{REQ}}"
-  "{{HEAD}}"
-    "<title>AutoConnect connecting</title>"
-    "<style type=\"text/css\">"
-      "{{CSS_BASE}}"
-      "{{CSS_SPINNER}}"
-      "{{CSS_LUXBAR}}"
-    "</style>"
-  "</head>"
-  "<body style=\"padding-top:58px;\">"
-    "<div class=\"container\">"
-      "{{MENU_PRE}}"
-      "{{MENU_POST}}"
-      "<div class=\"spinner\">"
-        "<div class=\"double-bounce1\"></div>"
-        "<div class=\"double-bounce2\"></div>"
-        "<div style=\"position:absolute;left:-100%;right:-100%;text-align:center;margin:10px auto;font-weight:bold;color:#0b0b33;\">{{CUR_SSID}}</div>"
-      "</div>"
-    "</div>"
-    "<script type=\"text/javascript\">"
-      "setTimeout(\"link()\"," AUTOCONNECT_RESPONSE_WAITTIME ");"
-      "function link(){location.href='" AUTOCONNECT_URI_RESULT "';}"
-    "</script>"
-  "</body>"
-  "</html>"
-};
-
-/**< A page announcing that a connection has been established. */
-const char  AutoConnect::_PAGE_SUCCESS[] PROGMEM = {
-  "{{HEAD}}"
-    "<title>AutoConnect statistics</title>"
-    "<style type=\"text/css\">"
-      "{{CSS_BASE}}"
-      "{{CSS_TABLE}}"
-      "{{CSS_LUXBAR}}"
-    "</style>"
-  "</head>"
-  "<body style=\"padding-top:58px;\">"
-    "<div class=\"container\">"
-      "{{MENU_PRE}}"
-      "{{MENU_AUX}}"
-      "{{MENU_POST}}"
-      "<div>"
-        "<table class=\"info\" style=\"border:none;\">"
-          "<tbody>"
-          "<tr>"
-            "<td>Established connection</td>"
-            "<td>{{ESTAB_SSID}}</td>"
-          "</tr>"
-          "<tr>"
-            "<td>Mode</td>"
-            "<td>{{WIFI_MODE}}({{WIFI_STATUS}})</td>"
-          "</tr>"
-          "<tr>"
-            "<td>IP</td>"
-            "<td>{{LOCAL_IP}}</td>"
-          "</tr>"
-            "<td>GW</td>"
-            "<td>{{GATEWAY}}</td>"
-          "</tr>"
-          "<tr>"
-            "<td>Subnet mask</td>"
-            "<td>{{NETMASK}}</td>"
-          "</tr>"
-          "<tr>"
-            "<td>Channel</td>"
-            "<td>{{CHANNEL}}</td>"
-          "</tr>"
-          "<tr>"
-            "<td>dBm</td>"
-            "<td>{{DBM}}</td>"
-          "</tr>"
-          "</tbody>"
-        "</table>"
-      "</div>"
-    "</div>"
-  "</body>"
-  "</html>"
-};
-
-/**< A response page for connection failed. */
-const char  AutoConnect::_PAGE_FAIL[] PROGMEM = {
-  "{{HEAD}}"
-    "<title>AutoConnect statistics</title>"
-    "<style type=\"text/css\">"
-      "{{CSS_BASE}}"
-      "{{CSS_TABLE}}"
-      "{{CSS_LUXBAR}}"
-    "</style>"
-  "</head>"
-  "<body style=\"padding-top:58px;\">"
-    "<div class=\"container\">"
-      "{{MENU_PRE}}"
-      "{{MENU_AUX}}"
-      "{{MENU_POST}}"
-      "<div>"
-        "<table class=\"info\" style=\"border:none;\">"
-          "<tbody>"
-          "<tr>"
-            "<td>Connection Failed</td>"
-            "<td>{{STATION_STATUS}}</td>"
-          "</tr>"
-          "</tbody>"
-        "</table>"
-      "</div>"
-    "</div>"
-  "</body>"
-  "</html>"
-};
-
-/**< A response page for disconnected from the AP. */
-const char  AutoConnect::_PAGE_DISCONN[] PROGMEM = {
-  "{{DISCONNECT}}"
-  "{{HEAD}}"
-    "<title>AutoConnect disconnected</title>"
-    "<style type=\"text/css\">"
-      "{{CSS_BASE}}"
-      "{{CSS_LUXBAR}}"
-    "</style>"
-  "</head>"
-  "<body style=\"padding-top:58px;\">"
-    "<div class=\"container\">"
-      "{{MENU_PRE}}"
-      "{{MENU_POST}}"
-    "</div>"
-  "</body>"
-  "</html>"
-};
-
-// Each page of AutoConnect is http transferred by the content transfer
-// mode of Page Builder. The default transfer mode is
-// AUTOCONNECT_HTTP_TRANSFER defined in AutoConnectDefs.h. The page to
-// which default transfer mode is not applied, specifies the enumeration
-// value of PageBuilder::TransferEncoding_t. The content construction
-// buffer can be reserved with the chunked transfer, and its size is
-// macro defined by AUTOCONNECT_CONTENTBUFFER_SIZE.
-const AutoConnect::PageTranserModeST AutoConnect::_pageBuildMode[] = {
-  { AUTOCONNECT_URI,         AUTOCONNECT_HTTP_TRANSFER, 0 },
-  { AUTOCONNECT_URI_CONFIG,  PB_Chunk, AUTOCONNECT_CONTENTBUFFER_SIZE },
-  { AUTOCONNECT_URI_CONNECT, AUTOCONNECT_HTTP_TRANSFER, 0 },
-  { AUTOCONNECT_URI_RESULT,  AUTOCONNECT_HTTP_TRANSFER, 0 },
-  { AUTOCONNECT_URI_OPEN,    AUTOCONNECT_HTTP_TRANSFER, 0 },
-  { AUTOCONNECT_URI_DISCON,  AUTOCONNECT_HTTP_TRANSFER, 0 },
-  { AUTOCONNECT_URI_RESET,   AUTOCONNECT_HTTP_TRANSFER, 0 },
-  { AUTOCONNECT_URI_SUCCESS, AUTOCONNECT_HTTP_TRANSFER, 0 },
-  { AUTOCONNECT_URI_FAIL,    AUTOCONNECT_HTTP_TRANSFER, 0 }
-};
-
-uint32_t AutoConnect::_getChipId() {
-#if defined(ARDUINO_ARCH_ESP8266)
-  return ESP.getChipId();
-#elif defined(ARDUINO_ARCH_ESP32)
-  uint64_t  chipId;
-  chipId = ESP.getEfuseMac();
-  return (uint32_t)(chipId >> 32);
-#endif
-}
-
-uint32_t AutoConnect::_getFlashChipRealSize() {
-#if defined(ARDUINO_ARCH_ESP8266)
-  return ESP.getFlashChipRealSize();
-#elif defined(ARDUINO_ARCH_ESP32)
-  return (uint32_t)spi_flash_get_chip_size();
-#endif
-}
-
-String AutoConnect::_token_CSS_BASE(PageArgument& args) {
-  AC_UNUSED(args);
-  return String(FPSTR(_CSS_BASE));
-}
-
-String AutoConnect::_token_CSS_UL(PageArgument& args) {
-  AC_UNUSED(args);
-  return String(FPSTR(_CSS_UL));
-}
-
-String AutoConnect::_token_CSS_ICON_LOCK(PageArgument& args) {
-  AC_UNUSED(args);
-  return String(FPSTR(_CSS_ICON_LOCK));
-}
-
-String AutoConnect::_token_CSS_INPUT_BUTTON(PageArgument& args) {
-  AC_UNUSED(args);
-  return String(FPSTR(_CSS_INPUT_BUTTON));
-}
-
-String AutoConnect::_token_CSS_INPUT_TEXT(PageArgument& args) {
-  AC_UNUSED(args);
-  return String(FPSTR(_CSS_INPUT_TEXT));
-}
-
-String AutoConnect::_token_CSS_TABLE(PageArgument& args) {
-  AC_UNUSED(args);
-  return String(FPSTR(_CSS_TABLE));
-}
-
-String AutoConnect::_token_CSS_SPINNER(PageArgument& args) {
-  AC_UNUSED(args);
-  return String(FPSTR(_CSS_SPINNER));
-}
-
-String AutoConnect::_token_HEAD(PageArgument& args) {
-  AC_UNUSED(args);
-  return String(FPSTR(_ELM_HTML_HEAD));
-}
-
-String AutoConnect::_token_MENU_PRE(PageArgument& args) {
-  String  currentMenu = FPSTR(_ELM_MENU_PRE);
-  currentMenu.replace(String(F("MENU_TITLE")), _menuTitle);
-  currentMenu.replace(String(F("{{CUR_SSID}}")), _token_ESTAB_SSID(args));
-  return currentMenu;
-}
-
-String AutoConnect::_token_MENU_AUX(PageArgument& args) {
-  String  menuItem = String("");
-  if (_aux)
-    menuItem = _aux->_injectMenu(args);
-  return menuItem;
-}
-
-String AutoConnect::_token_MENU_POST(PageArgument& args) {
-  AC_UNUSED(args);
-  String  postMenu = FPSTR(_ELM_MENU_POST);
-  postMenu.replace(String(F("HOME_URI")), _apConfig.homeUri);
-  return postMenu;
-}
-
-String AutoConnect::_token_CSS_LUXBAR(PageArgument& args) {
-  AC_UNUSED(args);
-  return String(FPSTR(_CSS_LUXBAR));
-}
-
-String AutoConnect::_token_ESTAB_SSID(PageArgument& args) {
-  AC_UNUSED(args);
-  return (WiFi.status() == WL_CONNECTED ? WiFi.SSID() : String(F("N/A")));
-}
-
-String AutoConnect::_token_WIFI_MODE(PageArgument& args) {
-  AC_UNUSED(args);
-  const char* wifiMode = "";
-  switch (WiFi.getMode()) {
-  case WIFI_OFF:
-    wifiMode = "OFF";
-    break;
-  case WIFI_STA:
-    wifiMode = "STA";
-    break;
-  case WIFI_AP:
-    wifiMode = "AP";
-    break;
-  case WIFI_AP_STA:
-    wifiMode = "AP_STA";
-    break;
-#ifdef ARDUINO_ARCH_ESP32
-  case WIFI_MODE_MAX:
-    wifiMode = "MAX";
-    break;
-#endif
-  }
-  return String(wifiMode);
-}
-
-String AutoConnect::_token_WIFI_STATUS(PageArgument& args) {
-  AC_UNUSED(args);
-  return String(WiFi.status());
-}
-
-String AutoConnect::_token_STATION_STATUS(PageArgument& args) {
-  AC_UNUSED(args);
-  const char* wlStatusSymbol ="";
-  static const char* wlStatusSymbols[] = {
-#if defined(ARDUINO_ARCH_ESP8266)
-    "IDLE",
-    "CONNECTING",
-    "WRONG_PASSWORD",
-    "NO_AP_FOUND",
-    "CONNECT_FAIL",
-    "GOT_IP"
-  };
-  switch (wifi_station_get_connect_status()) {
-  case STATION_IDLE:
-    wlStatusSymbol = wlStatusSymbols[0];
-    break;
-  case STATION_CONNECTING:
-    wlStatusSymbol = wlStatusSymbols[1];
-    break;
-  case STATION_WRONG_PASSWORD:
-    wlStatusSymbol = wlStatusSymbols[2];
-    break;
-  case STATION_NO_AP_FOUND:
-    wlStatusSymbol = wlStatusSymbols[3];
-    break;
-  case STATION_CONNECT_FAIL:
-    wlStatusSymbol = wlStatusSymbols[4];
-    break;
-  case STATION_GOT_IP:
-    wlStatusSymbol = wlStatusSymbols[5];
-    break;
-#elif defined(ARDUINO_ARCH_ESP32)
-    "IDLE",
-    "NO_SSID_AVAIL",
-    "SCAN_COMPLETED",
-    "CONNECTED",
-    "CONNECT_FAILED",
-    "CONNECTION_LOST",
-    "DISCONNECTED",
-    "NO_SHIELD"
-  };
-  switch (_rsConnect) {
-  case WL_IDLE_STATUS:
-    wlStatusSymbol = wlStatusSymbols[0];
-    break;
-  case WL_NO_SSID_AVAIL:
-    wlStatusSymbol = wlStatusSymbols[1];
-    break;
-  case WL_SCAN_COMPLETED:
-    wlStatusSymbol = wlStatusSymbols[2];
-    break;
-  case WL_CONNECTED:
-    wlStatusSymbol = wlStatusSymbols[3];
-    break;
-  case WL_CONNECT_FAILED:
-    wlStatusSymbol = wlStatusSymbols[4];
-    break;
-  case WL_CONNECTION_LOST:
-    wlStatusSymbol = wlStatusSymbols[5];
-    break;
-  case WL_DISCONNECTED:
-    wlStatusSymbol = wlStatusSymbols[6];
-    break;
-  case WL_NO_SHIELD:
-    wlStatusSymbol = wlStatusSymbols[7];
-    break;
-#endif
-  }
-  return String("(") + String(_rsConnect) + String(") ") + String(wlStatusSymbol);
-}
-
-String AutoConnect::_token_LOCAL_IP(PageArgument& args) {
-  AC_UNUSED(args);
-  return WiFi.localIP().toString();
-}
-
-String AutoConnect::_token_SOFTAP_IP(PageArgument& args) {
-  AC_UNUSED(args);
-  return WiFi.softAPIP().toString();
-}
-
-String AutoConnect::_token_GATEWAY(PageArgument& args) {
-  AC_UNUSED(args);
-  return WiFi.gatewayIP().toString();
-}
-
-String AutoConnect::_token_NETMASK(PageArgument& args) {
-  AC_UNUSED(args);
-  return WiFi.subnetMask().toString();
-}
-
-String AutoConnect::_token_AP_MAC(PageArgument& args) {
-  AC_UNUSED(args);
-  uint8_t macAddress[6];
-  WiFi.softAPmacAddress(macAddress);
-  return AutoConnect::_toMACAddressString(macAddress);
-}
-
-String AutoConnect::_token_STA_MAC(PageArgument& args) {
-  AC_UNUSED(args);
-  uint8_t macAddress[6];
-  WiFi.macAddress(macAddress);
-  return AutoConnect::_toMACAddressString(macAddress);
-}
-
-String AutoConnect::_token_CHANNEL(PageArgument& args) {
-  AC_UNUSED(args);
-  return String(WiFi.channel());
-}
-
-String AutoConnect::_token_DBM(PageArgument& args) {
-  AC_UNUSED(args);
-  int32_t dBm = WiFi.RSSI();
-  return (dBm == 31 ? String(F("N/A")) : String(dBm));
-}
-
-String AutoConnect::_token_CPU_FREQ(PageArgument& args) {
-  AC_UNUSED(args);
-  return String(ESP.getCpuFreqMHz());
-}
-
-String AutoConnect::_token_FLASH_SIZE(PageArgument& args) {
-  AC_UNUSED(args);
-  return String(_getFlashChipRealSize());
-}
-
-String AutoConnect::_token_CHIP_ID(PageArgument& args) {
-  AC_UNUSED(args);
-  return String(_getChipId());
-}
-
-String AutoConnect::_token_FREE_HEAP(PageArgument& args) {
-  AC_UNUSED(args);
-  return String(_freeHeapSize);
-}
-
-String AutoConnect::_token_LIST_SSID(PageArgument& args) {
-  // Obtain the page number to display.
-  // When the display request is the first page, it will be obtained
-  // from the scan results of the WiFiScan class if it has already been
-  // scanned.
-  uint8_t page = 0;
-  if (args.hasArg(String(F("page"))))
-    page = args.arg("page").toInt();
-  else {
-    // Scan at a first time
-    WiFi.scanDelete();
-    _scanCount = WiFi.scanNetworks(false, true);
-    AC_DBG("%d network(s) found\n", (int)_scanCount);
-  }
-  // Locate to the page and build SSD list content.
-  String  ssidList = String("");
-  _hiddenSSIDCount = 0;
-  uint8_t validCount = 0;
-  uint8_t dispCount = 0;
-  for (uint8_t i = 0; i < _scanCount; i++) {
-    String ssid = WiFi.SSID(i);
-    if (ssid.length() > 0) {
-      // An available SSID may be listed.
-      // AUTOCONNECT_SSIDPAGEUNIT_LINES determines the number of lines
-      // per page in the available SSID list.
-      if (validCount >= page * AUTOCONNECT_SSIDPAGEUNIT_LINES && validCount <= (page + 1) * AUTOCONNECT_SSIDPAGEUNIT_LINES - 1) {
-        if (++dispCount <= AUTOCONNECT_SSIDPAGEUNIT_LINES) {
-          ssidList += String(F("<input type=\"button\" onClick=\"onFocus(this.getAttribute('value'))\" value=\"")) + ssid + String("\">");
-          ssidList += String(F("<label class=\"slist\">")) + String(AutoConnect::_toWiFiQuality(WiFi.RSSI(i))) + String(F("&#037;&ensp;Ch.")) + String(WiFi.channel(i)) + String(F("</label>"));
-          if (WiFi.encryptionType(i) != ENC_TYPE_NONE)
-            ssidList += String(F("<span class=\"img-lock\"></span>"));
-          ssidList += String(F("<br>"));
-        }
-      }
-      // The validCount counts the found SSIDs that is not the Hidden
-      // attribute to determines the next button should be displayed.
-      validCount++;
-    }
-    else
-      _hiddenSSIDCount++;
-  }
-  // Prepare perv. button
-  if (page >= 1)
-    ssidList += String(F("<button type=\"submit\" name=\"page\" value=\"")) + String(page - 1) + String(F("\" formaction=\"")) + String(F(AUTOCONNECT_URI_CONFIG)) + String(F("\">Prev.</button>&emsp;"));
-  // Prepare next button
-  if (validCount > (page + 1) * AUTOCONNECT_SSIDPAGEUNIT_LINES)
-    ssidList += String(F("<button type=\"submit\" name=\"page\" value=\"")) + String(page + 1) + String(F("\" formaction=\"")) + String(F(AUTOCONNECT_URI_CONFIG)) + String(F("\">Next</button>&emsp;"));
-  return ssidList;
-}
-
-String AutoConnect::_token_SSID_COUNT(PageArgument& args) {
-  AC_UNUSED(args);
-  return String(_scanCount);
-}
-
-String AutoConnect::_token_HIDDEN_COUNT(PageArgument& args) {
-  AC_UNUSED(args);
-  return String(_hiddenSSIDCount);
-}
-
-String AutoConnect::_token_OPEN_SSID(PageArgument& args) {
-  AC_UNUSED(args);
-  AutoConnectCredential credit(_apConfig.boundaryOffset);
-  struct station_config entry;
-  String ssidList;
-  String rssiSym;
-
-  uint8_t creEntries = credit.entries();
-  if (creEntries > 0) {
-    ssidList = String("");
-    _scanCount = WiFi.scanNetworks(false, true);
-  }
-  else
-    ssidList = String(F("<p><b>No saved credentials.</b></p>"));
-
-  for (uint8_t i = 0; i < creEntries; i++) {
-    credit.load(i, &entry);
-    AC_DBG("A credential #%d loaded\n", (int)i);
-    ssidList += String(F("<input id=\"sb\" type=\"submit\" name=\"" AUTOCONNECT_PARAMID_CRED "\" value=\"")) + String(reinterpret_cast<char*>(entry.ssid)) + String(F("\"><label class=\"slist\">"));
-    rssiSym = String(F("N/A</label>"));
-    for (int8_t sc = 0; sc < (int8_t)_scanCount; sc++) {
-      if (!memcmp(entry.bssid, WiFi.BSSID(sc), sizeof(station_config::bssid))) {
-        _connectCh = WiFi.channel(sc);
-        rssiSym = String(AutoConnect::_toWiFiQuality(WiFi.RSSI(sc))) + String(F("&#037;&ensp;Ch.")) + String(_connectCh) + String(F("</label>"));
-        if (WiFi.encryptionType(sc) != ENC_TYPE_NONE)
-          rssiSym += String(F("<span class=\"img-lock\"></span>"));
-        break;
-      }
-    }
-    ssidList += rssiSym + String(F("<br>"));
-  }
-  return ssidList;
-}
-
-String AutoConnect::_token_UPTIME(PageArgument& args) {
-  AC_UNUSED(args);
-  return String(_apConfig.uptime);
-}
-
-String AutoConnect::_token_BOOTURI(PageArgument& args) {
-  AC_UNUSED(args);
-  if (_apConfig.bootUri == AC_ONBOOTURI_ROOT)
-    return String(AUTOCONNECT_URI);
-  else if (_apConfig.bootUri == AC_ONBOOTURI_HOME)
-    return _apConfig.homeUri.length() > 0 ? _apConfig.homeUri : String("/");
-  else
-    return _emptyString;
-}
-
-String AutoConnect::_token_CURRENT_SSID(PageArgument& args) {
-  AC_UNUSED(args);
-  String  ssid = reinterpret_cast<char*>(_credential.ssid); 
-  return ssid;
-}
-
-/**
- *  This function dynamically build up the response pages that conform to
- *  the requested URI. A PageBuilder instance is stored in _rensponsePage
- *  as the response page.
- *  @param  Requested URI.
- *  @retval true  A response page generated.
- *  @retval false Requested uri is not defined.
- */
-PageElement* AutoConnect::_setupPage(String uri) {
-  PageElement *elm = new PageElement();
-
-  // Restore menu title
-  _menuTitle = _apConfig.title;
-
-  // Build the elements of current requested page.
-  if (uri == String(AUTOCONNECT_URI)) {
-
-    // Setup /auto
-    _freeHeapSize = ESP.getFreeHeap();
-    elm->setMold(_PAGE_STAT);
-    elm->addToken(String(FPSTR("HEAD")), std::bind(&AutoConnect::_token_HEAD, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_BASE")), std::bind(&AutoConnect::_token_CSS_BASE, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_TABLE")), std::bind(&AutoConnect::_token_CSS_TABLE, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_LUXBAR")), std::bind(&AutoConnect::_token_CSS_LUXBAR, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("MENU_PRE")), std::bind(&AutoConnect::_token_MENU_PRE, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("MENU_AUX")), std::bind(&AutoConnect::_token_MENU_AUX, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("MENU_POST")), std::bind(&AutoConnect::_token_MENU_POST, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("ESTAB_SSID")), std::bind(&AutoConnect::_token_ESTAB_SSID, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("WIFI_MODE")), std::bind(&AutoConnect::_token_WIFI_MODE, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("WIFI_STATUS")), std::bind(&AutoConnect::_token_WIFI_STATUS, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("LOCAL_IP")), std::bind(&AutoConnect::_token_LOCAL_IP, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("SOFTAP_IP")), std::bind(&AutoConnect::_token_SOFTAP_IP, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("GATEWAY")), std::bind(&AutoConnect::_token_GATEWAY, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("NETMASK")), std::bind(&AutoConnect::_token_NETMASK, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("AP_MAC")), std::bind(&AutoConnect::_token_AP_MAC, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("STA_MAC")), std::bind(&AutoConnect::_token_STA_MAC, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CHANNEL")), std::bind(&AutoConnect::_token_CHANNEL, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("DBM")), std::bind(&AutoConnect::_token_DBM, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CPU_FREQ")), std::bind(&AutoConnect::_token_CPU_FREQ, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("FLASH_SIZE")), std::bind(&AutoConnect::_token_FLASH_SIZE, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CHIP_ID")), std::bind(&AutoConnect::_token_CHIP_ID, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("FREE_HEAP")), std::bind(&AutoConnect::_token_FREE_HEAP, this, std::placeholders::_1));
-  }
-  else if (uri == String(AUTOCONNECT_URI_CONFIG)) {
-
-    // Setup /auto/config
-    elm->setMold(_PAGE_CONFIGNEW);
-    elm->addToken(String(FPSTR("HEAD")), std::bind(&AutoConnect::_token_HEAD, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_BASE")), std::bind(&AutoConnect::_token_CSS_BASE, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_UL")), std::bind(&AutoConnect::_token_CSS_UL, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_ICON_LOCK")), std::bind(&AutoConnect::_token_CSS_ICON_LOCK, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_INPUT_BUTTON")), std::bind(&AutoConnect::_token_CSS_INPUT_BUTTON, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_INPUT_TEXT")), std::bind(&AutoConnect::_token_CSS_INPUT_TEXT, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_LUXBAR")), std::bind(&AutoConnect::_token_CSS_LUXBAR, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("MENU_PRE")), std::bind(&AutoConnect::_token_MENU_PRE, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("MENU_AUX")), std::bind(&AutoConnect::_token_MENU_AUX, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("MENU_POST")), std::bind(&AutoConnect::_token_MENU_POST, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("LIST_SSID")), std::bind(&AutoConnect::_token_LIST_SSID, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("SSID_COUNT")), std::bind(&AutoConnect::_token_SSID_COUNT, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("HIDDEN_COUNT")), std::bind(&AutoConnect::_token_HIDDEN_COUNT, this, std::placeholders::_1));
-  }
-  else if (uri == String(AUTOCONNECT_URI_CONNECT)) {
-
-    // Setup /auto/connect
-    _menuTitle = FPSTR("Connecting");
-    elm->setMold(_PAGE_CONNECTING);
-    elm->addToken(String(FPSTR("REQ")), std::bind(&AutoConnect::_induceConnect, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("HEAD")), std::bind(&AutoConnect::_token_HEAD, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_BASE")), std::bind(&AutoConnect::_token_CSS_BASE, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_SPINNER")), std::bind(&AutoConnect::_token_CSS_SPINNER, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_LUXBAR")), std::bind(&AutoConnect::_token_CSS_LUXBAR, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("MENU_PRE")), std::bind(&AutoConnect::_token_MENU_PRE, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("MENU_POST")), std::bind(&AutoConnect::_token_MENU_POST, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CUR_SSID")), std::bind(&AutoConnect::_token_CURRENT_SSID, this, std::placeholders::_1));
- }
-  else if (uri == String(AUTOCONNECT_URI_OPEN)) {
-
-    // Setup /auto/open
-    elm->setMold(_PAGE_OPENCREDT);
-    elm->addToken(String(FPSTR("HEAD")), std::bind(&AutoConnect::_token_HEAD, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_BASE")), std::bind(&AutoConnect::_token_CSS_BASE, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_ICON_LOCK")), std::bind(&AutoConnect::_token_CSS_ICON_LOCK, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_INPUT_BUTTON")), std::bind(&AutoConnect::_token_CSS_INPUT_BUTTON, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_LUXBAR")), std::bind(&AutoConnect::_token_CSS_LUXBAR, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("MENU_PRE")), std::bind(&AutoConnect::_token_MENU_PRE, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("MENU_AUX")), std::bind(&AutoConnect::_token_MENU_AUX, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("MENU_POST")), std::bind(&AutoConnect::_token_MENU_POST, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("OPEN_SSID")), std::bind(&AutoConnect::_token_OPEN_SSID, this, std::placeholders::_1));
-  }
-  else if (uri == String(AUTOCONNECT_URI_DISCON)) {
-
-    // Setup /auto/disc
-    _menuTitle = FPSTR("Disconnect");
-    elm->setMold(_PAGE_DISCONN);
-    elm->addToken(String(FPSTR("DISCONNECT")), std::bind(&AutoConnect::_induceDisconnect, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("HEAD")), std::bind(&AutoConnect::_token_HEAD, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_BASE")), std::bind(&AutoConnect::_token_CSS_BASE, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_LUXBAR")), std::bind(&AutoConnect::_token_CSS_LUXBAR, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("MENU_PRE")), std::bind(&AutoConnect::_token_MENU_PRE, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("MENU_POST")), std::bind(&AutoConnect::_token_MENU_POST, this, std::placeholders::_1));
-  }
-  else if (uri == String(AUTOCONNECT_URI_RESET)) {
-
-    // Setup /auto/reset
-    elm->setMold(_PAGE_RESETTING);
-    elm->addToken(String(FPSTR("HEAD")), std::bind(&AutoConnect::_token_HEAD, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("BOOTURI")), std::bind(&AutoConnect::_token_BOOTURI, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("UPTIME")), std::bind(&AutoConnect::_token_UPTIME, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("RESET")), std::bind(&AutoConnect::_induceReset, this, std::placeholders::_1));
-  }
-  else if (uri == String(AUTOCONNECT_URI_RESULT)) {
-
-    // Setup /auto/result
-    elm->setMold("{{RESULT}}");
-    elm->addToken(String(FPSTR("RESULT")), std::bind(&AutoConnect::_invokeResult, this, std::placeholders::_1));
-  }
-  else if (uri == String(AUTOCONNECT_URI_SUCCESS)) {
-
-    // Setup /auto/success
-    elm->setMold(_PAGE_SUCCESS);
-    elm->addToken(String(FPSTR("HEAD")), std::bind(&AutoConnect::_token_HEAD, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_BASE")), std::bind(&AutoConnect::_token_CSS_BASE, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_TABLE")), std::bind(&AutoConnect::_token_CSS_TABLE, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_LUXBAR")), std::bind(&AutoConnect::_token_CSS_LUXBAR, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("MENU_PRE")), std::bind(&AutoConnect::_token_MENU_PRE, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("MENU_AUX")), std::bind(&AutoConnect::_token_MENU_AUX, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("MENU_POST")), std::bind(&AutoConnect::_token_MENU_POST, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("ESTAB_SSID")), std::bind(&AutoConnect::_token_ESTAB_SSID, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("WIFI_MODE")), std::bind(&AutoConnect::_token_WIFI_MODE, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("WIFI_STATUS")), std::bind(&AutoConnect::_token_WIFI_STATUS, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("LOCAL_IP")), std::bind(&AutoConnect::_token_LOCAL_IP, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("GATEWAY")), std::bind(&AutoConnect::_token_GATEWAY, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("NETMASK")), std::bind(&AutoConnect::_token_NETMASK, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CHANNEL")), std::bind(&AutoConnect::_token_CHANNEL, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("DBM")), std::bind(&AutoConnect::_token_DBM, this, std::placeholders::_1));
-  }
-  else if (uri == String(AUTOCONNECT_URI_FAIL)) {
-
-    // Setup /auto/fail
-    _menuTitle = FPSTR("Failed");
-    elm->setMold(_PAGE_FAIL);
-    elm->addToken(String(FPSTR("HEAD")), std::bind(&AutoConnect::_token_HEAD, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_BASE")), std::bind(&AutoConnect::_token_CSS_BASE, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_TABLE")), std::bind(&AutoConnect::_token_CSS_TABLE, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("CSS_LUXBAR")), std::bind(&AutoConnect::_token_CSS_LUXBAR, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("MENU_PRE")), std::bind(&AutoConnect::_token_MENU_PRE, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("MENU_AUX")), std::bind(&AutoConnect::_token_MENU_AUX, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("MENU_POST")), std::bind(&AutoConnect::_token_MENU_POST, this, std::placeholders::_1));
-    elm->addToken(String(FPSTR("STATION_STATUS")), std::bind(&AutoConnect::_token_STATION_STATUS, this, std::placeholders::_1));
-  }
-  else {
-    delete elm;
-    elm = nullptr;
-  }
-
-  // Restore the page transfer mode and the content build buffer
-  // reserved size corresponding to each URI defined in structure
-  // _pageBuildMode.
-  if (elm) {
-    for (uint8_t n = 0; n < sizeof(_pageBuildMode) / sizeof(PageTranserModeST); n++)
-      if (!strcmp(_pageBuildMode[n].uri, uri.c_str())) {
-        _responsePage->reserve(_pageBuildMode[n].rSize);
-        _responsePage->chunked(_pageBuildMode[n].transMode);
-        break;
-      }
-  }
-
-  return elm;
-}




diff --git a/lib/AutoConnect-master/src/AutoConnectPage.h b/lib/AutoConnect-master/src/AutoConnectPage.h
deleted file mode 100644
index 4b312fcd7294f8e46580f50c3f62bc324fa82463..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/src/AutoConnectPage.h
+++ /dev/null
@@ -1,80 +0,0 @@
-/**
- *  AutoConnect portal site web page declaration.
- *  @file   AutoConnectPage.h
- *  @author [email protected]
- *  @version    0.9.1
- *  @date   2018-02-13
- *  @copyright  MIT license.
- */
-
-#ifndef _AUTOCONNECTPAGE_H_
-#define _AUTOCONNECTPAGE_H_
-
-#include "AutoConnectLabels.h"
-
-#define AUTOCONNECT_PARAMID_SSID  "SSID"
-#define AUTOCONNECT_PARAMID_PASS  "Passphrase"
-#define AUTOCONNECT_PARAMID_CRED  "Credential"
-#define AUTOCONNECT_PARAMID_SERVERIP  "ServerIP"
-#define AUTOCONNECT_PARAMID_CONNECTION  "Connection"
-
-// AutoConnect menu hyper-link as image
-#define AUTOCONNECT_GLYPH_COG_24  "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAC2klEQVRIS61VvWsUQRSfmU2p" \
-                                  "on9BUIkQUaKFaCBKgooSb2d3NSSFKbQR/KrEIiIKBiGF2CgRxEpjQNHs7mwOUcghwUQ7g58I" \
-                                  "sbGxEBWsb2f8zR177s3t3S2cA8ftzPu993vzvoaSnMu2vRKlaqgKp74Q/tE8qjQPyHGcrUrR" \
-                                  "jwlWShmDbFMURd/a6TcQwNiYUmpFCPElUebcuQ2vz6aNATMVReHEPwzfSSntDcNwNo2rI+Dc" \
-                                  "vQzhpAbA40VKyV0p1Q9snzBG1qYVcYufXV1sREraDcxpyHdXgkfpRBj6Uwm2RsC5dxxmZ9pd" \
-                                  "OY9cKTISRcHTCmGiUCh4fYyplTwG2mAUbtMTBMHXOgK9QfyXEZr+TkgQ1oUwDA40hEgfIAfj" \
-                                  "+HuQRaBzAs9eKyUZ5Htx+T3ZODKG8DzOJMANhmGomJVMXPll+hx9UUAlzZrJJ4QNCDG3VEfg" \
-                                  "uu7mcpmcB/gkBOtShhQhchAlu5jlLUgc9ENgyP5gf9+y6LTv+58p5zySkgwzLNOIGc8sEoT1" \
-                                  "Lc53NMlbCQQuvMxeCME1NNPVVkmH/i3IzzXDtCSA0qQQwZWOCJDY50jsQRjJmkslEOxvTcDR" \
-                                  "O6zPxOh5xZglKkYLhWM9jMVnkIsTyMT6NBj7IbOCEjm6HxNVVTo2WXqEWJZ1T8rytB6Gxizy" \
-                                  "DkPhWVpBqfiXUtbo/HywYJSpA9kMamNNPZ71R9Hcm+TMHHZNGw3EuraXEUldbfvw25UdOjqO" \
-                                  "t+JhMwJd7+jSTpZaEiIcaCDwPK83jtWnTkwnunFMtxeL/ge9r4XItt1RNNaj/0GAcV2bR3U5" \
-                                  "sG3nEh6M61US+Qrfd9Bs31GGulI2GOS/8dgcQZV1w+ApjIxB7TDwF9GcNzJzoA+rD0/8HvPn" \
-                                  "XQJCt2qFCwbBTfRI7UyXumWVt+HJ9NO4XI++bdsb0YyrqXmlh+AWOLHaLqS5CLQR5EggR3Yl" \
-                                  "cVS9gKeH2hnX8r8Kmi1CAsl36QAAAABJRU5ErkJggg=="
-#define AUTOCONNECT_GLYPH_COG_32  "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAETElEQVRYR61XX0hbVxg/5yYx" \
-                                  "QlEnzM46HYw+7KVuq826Vba1UIRmevNHltHCZEKn7g9lLzJwD8W+dAXZy6i2jaV92BRcMZpc" \
-                                  "g7Q+zLaTPXQb7E9toaCUwVbWOZlBk5jcc/Y7WCW5uffuXNvAJSH3933f73zn933nO5Rs4xMI" \
-                                  "BN4kRLlebMpeSiQSvzh1R50aCHwgEPoGX5FiWz6cSMS7nfpzTACrr8Pq7yOQ2xBsTddz9clk" \
-                                  "ctkJCVMCoVBoP2P8bcbcw1NT4/cKHapq8BSl9KRFkN5EYvKLwnfw9TJjrJtz90VNi/1ktCsh" \
-                                  "IILrOrtGqVIlwJyTWQS84PW6Y+l0ukZRXD8QQmstCCzmcp5X0+kdqaqq5Xdg+yGwrz3CLisK" \
-                                  "aZmcnPyx0LaIgKq2v0JIfmYzuCHIMlZSqYCBXYqBWQdmFZhqE1wJiSICwWBoEKw/crKH28B+" \
-                                  "jm36bNOuiAAE9iIE9vM2nMqacM713ZqmLZoSEH+2tYXmsFfNsh4d4q5i9UcsNfCoxt/F91cO" \
-                                  "HUvBKeXt8Xh8wpaA3+/3ejzePy1EJOoiw7lyjlJ9NJPJ3Flfr9MrKlYaFYV1oHp6IMAyczb8" \
-                                  "wcrKvw2zs7N5WwKqqj7HOV0wUztWcB8qb8Ue3jYLgipqArGkWZnCLo39f9bYqLZE6PdHatzu" \
-                                  "9S4EQe0q9cYAwoHLRX1I4bxdviFkH+y/B8bYKQlj5A/oK+p2K9FYLCayTCgazz68OIHfR/F4" \
-                                  "rZ3zAfT6T2U2W1XD57GQHissFpMDEaGFQYqDhcs4JUT+tAOB10HgpoxfWQK8tnanNxqN5mSc" \
-                                  "tra2Vrtcnn9ksFIEkDLm8zV5+vv7mYzTJ05ABIWC91ip30gqGAy+gUq6IUOWtrWFD6CGP8bx" \
-                                  "G7GuYUGAn9G0eJ+M00AgGIW+u2ywa/A4gufsVhmGw+Gd+Tx7H8w/gEIbTIzXOHft07Txu3Yk" \
-                                  "NmYJMmdWhhDyAkp0CIPLpc1+UDIPIH0Nus4XrRoRHL9l1QvEcU4p04B5xoQkjmi2C3NjyrYT" \
-                                  "RiKRsmw29wAgs/NcqCGD9A6hHY+kUpXzFRVL4Ko0Yovew+pE2ksakAgIHf9VV1dbb6ykkgyo" \
-                                  "augYpWRUZq+dYtAbjiJ7Y7YZAIFvQeCQU+cyeFEZmjZx0JIA+vgLSKOtyGQC2WGM5WwYycID" \
-                                  "2Mvexw1iT4B/iXL+ZBNjHMl8jCkzKMOnjE4goiX8J4ZSz/8QRI0ToXSzSvgbcjxceIMqEaE4" \
-                                  "TotJsO+g+KHycs94NputxrtbFn2CiHkhn8/vXV1dTVVWVgdQkj3Y9xaQQRz2EOP9YYjwV1sR" \
-                                  "ipcbZzrt1HXlfDI58VuhAU5P0Q1Pm2UBAfowcZ0pfIcB53no6jhIjxmDC5zjqxkcPo17w+8w" \
-                                  "LTeQyOJS0jA9feWhEw05JiCc4/5wGfeHzuJA7GvsbYeT4NvKgDDamP1Y0RWLMdo8NTUhRjFH" \
-                                  "n/8AoRLGHM6hJDMAAAAASUVORK5CYII="
-#define AUTOCONNECT_GLYPH_BAR_24  "iVBORw0KGgoAAAANSUhEUgAAABgAAAAYBAMAAAASWSDLAAAALVBMVEUAAAAAAAAAAAAAAAAA" \
-                                  "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////BHg4sAAAADXRSTlMACA8YREhJg5mn" \
-                                  "u8rdcKICYgAAAAFiS0dEDm+9ME8AAABFSURBVBjTY2AgDjBWdEBBuwADy104cGBgQ3ASGJj3" \
-                                  "nIGC0wZEmszANGsVFKxUYGBFmBaAykFRRiRAcQ6KQ1G8gOI54gAAQlFeCYGJCTQAAAAASUVO" \
-                                  "RK5CYII="
-#define AUTOCONNECT_GLYPH_BAR_32  "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAApklEQVRYR2NkGGDAOMD2M4w6" \
-                                  "YDQEkEMgEJggZwCxGI0T5mug+alAvBFkD7IDXtLBcpjfXgEZ4ugOeAETpHEIgIwHeVYC3QH+" \
-                                  "0CgAS9AQgCwHRcFmdAfQ0E7cRo9mw0EVAqPlAKhwEKVTVsBZDsyiQ2k4Wg6gxPKgyoZ0Sn+o" \
-                                  "1iCHQBBQaiYQi9DYJTjbAyAJWluOtz0wWg7QOOqxGz+aDUdDYMBDAACA0x4hs/MPrwAAAABJ" \
-                                  "RU5ErkJggg=="
-#define AUTOCONNECT_GLYPH_BAR_48  "iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABIUlEQVRoQ+1YywrCQBCzF72J" \
-                                  "fqD6AYKKIPgLKiKKd/1DH0dPpgdBilvtTMp2JcJcLMnsJNtu2qyV+C9LfP0tDRDbQTkgB5wK" \
-                                  "aAs5BXTDiw50wLhGDVE9NzuX4A66M2qBeryoiwPscWHC7UtnO4BxGhrg0kDliwpc8Uf/bwfY" \
-                                  "YbIZ3XQuYb7GeciBNi6sUKN3m7j9zWz51jmhlmU3sZk9FlAHWSzlQ/dA7PVU7q8tVFkyMuBT" \
-                                  "FtqixwDVJffy0v2UhY7oMvZ2qhlfmoVuDVS+UhZKfoAU4vTXLLSBZ018oVEWqvnhYqPXSWzT" \
-                                  "jYeSAzwtbUzKQjbdXChlIZd8BHDphy1lIYLCIQploRrFtVPrJLZrx0HKAY6OdhY5YNeOg0ze" \
-                                  "gScMDDAxQXzA7QAAAABJRU5ErkJggg=="
-
-// AutoConnect menu href
-#define AUTOCONNECT_LINK(s)       "<a href=\"" AUTOCONNECT_URI "\"><img src=\"data:image/png;base64," AUTOCONNECT_GLYPH_ ##s "\" border=\"0\" title=\"AutoConnect menu\" alt=\"AutoConnect menu\"/></a>"
-
-#endif  // _AutoConnectPage_H_




diff --git a/lib/AutoConnect-master/src/AutoConnectUpload.h b/lib/AutoConnect-master/src/AutoConnectUpload.h
deleted file mode 100644
index 9004991d2416284a8c166d6f4194e972268f1fa6..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/src/AutoConnectUpload.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * The upload wrapper base class definition and the default up-loader
- * class declarations.
- * @file AutoConnectUpload.h
- * @author [email protected]
- * @version  0.9.8
- * @date 2019-03-19
- * @copyright  MIT license.
- */
-
-#ifndef _AUTOCONNECTUPLOAD_H_
-#define _AUTOCONNECTUPLOAD_H_
-
-#if defined(ARDUINO_ARCH_ESP8266)
-#include <ESP8266WiFi.h>
-#include <ESP8266WebServer.h>
-#elif defined(ARDUINO_ARCH_ESP32)
-#include <WiFi.h>
-#include <WebServer.h>
-#endif
-
-/**
- * Uploader base class. This class is a wrapper for the AutoConnectUpload
- * class, and only the upload member function is implemented.
- */
-class AutoConnectUploadHandler {
- public:
-  explicit AutoConnectUploadHandler() {}
-  virtual ~AutoConnectUploadHandler() {}
-  virtual void upload(const String& requestUri, const HTTPUpload& upload);
-
-protected:
-  virtual bool   _open(const char* filename, const char* mode) = 0;
-  virtual size_t _write(const uint8_t *buf, const size_t size) = 0;
-  virtual void   _close(void) = 0;
-};
-
-#endif // !_AUTOCONNECTUPLOAD_H_




diff --git a/lib/AutoConnect-master/src/AutoConnectUploadImpl.h b/lib/AutoConnect-master/src/AutoConnectUploadImpl.h
deleted file mode 100644
index 99d94d22bd1a1aa965896812e5c08b5a4c716dfc..0000000000000000000000000000000000000000
--- a/lib/AutoConnect-master/src/AutoConnectUploadImpl.h
+++ /dev/null
@@ -1,206 +0,0 @@
-/**
- * The default upload handler implementation.
- * @file AutoConnectUploadImpl.h
- * @author [email protected]
- * @version  0.9.9
- * @date 2019-05-25
- * @copyright  MIT license.
- */
-
-#ifndef _AUTOCONNECTUPLOADIMPL_H_
-#define _AUTOCONNECTUPLOADIMPL_H_
-
-#if defined(ARDUINO_ARCH_ESP8266)
-#include <core_version.h>
-#include <ESP8266WiFi.h>
-#elif defined(ARDUINO_ARCH_ESP32)
-#include <WiFi.h>
-#include <SPIFFS.h>
-#endif
-#include <SPI.h>
-#include <SD.h>
-#define FS_NO_GLOBALS
-#include <FS.h>
-
-// Types branching to be code commonly for the file system classes with
-// ESP8266 and ESP32.
-#if defined(ARDUINO_ARCH_ESP8266)
-typedef fs::FS        SPIFFST;    // SPIFFS:File system class
-typedef fs::File      SPIFileT;   // SPIFFS:File class
-typedef SDClass       SDClassT;   // SD:File system class
-typedef File          SDFileT;    // SD:File class
-#elif defined(ARDUINO_ARCH_ESP32)
-typedef fs::SPIFFSFS  SPIFFST;
-typedef fs::File      SPIFileT;
-typedef fs::SDFS      SDClassT;
-typedef SDFile        SDFileT;
-#endif
-
-#include "AutoConnectDefs.h"
-#include "AutoConnectUpload.h"
-
-/**
- * Handles the default upload process depending on the upload status.
- * This handler function supports the status of UPLOAD_FILE_START,
- * UPLOAD_FILE_WRITE, UPLOAD_FILE_END and calls open, write and
- * close processing respectively.
- * @param  requestUri A reference to the upload request uri.
- * @param  upload     A reference of HTTPUpload entity.
- */
-void AutoConnectUploadHandler::upload(const String& requestUri, const HTTPUpload& upload) {
-  AC_UNUSED(requestUri);
-  switch (upload.status) {
-  case UPLOAD_FILE_START: {
-    String  absFilename = "/" + upload.filename;
-    (void)_open(absFilename.c_str(), "w");
-    break;
-  }
-  case UPLOAD_FILE_WRITE:
-    (void)_write(upload.buf, (const size_t)upload.currentSize);
-    break;
-  case UPLOAD_FILE_ABORTED:
-  case UPLOAD_FILE_END:
-    _close();
-    break;
-  }
-}
-
-// Default handler for uploading to the standard SPIFFS class embedded in the core.
-class AutoConnectUploadFS : public AutoConnectUploadHandler {
- public:
-  explicit AutoConnectUploadFS(SPIFFST& media) : _media(&media) {}
-  ~AutoConnectUploadFS() { _close(); }
-
- protected:
-  bool  _open(const char* filename, const char* mode) override {
-#if defined(ARDUINO_ARCH_ESP8266)
-    if (_media->begin()) {
-#elif defined(ARDUINO_ARCH_ESP32)
-    if (_media->begin(true)) {
-#endif
-      _file = _media->open(filename, mode);
-      return _file != false;      
-    }
-    AC_DBG("SPIFFS mount failed\n");
-    return false;
-  }
-
-  size_t  _write(const uint8_t* buf, const size_t size) override {
-    if (_file)
-      return _file.write(buf, size);
-    else
-      return -1;
-  }
-
-  void  _close(void) override {
-    if (_file)
-      _file.close();
-    _media->end();
-  }
-
- private:
-  SPIFFST*  _media;
-  SPIFileT  _file; 
-};
-
-// Fix to be compatibility with backward for ESP8266 core 2.5.1 or later
-// SD pin assignment for AutoConnectFile
-#ifndef AUTOCONNECT_SD_CS
-#if defined(ARDUINO_ARCH_ESP8266)
-#ifndef SD_CHIP_SELECT_PIN
-#define SD_CHIP_SELECT_PIN      SS
-#endif
-#define AUTOCONNECT_SD_CS       SD_CHIP_SELECT_PIN
-#elif defined(ARDUINO_ARCH_ESP32)
-#define AUTOCONNECT_SD_CS       SS
-#endif
-#endif // !AUTOCONNECT_SD_CS
-// Derivation of SCK frequency and ensuring SD.begin compatibility
-#ifdef ARDUINO_ARCH_ESP8266
-#if defined(SD_SCK_HZ)
-#define AC_SD_SPEED(s)  SD_SCK_HZ(s)
-#else
-#define AC_SD_SPEED(s)  s
-#endif
-#endif
-
-// Default handler for uploading to the standard SD class embedded in the core.
-class AutoConnectUploadSD : public AutoConnectUploadHandler {
- public:
-  explicit AutoConnectUploadSD(SDClassT& media, const uint8_t cs = AUTOCONNECT_SD_CS, const uint32_t speed = AUTOCONNECT_SD_SPEED) : _media(&media), _cs(cs), _speed(speed) {}
-  ~AutoConnectUploadSD() { _close(); }
-
- protected:
-  bool  _open(const char* filename, const char* mode) override {
-    const char* sdVerify;
-#if defined(ARDUINO_ARCH_ESP8266)
-    if (_media->begin(_cs, AC_SD_SPEED(_speed))) {
-      uint8_t oflag = *mode == 'w' ? FILE_WRITE : FILE_READ;
-      uint8_t sdType = _media->type();      
-      switch (sdType) {
-      case 1: // SD_CARD_TYPE_SD1
-        sdVerify = (const char*)"MMC";
-        break;
-      case 2: // SD_CARD_TYPE_SD2
-        sdVerify = (const char*)"SDSC";
-        break;
-      case 3: // SD_CARD_TYPE_SDHC
-        sdVerify = (const char*)"SDHC";
-        break;
-      default:
-        sdVerify = (const char*)"UNKNOWN";
-        break;
-      }
-#elif defined(ARDUINO_ARCH_ESP32)
-    if (_media->begin(_cs, SPI, _speed)) {
-      const char* oflag = mode;
-      uint8_t sdType = _media->cardType();
-      switch (sdType) {
-      case CARD_NONE:
-        sdVerify = (const char*)"No card";
-        break;
-      case CARD_MMC:
-        sdVerify = (const char*)"MMC";
-        break;
-      case CARD_SD:
-        sdVerify = (const char*)"SDSC";
-        break;
-      case CARD_SDHC:
-        sdVerify = (const char*)"SDHC";
-        break;
-      default:
-        sdVerify = (const char*)"UNKNOWN";
-        break;
-      }
-#endif
-      AC_DBG("%s mounted\n", sdVerify);
-      _file = _media->open(filename, oflag);
-      return _file != false;
-    }
-    AC_DBG("SD mount failed\n");
-    return false;
-  }
-
-  size_t  _write(const uint8_t* buf, const size_t size) override {
-    if (_file)
-      return _file.write(buf, size);
-    else
-      return -1;
-  }
-
-  void  _close(void) override {
-    if (_file)
-      _file.close();
-#if defined(ARDUINO_ARCH_ESP32) || (defined(ARDUINO_ARCH_ESP8266) && (!defined(ARDUINO_ESP8266_RELEASE_2_4_0) && !defined(ARDUINO_ESP8266_RELEASE_2_4_1) && !defined(ARDUINO_ESP8266_RELEASE_2_4_2)))
-    _media->end();
-#endif
-  }
-
- private:
-  SDClassT* _media;
-  SDFileT   _file;
-  uint8_t   _cs;
-  uint32_t  _speed;
-};
-
-#endif // !_AUTOCONNECTUPLOADIMPL_H_




diff --git a/src/AWTRIXController.cpp b/src/AWTRIXController.cpp
index 38f3952415d69f9ea1c48653a67183d22fa8634b..f83874de6f7578ec029e55719fc462dfe8f31350 100644
--- a/src/AWTRIXController.cpp
+++ b/src/AWTRIXController.cpp
@@ -20,20 +20,19 @@ #include 
 #include <DoubleResetDetect.h>
 #include <Wire.h>   
 #include <ArduinoOTA.h>
-#include <ArduinoOTA.h>
-#include <ArduinoOTA.h>
 #include <ESP8266WiFi.h>
 
 #include <ArduinoOTA.h>
-#include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
+#include <WiFiClient.h>
+BME280<> BMESensor;
 
-#include <ArduinoOTA.h>
+#include <WiFiClient.h>
 #include <WiFiClient.h>
-BME280<> BMESensor;
+bool audioState = false;		// 0 = false ; 1 = true
+#define APDS9960_SCL    D1
 #include <ArduinoOTA.h>
-#include <ArduinoJson.h>
-
+int ldrState = false;			// 0 = None
-bool tempState = false;
+bool usbWifiState = false;		// true = usb...
 
 String version = "0.9b";
 char awtrix_server[16];
@@ -61,9 +59,6 @@ int cfgStart = 0;
 
 //flag for saving data
 bool shouldSaveConfig = false;
-char mqtt_server[40];
-char mqtt_port[6] = "8080";
-char blynk_token[33] = "YOUR_BLYNK_TOKEN";
 
 
 LightDependentResistor photocell(LDR_PIN, LDR_RESISTOR, LDR_PHOTOCELL);
@@ -111,6 +106,43 @@ 	}
 	return  (0);
 }
 
+bool saveConfig(){
+	//Check if the connection value is allowed -> if not -> usb!
+	if(strcmp(connection,"usb")||strcmp(connection,"USB")){
+		usbWifiState = true;
+		//Serial.println("saved usb");
+	} else if(strcmp(connection,"wifi")||strcmp(connection,"WIFI")){
+		usbWifiState = false;
+		//Serial.println("saved wifi");
+	} else {
+		usbWifiState = false;	//default
+		strcpy(connection,"usb");
+		//Serial.println("saved usb (default)");
+	}
+
+	DynamicJsonBuffer jsonBuffer;
+	JsonObject& json = jsonBuffer.createObject();
+	json["awtrix_server"] = awtrix_server;
+	//json["connection"] = connection;
+
+	json["temp"] = tempState;
+	json["usbWifi"] = usbWifiState;
+	json["ldr"] = ldrState;
+	json["gesture"] = gestureState;
+	json["audio"] = audioState;
+	
+	File configFile = SPIFFS.open("/config.json", "w");
+	if (!configFile) {
+		Serial.println("failed to open config file for writing");
+		return false;
+	}
+	json.printTo(Serial);
+	json.printTo(configFile);
+	configFile.close();
+	//end save
+	return true;
+}
+
 void debuggingWithMatrix(String text){
 	matrix->setCursor(7, 6);
 	matrix->clear();
@@ -201,6 +233,19 @@ 					matrix->setCursor(7, 6);
 					matrix->print("Temp");
 					break;
 #include <FS.h>
+char connection[5];
+					matrix->setCursor(3, 6);
+					matrix->print("Audio");
+					break;
+				case 4:
+					matrix->setCursor(3, 6);
+					matrix->print("Gest.");
+					break;
+				case 5:
+					matrix->setCursor(7, 6);
+					matrix->print("LDR");
+					break;
+#include <FS.h>
 #include "awtrix-conf.h"
 
 			switch(wifiCheckPoints){
@@ -462,7 +507,7 @@ 			break;
 		}
 		case 11:{
 			//Command 11: GetLux
-#include <ArduinoOTA.h>
+#include <WiFiClient.h>
 void debuggingWithMatrix(String text){
 				StaticJsonBuffer<200> jsonBuffer;
 				client.publish("matrixLux", String(photocell.getCurrentLux()).c_str());
@@ -492,7 +537,7 @@ 			root["Hum"] = BMESensor.humidity;
 			root["hPa"] =BMESensor.pressure;
 			String JS;
 			root.printTo(JS);
-			if (!usbWifi){
+			if (!usbWifiState){
 				client.publish("matrixInfo", JS.c_str());
 			} else {
 				Serial.println(String(JS));
@@ -503,6 +548,45 @@ 		case 13:{
   			matrix->setBrightness(payload[1]);
 			break;
   		}
+
+		case 14:{
+			matrix->clear();
+			matrix->setCursor(5, 6);
+			matrix->print("Update");
+			matrix->show();
+
+			//set usbWifiState
+			if(payload[1]==0){
+				usbWifiState = false;
+			} else {
+				usbWifiState = true;
+			}
+
+			//set sensor type for temperatue...
+			tempState = payload[2];
+
+			//set audioState
+			if(payload[3]==0){
+				audioState = false;
+			} else {
+				audioState = true;
+			}
+
+			//set gesture
+			if(payload[4]==0){
+				gestureState = false;
+			} else {
+				gestureState = true;
+			}
+
+			//set LDR resistor
+			ldrState = int(payload[5]<<8)+int(payload[6]);
+			if(saveConfig()){
+				ESP.reset();
+			} else {
+				Serial.println("[UpdateMatrix-14] Fail to Save the File...");
+			}
+  		}
 	}
 }
 
@@ -511,7 +595,7 @@ 	updateMatrix(payload,length);
 }
 
 void reconnect(){
-WiFiClient espClient;
+bool updating = false;
 #include <FS.h>
 		while (!client.connected()){
 			String clientId = "AWTRIXController-";
@@ -592,35 +676,37 @@     matrix->print("FLASHING");
     matrix->show();
 }
 
-DoubleResetDetect drd(DRD_TIMEOUT, DRD_ADDRESS);
 #include <PubSubClient.h>
+#include <LightDependentResistor.h>
+bool updating = false;
 #include <ESP8266WiFi.h>
-#include <ArduinoJson.h>
+	if((myString[0]==116)&&(myString[1]==114)&&(myString[2]==117)&&(myString[2]==101)){
+		return true;
+	} else {
+#include <WiFiClient.h>
 #include <ArduinoJson.h>
+#include <Adafruit_GFX.h>
-#include <ESP8266WiFi.h>
 	}
 }
 
 DoubleResetDetect drd(DRD_TIMEOUT, DRD_ADDRESS);
-#include <FastLED.h>
+#include <PubSubClient.h>
 #include <ESP8266WiFi.h>
-	byte last = c1;   // get last char
+		return ( ascii );
 #include <ESP8266WiFi.h>
+#include <ArduinoJson.h>
 #include <Adafruit_GFX.h>
-#include <FS.h>
-#include <ESP8266WiFi.h>
 #include <Adafruit_GFX.h>
+#include <ArduinoJson.h>
+#include <ArduinoOTA.h>
 #include <ArduinoOTA.h>
 #include <ESP8266WiFi.h>
-	{ case 0xC2: return  (ascii) - 34;  break;
+	// get previous input
 bool firstStart = true;
-#include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
 bool firstStart = true;
-#include <WiFiClient.h>
+#include <FS.h>
 bool firstStart = true;
-#include <PubSubClient.h>
 #include <ESP8266WiFi.h>
-}
 }
 
 void setup(){
@@ -628,10 +713,10 @@ 	WiFiManager wifiManager;
 	if (drd.detect()) {
 		Serial.println("** Double reset boot **");
 		wifiManager.resetSettings();
-		//SPIFFS.format();
 	}
 	Serial.setRxBufferSize(1024);
 	Serial.begin(115200);
+
 	if (SPIFFS.begin()) {
 		//if file not exists
 		if (!(SPIFFS.exists("/config.json"))) {
@@ -650,56 +735,121 @@         	JsonObject & json = jsonBuffer.parseObject(buf.get());
         	json.printTo(Serial);
         	if (json.success()) {
           		Serial.println("\nparsed json");
-#include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
+#include <PubSubClient.h>
 #include <FS.h>
+#include <PubSubClient.h>
+#include <ArduinoOTA.h>
 #include <ArduinoOTA.h>
 int TIME_FOR_SEARCHING_WIFI = 10000;
+#include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
+					awtrix_server[i] = temporaer[i];
+#include <FS.h>
 #include <ESP8266WiFi.h>
+#include <PubSubClient.h>
 
-#include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
+#include <PubSubClient.h>
 #include <FS.h>
-#include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
+#include <Adafruit_GFX.h>
-#include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
+#include <PubSubClient.h>
 #include <FS.h>
+#include <FastLED.h>
 #include <WiFiClient.h>
+DoubleResetDetect drd(DRD_TIMEOUT, DRD_ADDRESS);
+					usbWifiState = false;
 				}
-#include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
+
+				if(checkStringForBool(json["audio"])){
+					audioState = true;
+				} else {
+					audioState = false;
 #include <FS.h>
+#include <ESP8266WiFi.h>
 #include <PubSubClient.h>
+
+DFPlayerMini_Fast myMP3;
 #include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
-#include <FS.h>
+					gestureState = true;
+#define APDS9960_INT    D6
 #include <ArduinoJson.h>
+					gestureState = false;
 				}
+				String ldr = json["ldr"];
+				ldrState = temporaer.toInt();
+
+				String temp = json["temp"];
+				tempState = temporaer.toInt();
         	}
         	configFile.close();
       	}
 	} else {
 		Serial.println("mounting not possible");
 	}
+
+
+	Serial.printf("\nLoading from SPIFFS:\nAwtrix Server: %s \n: ",awtrix_server);
+	if(usbWifiState){
+		Serial.println("Connection: true");
 //USB Connection:
+#include <FS.h>
+#include <PubSubClient.h>
 #include <ESP8266WiFi.h>
+#include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
+	}
+	if(audioState){
+		Serial.println("Audio: true");
+#include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
 #include <ArduinoOTA.h>
+#include <FS.h>
+		Serial.println("Audio: false");
+	}
+	if(gestureState){
+		Serial.println("Gesture: true");
+#include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
 #include <ArduinoOTA.h>
+#include <FS.h>
+		Serial.println("Gesture: false");
+	}
+	switch(tempState){
+#include <PubSubClient.h>
 //USB Connection:
+#include <PubSubClient.h>
 #include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
+#include <ESP8266WiFi.h>
+		break;
+#include <PubSubClient.h>
 #include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
+#include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
+			Serial.println("Temp: BME280");
+		break;
+		case 2: 
+			Serial.println("Temp: htu21d");
+		break;
+	}
+	Serial.printf("LDR: %d\n",ldrState);
+#include <ArduinoOTA.h>
 #include <ArduinoOTA.h>
-#include <WiFiClient.h>
 #include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
+WiFiClient espClient;
+#include <ArduinoOTA.h>
 #include <ArduinoOTA.h>
 #include <PubSubClient.h>
+char mqtt_server[40];
 //USB Connection:
-#include <ArduinoJson.h>
+#include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
 //USB Connection:
+#include <WiFiClient.h>
+#define APDS9960_SCL    D1
 #include <Adafruit_GFX.h>
 //USB Connection:
-#include <FastLED.h>
+#include <ArduinoJson.h>
+	} else if((connection[0]==119)&&(connection[1]==105)&&(connection[2]==102)&&(connection[3]==105)){
+		usbWifiState = false;
 		Serial.println("WiFi loaded...");
 	} else {
-		usbWifi = false;
+		usbWifiState = false;
 		Serial.println("Wrong loaded...");
 	}
-
+	*/
 	
 	//WiFi.mode(WIFI_STA);
 	//WiFi.begin("", "");
@@ -712,7 +861,7 @@ 	WiFiManagerParameter custom_server_ip("server", "server_ip", awtrix_server, 15);
 	WiFiManagerParameter custom_connection("connection", "usb or wifi", connection, 4);
 	wifiManager.setSaveConfigCallback(saveConfigCallback);
 	wifiManager.addParameter(&custom_server_ip);
-	wifiManager.addParameter(&custom_connection);
+	//wifiManager.addParameter(&custom_connection);
 
 	matrix->begin();
 	matrix->setTextWrap(false);
@@ -720,7 +869,7 @@ 	matrix->setBrightness(80);
 	matrix->setFont(&TomThumb);
 
 #include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
-bool shouldSaveConfig = false;
+WiFiClient espClient;
 	FastLED.addLeds<NEOPIXEL, D2>(leds, 256).setCorrection(TypicalLEDStrip);
 
 	int wifiTimeout = millis();
@@ -740,122 +889,117 @@ 		}
 	}
 		
 		strcpy(awtrix_server, custom_server_ip.getValue());
-#include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
 #include <PubSubClient.h>
+LightDependentResistor photocell(LDR_PIN, LDR_RESISTOR, LDR_PHOTOCELL);
 
 		//check the connection and save the changeState if changed (need for restart)
 		if(strcmp(connection,"usb")||strcmp(connection,"USB")){
-#include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
 #include <PubSubClient.h>
+#include <WiFiClient.h>
 #include <ESP8266WiFi.h>
 				changeConnectiom = true;
 			}
 		} else if(strcmp(connection,"wifi")||strcmp(connection,"WIFI")){
-#include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
 #include <PubSubClient.h>
-#include <PubSubClient.h>
+#define APDS9960_SDA    D3
 				changeConnectiom = true;
 			}
+#include <FS.h>
 #include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
-  FastLED_NeoMatrix *matrix = new FastLED_NeoMatrix(leds, 32, 8, NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_ROWS + NEO_MATRIX_ZIGZAG);
 		
 		if(shouldSaveConfig){
 			Serial.println("saving config");
-
+			saveConfig();
+			ESP.reset();
+#include <FS.h>
 #include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
-#include <ArduinoJson.h>
-			if(strcmp(connection,"usb")||strcmp(connection,"USB")){
-//flag for saving data
+#include <ArduinoOTA.h>
 #include <ArduinoOTA.h>
 #include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
-#include <ArduinoJson.h>
+#include <FastLED.h>
 #include <ESP8266WiFi.h>
 
 #include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
-#include <ArduinoJson.h>
+#include <FastLED.h>
 #include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
 #include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
-#include <ArduinoJson.h>
+#include <FastLED.h>
 #include <WiFiClient.h>
-				Serial.println("saved wifi");
 #include <ArduinoOTA.h>
-	matrix->print(text);
+#include <ArduinoOTA.h>
-//flag for saving data
+CRGB leds[256];
 #include <ArduinoJson.h>
-//flag for saving data
+CRGB leds[256];
 #include <Adafruit_GFX.h>
-//flag for saving data
+CRGB leds[256];
 #include <FastLED.h>
-#include <FS.h>
+	gestureState = true;
+#ifdef MATRIX_MODEV2
 #include <FS.h>
-#include <ArduinoJson.h>
 
-			DynamicJsonBuffer jsonBuffer;
-			JsonObject& json = jsonBuffer.createObject();
-bool shouldSaveConfig = false;
+#ifdef MATRIX_MODEV2
 #include <ArduinoOTA.h>
-bool shouldSaveConfig = false;
+#ifdef MATRIX_MODEV2
 #include <ESP8266WiFi.h>
-
-bool shouldSaveConfig = false;
+#ifdef MATRIX_MODEV2
 #include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
-bool shouldSaveConfig = false;
+#ifdef MATRIX_MODEV2
 #include <WiFiClient.h>
-bool shouldSaveConfig = false;
 #include <PubSubClient.h>
-			}
+#ifdef MATRIX_MODEV2
-bool shouldSaveConfig = false;
+#ifdef MATRIX_MODEV2
 #include <ArduinoJson.h>
-bool shouldSaveConfig = false;
+#ifdef MATRIX_MODEV2
 #include <Adafruit_GFX.h>
-bool shouldSaveConfig = false;
+#ifdef MATRIX_MODEV2
 #include <FastLED.h>
-char mqtt_server[40];
+  FastLED_NeoMatrix *matrix = new FastLED_NeoMatrix(leds, 32, 8, NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_ROWS + NEO_MATRIX_ZIGZAG);
+#include <FS.h>
 #include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
-#include <FastLED.h>
+  FastLED_NeoMatrix *matrix = new FastLED_NeoMatrix(leds, 32, 8, NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_ROWS + NEO_MATRIX_ZIGZAG);
 #include <FS.h>
-char mqtt_server[40];
+  FastLED_NeoMatrix *matrix = new FastLED_NeoMatrix(leds, 32, 8, NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_ROWS + NEO_MATRIX_ZIGZAG);
 #include <ArduinoOTA.h>
-#include <Fonts/TomThumb.h>
 #include <ArduinoJson.h>
+#include <Adafruit_GFX.h>
-		}
+
-char mqtt_server[40];
+#include <PubSubClient.h>
 #include <ESP8266WiFi.h>
+#include <WiFiClient.h>
-
+		mySoftwareSerial.begin(9600);
-char mqtt_server[40];
+  FastLED_NeoMatrix *matrix = new FastLED_NeoMatrix(leds, 32, 8, NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_ROWS + NEO_MATRIX_ZIGZAG);
 #include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
-char mqtt_server[40];
+  FastLED_NeoMatrix *matrix = new FastLED_NeoMatrix(leds, 32, 8, NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_ROWS + NEO_MATRIX_ZIGZAG);
 #include <WiFiClient.h>
-
-
+	}
-char mqtt_server[40];
 #include <PubSubClient.h>
+bool firstStart = true;
-
+		pinMode(APDS9960_INT, INPUT);
-char mqtt_server[40];
+  FastLED_NeoMatrix *matrix = new FastLED_NeoMatrix(leds, 32, 8, NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_ROWS + NEO_MATRIX_ZIGZAG);
 #include <ArduinoJson.h>
-
-char mqtt_server[40];
+  FastLED_NeoMatrix *matrix = new FastLED_NeoMatrix(leds, 32, 8, NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_ROWS + NEO_MATRIX_ZIGZAG);
 #include <Adafruit_GFX.h>
-char mqtt_server[40];
+  FastLED_NeoMatrix *matrix = new FastLED_NeoMatrix(leds, 32, 8, NEO_MATRIX_TOP + NEO_MATRIX_LEFT + NEO_MATRIX_ROWS + NEO_MATRIX_ZIGZAG);
 #include <FastLED.h>
-char mqtt_port[6] = "8080";
+#else
-		hardwareAnimatedCheck(2,28,2);
-//USB Connection:
+#else
 #include <FS.h>
-char mqtt_port[6] = "8080";
+#else
 #include <ArduinoOTA.h>
-char mqtt_port[6] = "8080";
+#else
 #include <ESP8266WiFi.h>
+		hardwareAnimatedCheck(5,29,2);
 	}
+byte myBytes[1000];
 #include <ArduinoOTA.h>
+byte myBytes[1000];
 #include <ArduinoOTA.h>
-char mqtt_port[6] = "8080";
 #include <ESP8266WebServer.h>     // Replace with WebServer.h for ESP32
+WiFiClient espClient;
-	attachInterrupt(APDS9960_INT, interruptRoutine, FALLING);
+
-char mqtt_port[6] = "8080";
 #include <PubSubClient.h>
+#include <Adafruit_GFX.h>
 #include <WiFiClient.h>
-#include <ArduinoJson.h>
   	ArduinoOTA.onStart([&]() {
 		updating = true;
 		matrix->clear();
@@ -889,8 +1034,9 @@ 		}
 	}
 
  	if (!updating) {
-LightDependentResistor photocell(LDR_PIN, LDR_RESISTOR, LDR_PHOTOCELL);
+#include <PubSubClient.h>
 #include <Adafruit_GFX.h>
+#include <PubSubClient.h>
 			while(Serial.available () > 0){
 				myBytes[bufferpointer] = Serial.read();
 				if ((myBytes[bufferpointer]==255)&&(myBytes[bufferpointer-1]==255)&&(myBytes[bufferpointer-2]==255)){
@@ -922,4 +1068,5 @@     isr_flag = 0;
     attachInterrupt(APDS9960_INT, interruptRoutine, FALLING);
   }
 }
+#include <PubSubClient.h>
 }




diff --git a/src/awtrix-conf.h b/src/awtrix-conf.h
index fa6449a0f3bc067a6ccbfd81e5f61791d836bf06..1e9587a6904a81d83432eabaa6bb202ba019a451 100644
--- a/src/awtrix-conf.h
+++ b/src/awtrix-conf.h
@@ -1,6 +1,6 @@
 ///////////////////////// AWTRIX CONFIG /////////////////////////
 
-bool usbWifi = false; // true = usb...
+
 bool changeConnectiom = false;
 
 //#define MATRIX_MODEV2